One of the most important things you have to do before you start any endeavor is to know why you’re doing it. Building a bridge just for the sake of building it will always result in subpar construction, a waste of space and most importantly, a waste of time. This is why I constantly spend 20-30% of my time in the planning and designing phases of a project, well before firing up Xcode.

Anyway, I teach part-time high-school mathematics (because, let’s be honest, math is pretty amazing) and I have to constantly deal with teenagers who have no idea what to do with their lives. A recent conversation with one of them led me to the realization that I love programming because of different reasons.

1. Programming is intellectually satisfying. Programming is about solving problems in a lot of different areas. Perhaps you need to optimize parsing of an XML file through multi-threading, or maybe that algorithm someone else designed is O(n^2) and can be O(nlogn). Solving these types of problems requires analytical thinking, solid foundations and understanding of how the computer works and a little bit of imagination.

But there are also problems that require you to understand people and their interaction with the computer. We must remember that the goal of computers is to help people do something faster, easier and/or cheaper. So, maybe you can simplify how they take a picture by just having them swipe somewhere instead of them pressing a button. Or maybe you can make the button bigger (making it an easier target) but then how will that affect the visibility of other buttons, and what does it mean for your app? Will making the button bigger make users think this is a photo-sharing app when it isn’t?

All of these can keep me awake at nights and I love it.

2. Programming can be a lone endeavor Even though I know I will never finish a full-blown OS by myself and that I will not be able to finish a huge project in the time it takes 15 people, I’m okay with that. As someone who knows a hell of a lot more about programming than I do said,

I will certainly ship more apps on iOS (both mine have now been withdrawn, dangit), but I love Mac OS and love fishing alone.

This is not to say I do not know how to work in a team. I have previously worked in a team environment. I just feel a lot more agile when it’s just me and, for my intents and purposes, it works pretty damn well. Really, I love tackling a problem by myself and having the satisfaction that I have built this with my own hands (so to speak). I am a proud person and I relish in my own achievements.

Which brings me to my next point.

3. Programming is a work of art. Every line of code we do is a work of art. It is the product of education, of technology, of a lot of different, hard aspects all mingled together and transformed into an instruction - something almost ethereal - thanks to the human brain. The fact is that, programmers have to think unlike normal people (I first heard this from Matt Gemmell, alas, I cannot find the source).  This isn’t an easy process and it can drive you crazy sometime, but the better you become at it, the more elegant your answers become. Unfortunately, it is harder to perceive beauty in code as it is to perceive beauty in a Monet. This does not deter me, however, as my goal is for users to ignore my interface and for programmers to marvel at how it disappears.

All in all, I cannot see myself doing something else for a living, other than programming - and I’m glad.