Not every end is the goal. The end of a melody is not its goal, and yet if a melody has not reached its end, it has not reached its goal.
— Friedrich Nietzsche
Far out in the uncharted backwaters of the unfashionable end of the western spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly 92 million miles is an utterly insignificant little blue-green planet whose ape-descended life-forms are so amazingly primitive that they still think computer programs are a pretty neat idea.
This planet has—or rather, had—a problem, which was this: most of the programmers on it wrote poor code pretty much all of the time, even when they were being paid to do a good job. Many solutions were suggested for this problem, but most of these were largely concerned with the education of programmers, which is odd because on the whole the programmers didn’t want to be educated.
And so the problem remained; lots of the code produced was rubbish, and most of the users were miserable, even the ones who could write good computer programs.
Well done: you got to the end of the book. That’s a lot of chapters digested. (If you just skipped here to ruin the ending for yourself: the butler did it. Now go back and read why.)
Over the last few hundred pages you’ve seen techniques for writing technically elegant code, for creating beautiful designs, and for constructing pragmatic, maintainable systems. You’ve learnt approaches for dealing with legacy code and seen how to work effectively with other people.
But all of this head knowledge, the understanding of specific skills, won’t help you at all unless you are driven by the correct attitude: the desire and passion to work well.
Do you have that?
Attitude is what sets the good programmers apart from the bad ones; it’s what distinguishes exceptional programmers from merely adequate ones.
Attitude trumps technical skill: intricate knowledge of a programming language does not guarantee maintainable code. Understanding many models of programming doesn’t always lead to elegant designs. It’s your attitude that determines whether your code is “good” and whether you are a pleasure to work with.
The dictionary definition of an attitude is:
Attitude: (n) at-ti-tude
That first definition isn’t surprising, but the second is actually more revealing than the first.
There are three imaginary lines of axis running through an aircraft; one from wing to wing, one from nose to tail, and one running vertically where the other two cross. A pilot positions his aircraft around these axes; they define the aircraft’s angle of approach. This is known as the attitude of the aircraft. If you apply a little power to the aircraft whilst it has the wrong attitude, it will end up missing the target massively. A pilot has to constantly monitor his vehicle’s attitude, especially at critical times like takeoff and landing.
This parallels our software development experiences. The plane’s attitude defines its angle of approach, and our attitude defines our angle of approach to coding. It doesn’t matter how technically competent a programmer you are, if your abilities aren’t tempered by healthy attitudes then your work will suffer.
With the wrong attitude you can shoot miles off in the wrong direction. A wrong attitude can make or break a software project, so it’s vital we maintain the right angle of approach to programming. Your attitude will either hinder or promote your personal growth. To become better programmers, we need to ensure that we have the right attitudes.
Your attitude determines how you will progress as a programmer. Aim for better attitudes to become a better programmer.
So care about good code, and seek to create it in better ways. Always learn. Learn to design, learn to code, learn to collaborate. Seek always to work alongside excellent engineers who will challenge and encourage you to improve. Be diligent, be conscientious, and be professional.
Enjoy programming. And more than anything else, enjoy becoming better!
Try this…. Read this book again in a few months. Revisit the material, and see what speaks to you next time around. Attempt the questions afresh; and observe how your perspectives, experience, and understanding have changed. If you are diligent, and concentrate on deliberate practice, you’ll be amazed at how you’ve developed.
 With apologies to the late, great Douglas Adams.