What is the Joy of Programming?
Tags: joy, beginners, career
Published: 2019-11-06 01:43:04


Ok so a while ago a former student asked me why I decided to become a programmer.
I think what she meant was when did I feel like I was "part of the club" and that's 
a valid question and maybe a topic for another time. 

But it got my wheels turning about why I like to do what I do? 
At first, I thought about the fact that I make a pretty good living doing it.
That doesn't hurt but I enjoyed writing code long before I made a dime off it.


So what then? I couldn't put a finger on it. I knew I liked it but a couldn't say why. Not with any clarity anyway. This frustrated me so I did what every good coder does when they don't
know something. I googled it. 

I found plenty of tweets detailing the ups and downs of coding. The desperate pleas to
the compiler. The intense joy when you make progress. And the masochism that draws 
someone to enjoy that in their day-to-day. 

I wasn't satisfied. Sure maybe that's true. I relate to what they're 
saying. I've felt those lows and ridden those highs late into the night, but was
the emotional rollercoaster what I fell in love with? I didn't think so. 
Maybe It's ego or a sense of self-exceptionalism but I felt it was in some way
nobler than that. 

Surely there was something essential to the act of coding that drew me to it. 

I remembered I'd read some books with poignant observations on this topic. And I'd
like to discuss some of them.

> 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. ... 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.
> 
>    <cite>[The Mythical Man-Month, Frederick P. Brooks, Jr.][1]</cite>

[1]:https://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959

For a long time, I thought this was the whole truth for me. I loved programming because
I could make something brand new from nothing. I could start with a blank page and 
pull the vision in my mind's eye from out of the void. 

I might lose some people here, but when I discovered (and then practiced) web dev it
was like magic was real. I was a wizard in a tower studying arcane languages to
manipulate the world around me for profit and pleasure. What could be better than to 
live in a world of your own design and be able to reshape at will? Nothing. Case
closed, right?

For a while yes. I thought this was THE answer, and surely it was everyone's answer
on account of how good it felt to me. 

Smugly, I sent my friend a picture of that page to share my new lease on life. 

She read it. Thought for a bit and she was like...

![Danny Devito shaking his head and saying nope.](https://media.giphy.com/media/LRKET0Syb0rDO/giphy.gif)

I was thrust again into an introspective void. My answer wasn't complete. It was
certainly a part of why I enjoyed it so much, but it was missing something. It
was missing a community.

> The story of early computer networks has most often been told as a technology
> and business story. But like the Internet today, Conference XYZ was not an 
> engineering experiment as much as an immersive experience... While we were
> seeking connection and community we were also helping to build a culture.
>
><cite>[A People's History of Computing in the United States, Joy Lisi Rankin][3]</cite>

[3]:https://www.amazon.com/Peoples-History-Computing-United-States/dp/0674970977/ref=sr_1_1?crid=3SNG563FPS0DI&keywords=a+peoples+history+of+computing&qid=1573000213&s=books&sprefix=a+peoples+history+of+comp%2Cstripbooks%2C168&sr=1-1

Say what you will about the community of programmers at large, and certainly, there is
plenty to say. Plenty. But it exists. It brings us together on GitHub and Glitch and 
Codepen. On Dev.to, on Twiter, and on Medium. On StackOverflow, on message boards, and
at meetups. Surely this question cannot be approached without a nod to the community
of developers that came before me and will exist after me. Making things is great. 
Sharing the things you've made is better. 

I think it's inherently human to need recognition of that thing you just did. I
think without a feedback loop the drive to get better (not to mention the 
ability to) would be lost. 

Armed with an expanded idea of what the Joy of this craft is, I called my friend.
Excited I laid out that the thrill of having created a thing + the ability and drive
to share it, I had answered the question I had sought to (several months ago, at this
point). I thought for sure that this would resonate with her. I thought I'd cracked 
it. 

Annnd, 

![Yeah, that's gonna be a no from me, dawg](https://media.giphy.com/media/xiMUwBRn5RDLhzwO80/giphy.gif)

At this point a gave up. I considered the idea that she didn't like programming. I
considered that maybe I didn't like programming. Maybe no one *likes* programming.
Or maybe it was folly trying to describe why someone likes anything.

Then, on the recommendation of @jessfraz, I read The Soul of a New Machine (Her 
thoughts [here][4])

[4]:https://blog.jessfraz.com/post/new-golden-age-of-building-with-soul/

And out of all of the cool thoughts this read stirs up one really stuck with me. 
Kidder invokes the game of pinball as an analogy for the craft of building a 
machine.

> The bigger game was "pinball."
> ... "You win one game, you get to play another. You win with this
> [project], you get to build the next." Pinball was what counted. ...
> "I said, 'I will do this, I want to do it. I recognize from the beginning
> that it's gonna be a tough job. I'll have to work hard, and if we do a
> good job, we get to do it again.'"
>
> <cite> [&mdash; The Soul of a New Machine, Tracy Kidder][5]</cite>

[5]:https://www.amazon.com/Soul-New-Machine-Tracy-Kidder/dp/0316491977

The reason this resonates with me as much as it does is as mysterious as to what
essential part of Software I find so compelling. But something about the idea of
playing a game for no other reward than to get to play again is beautiful in its
simplicity. I program, and I study, and I learn so that when the day is done I 
get to do it all again. 

It's the act of making, it's the ups and downs, it's the draw of a community, and 
it's the simple pleasure of pulling the plunger again. These are what keep me 
coming back. 

I didn't ask again if this new idea made it her answer, but I suspect not. My 
answer is just that. My answer. What's yours?