Henrik Warne shared some thoughts on his passion. I thought it would be best to share an excerpt from the article since I feel the exact same way about programming.
Fred Brooks, in The Mythical Man-Month, 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 the 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, but 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 the air, creating by exertion of the imagination. Easily my favorite on 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.”
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.
From Hacker News:
There really is a special kind of satisfaction when you see something you wrote actually work. I remember the first time I made a sprite move around the screen with arrow keys, I probably moved that guy around for several minutes just out of pride — jack-bodine
Funny enough, Titus Barik published a paper that contributes a qualitative analysis on the sentiment of programming and play on Hacker News. The themes he found include play as artistry, catalyst, fun, playgrounds, spontaneity, tinkering, and anti-work. There is a quote that I particularly like,
“The joy of programming for programming's sake is something you do in your own time.”
Of course, I have a relevant playlist.
Captioned: I literally love programming. More than anything in this world. It epitomizes my laziness and inherent desire to change things in the world in a single digestible bite.
And two for when I am required to get in the zone.