There’s definitely something about programming that engages people in a very real and profound way. I’ve felt it myself and seen it in others; I’ve watched it dawn as a smile of understanding across someone’s face.
After years of making a living doing it, I am still passionate about programming, and I wanted to dig into why I still feel this way. Not just to share some of my story, but because I think it really helps to hear stories about this and for people to think about their own experiences.
I also want to talk about how it feels when you don’t feel so motivated, because that’s a real part of it too.
How does talking about this help?#
Primarily for three kinds of people:
For those just getting started: my answer to “how do I get started in programming” is typically “follow what excites you”, and sharing what motivates me seems to help.
For developers that feel burned out: disconnecting and getting into nature for a while is the best immediate remedy. But after that, reconnecting with the curiosity, play, and joy of development is what has helped me come back to work inspired.
For anybody looking for connection: over the years I’ve heard many stories of how people got into coding, or about the time when they really fell in love with it. These stories always bring a smile to my face, and I think it’s easy to downplay the shared human experience of programming since it looks from the outside like someone closing out the world to focus on their computer.
The Joy of Programming, for me#
I love programming, but in my experience, so do most people who do it for a living. Or at least they love a part of it.
I feel like you have to love it, because programming can be very difficult and frustrating. Especially when you’re getting started. Nightmare debugging sessions (which aren’t just limited to students) aren’t always rewarded with the “I’M THE KING OF THE WORLD” feeling.
Sometimes you bang your head on the wall for hours just to realize you made a silly mistake… which isn’t very fun.
But when I stopped to think about it, I came up with three core things that have kept me engaged with the pursuit of my adult lifetime.
Wizardry#
Nontrivial programming or software development is a fundamentally creative pursuit, no different than any other kind of art.
But it feels different because you create something from nothing.
It’s true that the end product is typically physically intangible, but you also don’t start from a ball of clay, a blank canvas, or a pencil and paper. You start with just an idea, or maybe an inkling of one. At the end you have something that you can see, observe, and share.
My strongest early experience of this was when I wrote my first buffer overflow (re-enacting Smashing the Stack for Fun and Profit). Reaching the understanding that by sending a very specifically crafted input, the program would stop doing what it was supposed to be doing and start doing something else entirely (of my choosing).
That certainly feels like magic.
Solving Problems#
Humans are hard-wired to enjoy problem solving, and while programming is pretty much just layers of problem solving, there’s something more to it.
There’s something that clicks the first time you solve a problem for yourself with code that you just wrote. That moment of realization comes with a feeling that is really satisfying.
I first felt this feeling after programming my graphing calculator to calculate Riemann sums as estimates to check my calculus homework… which may sound complicated but is actually pretty straightforward. And while this example might sound weird, I’ve found it’s really common for programmers to have similar stories!
It’s awesome to make easy the things that used be difficult, so of course people want to do it!
This isn’t just selfish motivation either, it’s really enjoyable solving other people’s problems, whether that’s building a website, writing Excel macros, or making an animatronic tail for your girlfriend’s Halloween costume, which is a thing I hear that people do.
Curiosity#
Have you ever wanted to know how something complicated actually worked? I don’t know about you but I was always taking gadgets apart as a curious kid, and for me, I still think the best way to learn is by taking something apart and/or rebuilding it yourself.
To this day I often work on projects because I want to learn something new, and coding something yourself guarantees that you understand how it works. Sometimes it’s hard to pick what thing to work on next because there’s so much awesome stuff out there!
Most recently, I wanted to learn about 2D image libraries in Javascript and see different (modern) approaches for drawing things. So I found a couple of candidates, read some documentation, and stumbled through building this idea for a simple animation I had rattling around in my head:
I made something from scratch AND learned some things about approaches for 2D drawing and this particular image library, and that felt like a slam dunk to me.
Ultimately this curiosity is really just an extension of one’s love of learning itself. So to put these three things in terms like that, it kinda makes sense why people would enjoy programming so much: a love of making awesome stuff from nothing, a love of solving problems, and a love of learning.
Overcoming the difficulty of getting started (or starting again)#
Thinking about these things gets me excited about coding, and I feel the same way when I hear people talk about their own experiences and what gets them excited.
But to be completely honest, as much as I love doing it, I don’t always feel like programming.
Sometimes it feels the like that feeling of not wanting to go to the gym, even though you know that you want to go to the gym. I want to have worked out today, but just getting started feels… difficult? Same thing with programming; I sometimes look at my laptop and just… don’t want to.
I’ve come to expect this, because the truth is that this same feeling appears for tons of things that are really important in life. People have different names for this feeling, but my favorite is The Resistance (from the excellent book The War of Art by Steven Pressfield).
The upshot is that this feeling can be thought of as a self-preservation instinct, but it you can also use it as a barometer of whether something is important. When you get that feeling, you know that you really should do it.
The easiest way of dealing with this that I’ve found has two parts. First, learn to recognize it and then expect it. Second, when you get that feeling… Go directly to whatever it is you are avoiding and start doing it.
Telling myself that I’ll work on a development project for 5 minutes is usually enough for me, because by then I’ll feel like I want to keep going. If this sounds trite or familiar, it’s probably because it works well for a lot of people, even if it doesn’t sound like it should work.
The Fourth Joy#
When I sat down to write this, I knew my three things. But as I thought about why it was important to share, I realized that there’s something else I love about the programming world.
I love hearing other people’s stories, and helping other people get excited about coding.
And come to think of it, that’s as honest and as real as any of the other reasons, and just important. Again, while coding is usually a solitary activity, I really enjoy connecting with other people who are passionate about the same things… which is to say “other programmers”.
So I would love it if you share a story of your passion for programming with me, or with others if you’re comfortable with that. Please DM or mention me on Twitter, or just get out there and share. Either way, I hope you enjoy the pursuit.