I love coding. Ever since I bought my first computer (a VIC-20), I’ve been fascinated by computer programming. For many years I never thought of why I enjoyed it so much – I just knew I did.
But that changed when I read The Mythical Man-Month by Fred Brooks. Most people associate that book with Brooks’s law: adding people to a late project makes it later. But for me, that is not the best part of the book. The best part is one page at the end of chapter one, entitled The Joys of the Craft.
There, Fred Brooks quite eloquently put into words what I love about coding.
1. The sheer joy of making things. Programming is fundamentally about creating solutions to problems. At the end of the day, you have created something that didn’t exist that morning, and that is in and of itself satisfying.
2. The pleasure of making things that are useful to other people. One of most satisfying aspects of the job as a programmer is seeing code you wrote deployed in a live system and used by actual people, especially if it improves their lives in some way.
3. 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. Very well put. Not only do programs have complex structure and dependencies, there is also the dynamics of the interaction between the parts as the program executes. The ultimate puzzle indeed!
4. The joy of always learning, which springs from the nonrepeating nature of the task. While constructing the program you constantly expand your understanding of both the problem and the solution. In addition, there is almost no limit to what you can learn to improve your craft – languages, algorithms, methodology, tools, frameworks.
5. 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 imagination. Easily my favorite in the list – insightful and wonderfully formulated. And he goes on to note that “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“. Yeah!
To these five excellent points from Fred Brooks I would add:
6. The expressiveness of code. It sounds counter-intuitive, given the strict specification of a programming language, and the relatively few constructs it contains (compared to a natural language like English), but there is almost an infinite number of ways to write a program to solve a given (non-trivial) problem. First and foremost, you as a coder name classes, methods and variables. But you also decide the algorithm, the partitioning of the logic, and finally the layout. All these factors combine to give the programmer great freedom in expressing the solution in code.
There – six reasons why I love coding!