“Why do you like to program?”
This is a question I think every developer or computer science student has been asked at one point in his or her career, probably more than once. Whether it be in an interview, from a friend, or family member, I never knew quite how to respond. Sure, there were the surface reasons: for a great final product or the possibility of increasing productivity. But every time I delivered such a response, I never felt like that was it. I didn’t feel like I was lying, those reason were all true! I just felt like it was an empty answer.
I decided to write this post not only for you, but also for me. I wanted to dig down and figure out exactly why I started programming and never looked back. It’s a love story that begins not too long ago. When I think about what drew me to code initially, I think it has a lot to do with the reasons above. I wanted to make apps, I wanted to increase my own productivity, and I wanted to join the community. This isn’t what kept me coding though. The initial break into coding isn’t the hardest stage to overcome. There are so many resources online that it can be quite easy to follow along with a tutorial in hand and create a really great looking application. Even in the computer science classes I was required to take, we were usually given a skeleton program with method stubs to implement. More often than not, we were also learning a particular algorithm or data structure, so there wasn’t a lot of room for creativity in our designs. I hadn’t experienced complete freedom from requirements.
For me, the hardest stage to overcome was just after I got bored with someone telling me exactly how to design and implement my programs. It came when I decided to create my own projects. I think this is when a lot of early programmers decide to hang it up and call it a day. You are now free. But with this freedom comes a new level of thought while coding. The entire architecture and program design is now completely up to you. Do I make a separate method for this? Should I use a for-loop? Should I split up this if-statement? I came to the sudden realization that there isn’t necessarily ONE right way to do something. There isn’t even two or three in many cases. There are hundreds, sometimes thousands of ways to implement something. Programming became a form of expression, an art form.
I have always been a creative person. I was told at a young age that I had an ability to think outside of the box. I was very witty and it sometimes got me into a bit of trouble in elementary and middle school. However, I was never artistic in the musical or painting sense. I really think I struggled to find a way to express my creativity early on.
I don’t think programmers get enough credit for their creative genius. We are in this dimension of such strict mathematical logic and an unbounded freedom all in one. And it’s fascinating. Programming has become my ultimate form of expression. I can “paint” or “compose” beautiful artistic pieces through code. I truly believe this is what has kept me so infatuated with it. Sure, most projects carry requirements and guidelines. That’s just the nature of the beast; time is money in the 21st century. But the creativity that’s involved in programming is often overlooked.
Who knows, maybe the next Van Gogh or Rembrandt is sitting behind a text editor right now creating the next work of art that future generations will study and learn from.