Practical Object-Oriented Design
Intro and Chapter 1
Being a programmer
I've found in the first pages of this book the reason why I love to be a programmer.
Those of us whose work is to write software are incredibly lucky. Building software is a guiltless pleasure because we get to use our creative energy to get things done. We have arranged our lives to have it both ways; we can enjoy the pure act of writing code in sure knowledge that the code we write has use.
From 1.1 "In Praise of Design":
If painful programming were the most cost-effective way to produce working software, programmers would be morally obligated to suffer stoically or to find other jobs.
Fortunately, you do not have to choose between pleasure and productivity. The programming techniques that make code a joy to write overlap with those that most efficiently produce software.
Easy to change
Applications that are easy to change are a pleasure to write and a joy to extend. They are flexible and adaptable. Applications that resist change are just the opposite; every change is expensive and each makes the next cost more.
Designs that anticipate specific future requirements almost always and badly. Practical design does not anticipate what will happen to your application; it merely accepts that something will and that, in the present, you cannot know what. It doesn't guess the future; it preserves your options for accommodating the future. It doesn't choose; it leaves you room to move.
The purpose of design is to allow you design later and it's primary goal is to reduce the cost of change.
Importance of design
successful and undesigned applications carry the seeds of their own destruction.