Why I Love Writing Software

“Charlie sees math as beautiful, and he wants everyone else to love it the way he does.”
~ Judd Hirsch playing Alan Eppes in Numb3rs Season 4 Episode 9, “Graphic”

I’ve been using computers since I was five years old. In my early teens, I started writing computer software as a hobby. I took computer science courses in high school and went on to graduate from college with a bachelor’s degree in computer science. All of my jobs have at least involved information technology. Most of them, including the one I have now, have involved writing software.

I’ll turn 31 early next year. I haven’t been doing this as long as some, but I’ve been around the block a few times. In that time, I’ve noticed a few things about how others — muggles, if you will — perceive people who write software. I wanted to talk about those in this post as well as describe what writing software means to me and why I love doing it so much. Whether you do as well or not, please read on.

People tend to think that, in order to be capable of or good at writing software, you have to be a math or science nerd. Truthfully, it certainly doesn’t hurt, but it’s not a necessity. I struggled with math in college. It took me multiple tries to get through most of the math courses with the minimum grade required by my curriculum. As it turns out, I don’t use what I learned in those courses very often when I’m writing software. Given my academic track record, I’m rather grateful for this.

I’ve also found that people don’t view writing software as being a craft or creative pursuit. At its center, writing software is problem-solving. Think about the last time you had to solve any problem, big or small. How did you do it? Was the solution simple or complex? Would it seem unusual or creative to someone else if you explained it? Did you feel a sense of satisfaction when you found the solution? These questions apply to writing software just as they might to anything else, perhaps more so because software can be applied to so many different problems.

Have you ever written something where you carefully arranged information and chose words to make it easy for someone to consume, whether it was a document for professional instruction or a work of fiction? People who write software do this too. In many cases, the software we write can be used by others to build other software. It can be like a tool or the foundation of a house in that respect, except that it can be made available to anyone who wants it by releasing the source code. It’s not unlike releasing artistic works as creative commons and allowing derivative works.

Writing software also has a pedagogical nature to it because the product of writing software is instructions that a computer — and, ideally, a human being — can understand. It’s a way of sharing knowledge in a form that’s usable directly. In fact, software is often written to be usable without having to know how its innards work, much like how you don’t need to know the mechanics of a combustion engine to drive a car. Much like what I’ve felt when teaching or mentoring and having someone form an understanding of something that I’ve communicated to them, there’s a satisfaction in being able to successfully teach a computer to do something useful.

I’ve seen few other hobbies or professions where I can share a problem with someone and a few minutes or hours later have a working solution I can use to solve that problem. And that person can live halfway around the globe from me! The possibility for collaboration on software projects is incredible. People who write software are able to empower themselves and each other to create and empower others by creating things that make their lives easier. As pervasive as technology has become in our society, the ability to exercise this power can be both useful and enjoyable.

If this post reads in a bit of a distracted way, it’s because the reasons why I love writing software are many, diverse, and wonderfully complex and nuanced. I think it has a beauty all its own and that’s something I want to share with others. Hopefully, what I’ve said here has given you some insight or, if you write software too, it’s reminded you of why it’s a passion we share. I’d love to hear your thoughts in the comments. Thanks for reading.

3 Comments

  1. Michiel says:

    Nice post Matthew! Lots of familiar / recognizable points :)

  2. Davey Shafik says:

    +1

    Writing Code = Expression of Thought & Intent = Art

  3. It’s an amazing shift when you go from “just writing code” to the craftsmanship you’re talking about. Sadly, there’s always going to be those folks out there that see writing code as an ends to a means and miss out on really getting into the language, knowing its ins and outs, its culture and its community. Good software isn’t about it being bug free (because that’s *so* possible heh) – it’s about creating something useful, powerful and flexible.

    Thank you for what you do for this community to help make this possible – co-authoring the SitePoint book, making Phergie and writing posts like this to help remind us why we do what we do :)