Choosing a Programming Language

This is the story of how I ended up choosing one thing over the other and how at some point I questioned the very foundations of my work/life balance.

I wouldn’t really call it a story. It’s more likely a way for me to examine all that has been going on in my mind. I like giving context. So let me start from the beginning.

I first started doing programming seriously in 2014. At the time, I was cruising through my computer science degree, not really learning what I was supposed to. I know people often jump at the opportunity to blame the institutions they went through for not teaching them well and sometimes for not being at par with the real world by either having outdated content or apathetic lecturers. We fail to see how much of the blame falls on us. I realised that I wasn’t doing the future me any justice by being an academic tourist. Since I enjoyed the hello world applications I did in the classes I occasionally attended, I decided to take my programming up a notch. So during the May to August school break period, I decided to go HAM on Java. I chose Java only because that was what was taught in school. I even decided to forego a well paying teaching gig. Let me re-iterate that. I was broke, in campus, in need of money (we all know how expensive partying in uni is) but I decided not to take the gig in favour of reading friggin Java. How’s that for opportunity cost?

How dare you piss on my sacrifice

So I went back to my mom’s place, picked up a copy of Daniel Liang’s Introduction to Java Programming and started going through it, cover to cover. I remember the satisfaction I felt after writing an algorithm that could tell whether a number was a valid credit card number. I wanted to show that thing to everyone. Obviously, no one was really keen on seeing it, but the one friend who was around did a great job putting up a face of interest, and that kept me going. For three months, my weekdays basically looked like this:

  • Wake up
  • Take breakfast
  • Read Introduction to Java Programming
  • Take lunch
  • Read some more Introduction to Java programming
  • Take supper
  • Repeat

With such an intense, daily routine, Java became my second language after Ekegusii (I lie though, my Ekegusii is terrible). What am getting at is that Java got me into this game. I loved it and would yield a sword and go to war for it. I did some freelance (basically doing assignments for guys) using it. I did google codejam using Java. It was my all, until I touched python in January 2016. Then I started feeling like Java was too restrictive, too Static (see what I did there? :)). By then, I had done some PHP. Lots of PHP actually. And Javascript. But nothing changed the way I felt about Java as much as Python did. Perhaps part of the reason is that I felt modern PHP was trying too hard to be Java, so it never stood a chance against Java. Javascript on the other hand served an entirely different purpose for me, so I never thought of substituting it either. Since then, Python became my go to for all scripting needs. I started wondering why I ever bothered with Java in the first place and vowed to never go back to it.

I am fairly certain that after hearing such strong sentiments I’ve got against a language, one would think I’ve got it all figured out. Au contraire, I’ve never been more confused. Recently a friend of mine went on a really long and convincing monologue on how Ruby is such a wonderful language with a strong, smart community behind it and why I should consider taking it up. Go-lang adoption is picking up really quickly and I am constantly tempted to get onto the bandwagon. I should never have left Java the way I did, without exploring all the gems it has for me. Unity, the game engine, is forcing me to learn C# for scripting, since its Javascript is too weird for my taste. I am also aware of the “learn a different programming language a year” movement which many developers I look up to champion, and I clearly see the benefits. The problem is that I have many interests. Besides programming, I need to make time for all the things I want to do, and any other interests I might pick up along the way. However, looking at the obsessive relationship industry leaders like Linus Torvalds and Guido Van Rossum have had with their crafts, I feel like I stand no chance with divided attention. If I decided to learn a different language every other time and still compete against the best of them while following in the footsteps of my idols, I would have to give up on lots of interests. I would have to make programming the only thing I do.

That was when I started questioning everything. Everything I thought I knew. Is programming really my passion? Clearly, the answer to this is a strong yes. The feeling of satisfaction I get while tackling a computation problem is comparable to few others. If that is the case, then shouldn’t I be yearning to do it on my every waking moment? Is it really such a bad thing if I give everything up and focus on one thing all the way? I’ve been told that specialization is key in crushing it at whatever you choose. I have different passions. I came to realize that there’s way too much of the world to experience, to limit yourself to one point of view. A different person once told me that if I have many different passions, I should pursue all of them, which contradicts the first specialization guy.

What is the solution then? Narrow it down. Prioritise. Someone I really respect once said,

When feeling overwhelmed by a faraway goal, repeat the following: I have it within me right now, to get me to where I want to be later.
- unicodeveloper

What if you have no clear picture of where you want to be? You will have to make a choice. Decide on something you want to work towards, and run with it. For me, I chose a pool of very related things to work towards. I work in web development at a really awesome company called Andela. I have a passion for game development. I was also looking into exploring Data Science in order to decide whether it’s something I might want to do career wise. I need one language that can be used in all these domains. I need something expressive, mature, with strong leadership, that has stood the test of time. I need something that can help me take my ideas to production really quickly, with well architected frameworks. That is the kind of language I want, which is why I chose Python.

Have I made a mistake? I do not think so, but I might be wrong. Feel free to reach out and correct me. Of course I will still need Javascript to complement Python on web and mobile stuff, but I don’t think I will be going back to Java or PHP. Only if it is absolutely necessary. I want to learn some other new languages, but I do not plan on making this undertaking a priority any time soon. Python seems like a good choice as my primary. Thus, the journey begins.

comments powered by Disqus
comments powered by Disqus