Programming is an extension of who you are.

I had an interesting conversation today with Kelvin, a great friend who also happens to be my business partner, mentor and code peer. We were discussing how we each took different routes when it came to programming. We started the journey around the same time, although I must confess his speed was way ahead of mine. Back when I was busy struggling to understand what PHP was, he had gone ahead to learn C, C++ and C# to the extent of launching different applications. The codes were elegant and fascinating. Later when I switched to JavaScript, he moved on to do ASP.NET.

Fast forward 3 years later, he has actually gone back to Python and JavaScript whereas I have gone back to Java and Ruby. I say gone back because these are not new languages to us. We had tested them, and at the time, found them really difficult to comprehend and implement. I began with Ruby, because I followed the buzz of “Ruby is an easy language to learn”. For most programmer, the journey is pretty much the same. Before you settle and find something you are comfortable with, you will have moved and tried learning so many different languages and frameworks. Surprisingly enough, Kelvin actually fell in love with JavaScript more than I ever did. I didn’t hate it, and still don’t hate it. I just figured, it is not who I am. To me Java is home!!

So today, while he was fixing his laptop, we tried to discern the reasons behind us taking on different directions and what made each of us comfortable in the language we were currently working with. Aside from the usually “programming wars” of trying to place which language was better than the other, we actually realized that their is no such thing . At the end of the whole discussion, it hit us that the language one chooses was simply an extension of who they are. Why do I love Ruby and Java so much? And why does Kelvin find JS and Python easy and fun to work with even though I find them frustrating?

A Few Reasons Why I love Ruby and Java

  1. Simplicity: I am a simple guy. Always have been. I love to break down things to their rudimentary and atomic levels and then work from there. My approach to solving a particular programming problem is logic base, developing algorithms from the easiest to solve and building up. Kind of like Bottom-Top approach. Ruby and Java being highly Object Oriented allows for an easier flow and implementation of such logic and reasoning. Given that there are so many object oriented programming languages, such an approach is adopted by so many. However, the two aforementioned languages implement it, in my perspective, a lot more than other languages. So I found it simple. In fact, when Yukihiro “Matz” invented the Ruby language, simplicity was one of the main things he emphasized on.
  2. Convention Over Configuration: Personally, I love the fact that in Ruby it stretches beyond just writing the code. The level of strictness and the favoring of convention blends with me. This is how it should be done, period!! I know for most programmers, that might mean lack of freedom, but it really doesn’t. You can mess with Ruby all you like (although no rubbyist would advice you to do that). I love the fact that there is a way of doing things, the elegance and exclusivity. Codes writen in Ruby or Java are beautiful.

A Few Reasons Why Kelvin loves Python and JS

  1. Callbacks: Almost every programming language uses callbacks, but none does it better than JavaScript. It one of the main things that draws Kelvin so much to the language. Kelvin is prefers Functional Programming to Objected Oriented Programming paradigm.
  2. Speed: Above anything, Kelvin loves it when a program executes really really fast. JavaScript and Python achieve this very well.
  3. Results over convention: How it is implemented hardly really matters to Kelvin. Whether the code looks elegant, tabs were used instead of spaces or the hierarchy is one that can easily be understood hardly matters; to him only two questions need be answered: Does the code work? Is it robust? Done! As a matter of fact, he hates convention is the main reason why he has never even tried Ruby. He knows about, he can’t stand writing Ruby codes.

Aside from this, at least we share similar attributes. We are both pretty lazy and hate reinventing the wheel. That’s something all programmers, share I guess. Has it be done before? Good, then we can inject that right in the code.

The rule book says, “ Thou shall not repeat yourself!” DYR (Don’t Repeat Yourself) is one of the good programming habits. At least that’s something even Kelvin agrees. We both hate writing repetitive codes (Although Java has a lot of repetition).

In a nutshell, we went home with a valuable lesson. If you ever met Kelvin or I, then you would quickly understand how our chosen arsenal fits our personality. I hate rules, but I love order. On the other hand, Kelvin neither hates rules nor order, he just doesn’t care for them. While I mind my books folding and getting “dog ears”, important to him is that the notes are up to date. I guess after a while, show me your friends and I’ll tell you who you are has changed to show me your code and I’ll tell you who you are!