The Five Joys of the Programming Craft
In this article, we are revisiting the original ideas about the pleasures of programming put forth by Fred Brooks in one of the most influential and timeless books on software project management known as The Mythical Man-Month.
Why is programming fun? What delights may its practitioner expect as his reward?
1. The Sheer joy of building things
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. This delight must be an image of God’s delight in making things, a delight shown in the individuality and novelty of each leaf and snowflake.
“The characteristic of great innovators and great companies is they see a space that others do not. They don’t just listen to what people tell them; they actually invent something new, something that you didn’t know you needed, but the moment you see it, you say, ‘I must have it.’”
– Eric Schmidt, Google
Innovation distinguishes between a leader and a follower.
– Steve Jobs
2. The Pleasure of making things useful to others
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 purpose of life is not to be happy. It is to be useful, to be honorable, to be compassionate, to have it make some difference that you have lived and lived well.
– Ralph Waldo Emerson
3. The Fascination of forming complex puzzles
Third is the fascination of fashioning complex puzzle-like objects of interlocking moving parts and watching them work in subtle cycles, playing out the consequences of principles built in from the beginning. The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate.
“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”
― Edsger W. Dijkstra
4. The Joy of Perennial Learning experience
Fourth is the joy of always learning, which springs from the non-repeating nature of the task. In one way or another the problem is ever new, and its solver learns something: sometimes practical, sometimes theoretical, and sometimes both.
“Live as if you were to die tomorrow. Learn as if you were to live forever.”
― Mahatma Gandhi
5. The Delight of working in a tractable medium
Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.
Yet the program construct, unlike the poet’s words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be.
Programming is fun because it gratifies creative longings built deep within us and delights sensibilities we have in common with all men.
Hope, you enjoyed this article and please feel free to share your passion and interests for the craft in the comments section.
- Photo by Samuel Zeller on Unsplash
- Photo by Riccardo Annandale on Unsplash
- Photo by Matt Palmer on Unsplash
- Photo by Markus Spiske on Unsplash
- Photo by Evan Kirby on Unsplash
- Photo by Lidya Nada on Unsplash