Jacobo Martín

Software writer

Let there be code

For me, writing code is one of the most beautiful and creative things one can do nowadays. And the coolest thing of it is that you can make a living of it.

To make a living programming you have to step into the software industry. And, at least in Spain where I work, it seems that one of the hardest things to do is not entering the profession but maintaining it. I’m not talking about being fired; I’m referring to the siren songs that deviate the route of most software developers, taking them from being programmers to being…

What? What would be the natural evolution of a programmer? Wouldn’t it be, simply put, just turning into better programmers?

My dream is to become the best software developer that I can be, honing my skills throughout the years, until I become the best programmer that potentially dwelves within me. So, eventually, this path has no end: it’s more of a journey than a destination. Or, to be exact, it’s a recursive journey in that the destination is the journey.

But not everyone shares this dream. In fact, to be more exact, there are probably more people that don’t share it than people that do share it. What kind of professional retires still being a programmer? How many people start their careers as software developers and end it still being software developers? Are there statistics about it? Anyway, there are probably many factors that intervene in this equation. Out of them, the one that stands out is… did you guess? Money.

Money

Money / So they say/ Is the root of all evil today / But if you ask for a raise / It’s no surprise that they’re giving none away

Money, Pink Floyd

Don’t get me wrong here: I love money. Money is an all-pervading energy that can be transformed into the most important currency of them all: TIME (and if you add purpose to time, you’ll be the king of your world!)

The main noticeable difference between an amateur and a professional is that while the former may have indeed more passion or even technical knowledge than the latter, the professional makes a living out of being a programmer; this is, he earns money programming software. The natural thing would be for the amateur to become a professional. But then, even if this happens, usually money takes over for passion and ends up being the pilot on the steering wheel of our careers. Thus, unfortunately, an ugly decision sooner or later presents itself in the face of everyone’s career: should I choose the management side -in which there usually is more money involved- or should I continue the programmer’s path -and “stay poor”-?

Picar código

The other day I read this in an entry posted on LinkedIn by the Java Champion Vlad Milhacea:

“Are you still writing code?”, asked me a friend from college as if I had failed my existence.

Vlad Milhacea

This is why I’m writing this post. Because, for one reason or another, in the software industry there is a carcinogenic belief that is eroding the profession: the natural evolution of being a programmer is to become a manager, as if being a programmer were the lowest rung of a ladder that leads to success. In Spain, we even have a disdainful expression for this, picar código (don’t know how to translate it into English to convey the meaning properly; it would be something like coding with a pickaxe).

This expression has social connotations that takes us back to the old division between manual and intellectual activities, in which the manual thing would be the activity for the kind of person with the lowest status. Thus, hitting the keyboard as if you were a miner digging the earth with his pickaxe would be the manual activity in which you get your hands dirty. As if pressing the keys in a keyboard when you’re programming were a mechanic activity that doesn’t require to think. As if the thinking part of it were done beforehand, somewhere else and by someone else, being this someone else the “true intellectual”. As if a programmer were only a typist that just puts down into paper what others have designed, created, thought or said.

No, ladies and gentlemen. Programming is one of the most challenging exercises of the intellect. Besides, Programming, to a lesser or greater extent, encompasses every and each of the skills required in other areas of the software industry. So, if we were to mix the evolutions of different careers and merge them into one, if anything, it would be more natural to start from the more forgiving thing to do (being a functional or business analyst) and, with time, becoming a programmer if you’re good enough with the business. It’s like we’ve ended up with the wrong conclusion that being a manager encompasses the rest when, in fact, many great managers haven’t written a single line of code in their whole lives.

The (faulty) system

So why don’t we protect the programmer’s profession? Why don’t we encourage good programmers to stay being programmers by just raising their salary accordingly, instead of forcing them to leave what they are good at -and love doing- to have more economic possibilities. What a shame!

I remember, long ago, a collleague of mine pointing me out an interesting fact applicable in most professions: professional careers are bad designed, since you usually end up having the right people in the wrong positions. Her reasoning was that you start up doing well in one activity; then you get a promotion to a different activity; if you are able to still do it well, you will be promoted to a different activity. And so on and so forth until you reach a position in which you are not that good, where you usually stay. So, finally, this wrong-incentived style produces, in the end, unhappy professionals that end up performing poorly. But well paid, that’s for sure.

At the other end of the staircase

So, in this light, the question would be: is programming a stair or a step? If it’s a step, where would the stair lead us to? Just making more money? Would that be wrong? Of course not. I’m just saying: those are two different stairs. And what is pivotal here is to understand that we must not mix the two types of stairs since they lead to very different places. For true programmers, the higher (or lower) you go in that stair, the deeper you get into the code and minds of people that code (including yourself). With the other stair, the more you advance, the farther you flee from the art of coding.

We could take a look at what happens in other professions, in order to find analogies that throw some discerning light. One of the most popular professions is being a football player. What is the evolution of a soccer player? Most often, when they reach the thirties, they usually have to become managers in order to stay in the soccer world, as if that were the natural evolution of being a soccer player. And, truth be told, it is true indeed in that world. But, is this true in programming?

Some think that being a programmer, since it’s a very energy consuming task, is more fitted for the young. So, as in soccer, the natural thing to do would be to become a Scrum master or a Manager or something similar. It seems sensible enough, doesn’t it? But the problem with this soccer analogy is that it’s basically wrong: it can’t be applied to the programming realm, since physical vigor certainly isn’t the most important thing when programming.

A more adecuate analogy would be seeing the programmer’s career as something similar as being a writer. Do you imagine that derisive question made to a writer?:

Are you still writing? What a loser…

Do you imagine literature industry indirectly forcing writers to become editors or writer’s agents after a few years of being a writer? No! That would be terrible for everyone. We would be, as artifitially as in our case, mixing two different stairs. We would have probably ended without some of the faboulous works of Stephen King, Terry Pratchett, etc.

Obviously, I’m not saying that everyone that starts being a software developer should be forced to stay as a software developer. Of course sometimes you have to try things first in order to know whether you like them or not. And lots of people find that they don’t like it that much, or they find some other path that makes them become much more realized as professionals. That’s great. To see a good structured catalogue of several ramifications in the Software Industry, read here.

What I’m saying is that a vocational programmer who wants to spend all his career being a programmer should be declared an endangered species and thus, protect their environment with specific incentives that allowed them to stay being programmers, without being forced into exile to other lands.

Towards or away from the mountain

If you are planning to join this beautiful profession that programming is, or you already are immersed in it, let me share with you a focusing method that I learned from my admired and loved Neil Gaiman. It can be applied to any artistic craft (something programming certainly is). Mr. Gaiman, in this speech, said the following:

Something that worked for me was imagining that where I wanted to be – an author, primarily of fiction, making good books, making good comics and supporting myself through my words – was a mountain. A distant mountain. My goal.

And I knew that as long as I kept walking towards the mountain I would be all right. And when I truly was not sure what to do, I could stop, and think about whether it was taking me towards or away from the mountain. I said no to editorial jobs on magazines, proper jobs that would have paid proper money because I knew that, attractive though they were, for me they would have been walking away from the mountain. And if those job offers had come along earlier I might have taken them, because they still would have been closer to the mountain than I was at the time.

Neil Gaiman

Inspiring words, aren’t they? So it’s not only that you must go to the mountain because the mountain will not come to you; it’s also that some sirens will definitely try to stray you from reaching your destination on your way to the mountain. No worries. Keep calm. Keep focused and enjoy the journey.

My mountain is the code. And yours?