We ignore here the issue of thosefolk who feel that the ideal programmer should write code that runs correctly when first submitted to a computer. There may well be self-consistent ethical systems in which handwork earns more karma than mechanical processing, but as a practical engineering matter, it is (for example) incontestably more efficient to use the compiler's syntax checker to locate certain classes of errors than to simulate the compiler's syntax checker by hand.
Don't waste time doing by hand what the computer can do faster and more accurately for you.
This sounds simple, even trivial, but is far from being so.
Finding better and more general ways to apply the power of computing machinery to the task of software production is one of the most important and difficult tasks facing the computing community, and one on which we have made amazingly little progress.
Computing hardware has improved a millionfold over the last decades, and the tools and techniques used by the engineers building it has changed beyond recognition in that time; In the last twenty years, changes in mainstream software construction techniques have been so slight as to virtually defy detection: We still edit lines of imperative code in string editors, compile, and crash.
Know what tools are available, and use them when appropriate.
Try to reduce your coding to normal forms: Solve the same problem in the same way when no good reason exists to do otherwise.
At the least, the increased uniformity will often aid you in mechanically implementing mass transformations on your code via string editor macros or the like.
At best, you may come to understand some facet of what you are doing so well that you can write a code generator to automate the process, freeing you to concentrate on more interesting coding issues.
Go to the first, previous, next, last section, table of contents.