The Digital Lumberjack

Hacking Code When Life Goes Digital

The Most Important Language for a Programmer


Post date 11 Apr 2010
Filed under

Software engineers with low coding karma choose their favorite language based on money and job stability expectations. As a result you will often hear C++ or Java.

Fortunatelly there is a big group of people out there who take programming back to their homes as a hobby who will wisely reply back something like Python, Ruby or Scheme. I love this type of people and it is great working with them, but there is one single language that is essential for any programmer: English!

Joel Spolsky made this quite clear:

... The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java. It's whether they can communicate their ideas. By persuading other people, they get leverage. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it. Absent this, their code is worthless. By writing clear technical documentation for end users, they allow people to figure out what their code is supposed to do, which is the only way those users can see the value in their code. There's a lot of wonderful, useful code buried on sourceforge somewhere that nobody uses because it was created by programmers who don't write very well ...

Although Joel Spolsky's comment applies also to great coding style (naming, asthetics, abstraction...) it uncovers the importance of writting code for other people. During the first years most programmers (me included) try to squeeze that tiny extra code branch for the sake of speed optimization. Sooner or later we get frustated when we must work on existing code because the truh is that writing code that a human being can understand is awfully more dificult than doing it for a machine. Even more scary is that code must be read countless times more than it is written. If you ever must certify or test other people code... let's just say life goes on after work.

I am a native Spanish speaker, document my work in English and live in a German speaking environment. I know that many of my clients would like me to produce German documents, which I always gently decline. It will be a long (very long!) time until I can produce German documentation with the quality of a native speaker. In any case, I encourage my clients not to write their documentation in anything else than English. The official lingua franca for software projects has always been English and anyone ignoring this fact will severly limit the pool of resources and talents that can be invested.

Nevertheless, the difficulty is not the language itself, but being able to communicate ideas in a clear, concise and direct way. For a software engineer I would also demand writing in an pleasant and telegraphic way. Why? We must digest thousand of manuals that usually are verbose and poorly written. Everybody hates reading manuals, but reply any question with RTFM

This was one of the reasons I started this blog. Not only it is a great excercise for my English (which still must be improved a lot), it helps me to practice my writing skills. Before entering college I took two years of literary expresion (as a hobby) and so far most people told me that looks like a waste of time.

A proud programmer should care about the quality of his written communication skills. Discover that most code editors do not spell check the comments and that poor human-friendly-code will be the blood and tears of many colleages. In any case, just to get you started, always think about this quote before writting any single line:

Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live

blog comments powered by Disqus