O'Reilly logo
  • Paul Michelman thinks this is interesting:

Chapter 8. Avoid Over- and Under-Design

Developers tend to take one of two approaches to programming. Many think they need to plan ahead to ensure that their system can handle new requirements that come their way. Unfortunately, this planning ahead often involves adding code to handle situations that never come up. The end result is code that is more complex than it needs to be and therefore harder to change—the exact situation they were trying to avoid. The alternative, of course, seems equally bad. That is, they just jump in, code with no forethought, and hope for the best. But this hacking also typically results in code that is hard to modify. What are we supposed to do that doe...

From

Cover of Essential Skills for the Agile Developer: A Guide to Better Programming and Design

Note

As a developer, how can you create high-quality code that meets the needs of the user without adding extra complexity? You should strive for a middle ground, as described by Ward Cunningham: “Take as much time as you need to make your code quality as high as it can be, but don’t spend a second adding functionality that you don’t need now!” As you complete work on your projects, keep the concepts and techniques addressed in this section in mind.