Books are a great way to learn. As a programmer I have always found books to be a great way to really dig into a subject. As time goes on, online resources such as articles, blogs and even video tutorials are also proving to be a great way to learn too, of course.
When talking about renowned books within the programming space, there are a few titles that always come up. Fred Brooks' The Mythical Man-Month is one of those books. It tells a story that every software company should be aware of; simply adding man power to a project (like you might on a construction site) to get it done in a lesser time does not work.
But more relevantly, Brooks asks the question:
Why is programming fun? What delights may its practitioner expect as his reward?
Personally I think Brooks’ answer to this question is absolutely right. More right than perhaps he intended.
First is the sheer joy of making things. As the child delights in his mud pie, so the adult enjoys building things, especially things of his own design. I think this delight must be an image of God's delight in making things, a delight shown in the distinctness and newness of each leaf and each snowflake.
Second is the pleasure of making things that are useful to other people. Deep within, we want others to use our work and to find it helpful. In this respect the programming system is not essentially different from the child's first clay pencil holder "for Daddy's office."
The joy of your own working creation, coupled with the fact that this creation could be used by real people to help them solve real problems is what drives me, and I would expect, most other programmers too. There are, of course, those programmers who write code because that’s their job. Typically they aren’t as passionate about code. They don’t spend all their own free time learning new or better ways to do what they already know how to do. But even in those cases you can still see the same delight when their code works and solves a real problem.
But what happens when you complete the last milestone of your project? What happens when you ship the final version and your customers are happy. You’ve nailed the gap in the market, you’ve done what you set out to do and you’re finished. How does that make you feel?
Like most people, I would feel successful and proud – for about a day. On the second day, I’d be thinking of ways to improve it and if I couldn’t find a way I’d be thinking of a new problem to create a solution for. When does it end? When do we stop craving that feeling of creation and progress?
Perhaps I am speaking only for myself when I say that I don’t think it will ever stop. To me it’s like a drug and incidentally has the same effects. Like a drug, you start on a high as you devise solutions to the problem and form them into a piece of engineering brilliance. Your engineering brilliance is such that your solution is well structured and self sustainable. Your solution doesn’t need you and your problem solving any more. Your work here is done and this is the point at which you begin to miss the feeling you got from solving problems and from being creative. You start to come down off the high and the only way to get another fix is to solve another problem. And so it starts all over again.
I guess what I am trying to conclude is that programming is a drug. It’s the most powerful drug you can imagine. This drug doesn’t harm you. It makes you better at what you do and if you were to go cold turkey from this drug – would it be the same person left over?
I can’t be the only addict.