http://wilshipley.com/blog/2007/05/pimp-my-code-part-14-be-inflexible.html
……
The fundamental nature of coding is that our task, as programmers, is to recognize that every decision we make is a trade-off. To be a master programmer is to understand the nature of these trade-offs, and be conscious of them in everything we write.
You’ve probably seen some variant of this, but I’ll show you my version. In coding, you have many dimensions in which you can rate code:
– Brevity of code
– Featurefulness
– Speed of execution
– Time spent coding
– Robustness
– Flexibility
Now, remember, these dimensions are all in opposition to one another. You can spend a three days writing a routine which is really beautiful AND fast, so you’ve gotten two of your dimensions up, but you’ve spent THREE DAYS, so the “time spent coding” dimension is WAY down.
So, when is this worth it? How do we make these decisions?
The answer turns out to be very sane, very simple, and also the one nobody, ever, listens to:
“START WITH BREVITY. Increase the other dimensions AS REQUIRED BY TESTING.”