Why I code

Coding is a lot of fun. Not just for the nerdy deep-dives that enable me to make cool things happen, but for the whole ‘shape of life’ that comes with it.

I’m grateful for the type of life I get to live.

I work from home. My most frequent “office interruptions” might be my 5-year-old son coming in to show me his new LEGO creation or his latest depiction of Thor’s battle with Jörmungandr; or my 2-year-old daughter wandering in to ask me, “Having a good work, Papa?” These early childhood years pass quickly, so I’m thankful to get to work in a way that lets me catch more of it.

I’m grateful for the ways I get to serve people.

I enjoy the work of coding because of the problems I can solve for people. I work with a lot of nonprofits and charities of varying size. In most cases, their office teams are understaffed, and are trying to handle enormous workloads. I find it invigorating to create things that reduce a team’s workload or stress levels. I remind myself each day that every line of code serves real humans. Creating a good user experience isn’t an abstract thing when you know it will enable Angela to meet her publication deadline, or Dave to get his content ready for the big board presentation. In this sense, coding is as pastoral as the youth ministry work I do for my church. In a really practical way, coding allows me to come along side people as they do their work.

I enjoy nerding out on all the things I get to learn.

Code is almost magical. In some ways, it’s a bit like being in J.K. Rowling’s “Harry Potter” universe. For Harry and his wizarding friends, magic is something that exists. It is real. It is part of the fabric of the universe. And they need only to learn particular words and motions to allow them to access its possibilities. There are rules and limits, and by mastering them they become better conduits of the magic.

Coding is like that. A web server is a specialized environment enlivened by a particular language, equipped with its own set of rules and parameters that stand ready for invocation. A knowledgable developer can make things happen by learning the ‘magic’ words and actions.

It’s endlessly fascinating to watch coding languages grow, and to explore new and more efficient ways of solving problems. My code has evolved considerably in the past 8 years. Each time I discover a new way of accomplishing something, I feel an explosion of nerdy excitement as I imagine all of the implications it has for the work I do. I remember the first time I learned how to store uploads in an Amazon S3 bucket, . Or the day I successfully connected to a database using the new “mysqli” schema. Or the weeks of study that led to a new understanding of relational databasing.

I get to make mistakes for a living.

There are few jobs that actually require an enormous amount of mistakes. As a coder, I make mistakes all day long, every day. Coding is a process of making mistakes and unearthing the solution to a problem. As a programmer, you’ll be in one of two situations throughout the day:

  1. “That didn’t work. As expected.”
  2. “That didn’t work as expected.”

Either it doesn’t work, or it doesn’t do what you assumed it would do. That’s how it goes. Creating a complex system is a process of getting it wrong until it works.

This cycle is really healthy. It guards you against perfectionism and arrogance, and teaches you that failure is just part of growing. It’s a lot like learning Hebrew: it keeps you honest, humble, and hungry.

Since my high school days, I’ve been fascinated by the web. Some days are exciting, others are frustrating. But every day, I look forward to cracking open my MacBook and getting back at it.