quarta-feira, 17 de abril de 2013

Requirements for being a good programmer

  1. Understand, don't memorize.
    A good programmer doesn't try to memorize everything. He, or she, actually learns the logic behind the paradigms and frameworks instead of memorizing them and becomes proficient in consulting references whenever necessary. Memorizing will prevent you from correctly understand the tool and will void the next item.
  2. Generalize.
    Understand everything as if there was a Grand Unifying Theory. In the end, everything is the same with slightly, or highly, different presentations. The basic principles are the same, so learn to expand them and to create generalizations. Training your brain to do so, will greatly enhance your learning ability and your versatility.
  3. Never assume strict usage.
    Never assume that something is universaly and strictly as presented. Everything you encounter may be used in different ways than you might expect or realize at first sight. The same way Dr. House prescribed Viagra for an octagenarian LADY to treat her blood flow problems, many tools can be used to fix things they were not planned to.
  4. Do not assume the infinity of computing resources.
    Higher level programmers and teachers of those frameworks usually have the distressing policy of assuming that the computing resources are infinite and that their applications are the only ones running on a given system. Always assume a worst case scenario for your performance and plan your optimization in advance, even if you don't implement it from the start. Concede to that assumption ONLY when you need to debug something and NEVER on a production system or on a released product.
  5. Understand what's underneath.
    Understanding how the platform and frameworks you are using do what you ask them to do, will help you understand how to better make use of them, providing you with enhanced performance and stability.
  6. Computers don't make mistakes.
    A computer never makes a mistake. A computer is a matematically perfect machine that follows instructions precisely and to the letter. Mistakes outputted by a computer are nothing more than the result of an incorrect instruction given to it, coming from a) you, b) the hardware developers, c) the developers of the platform and frameworks you are using or d) the user of the application you are developing. If you want your computer to give you the correct results, give it the correct instructions.