What should I learn?

I think all developers have had the experience of being told about the X developers earning Y a day and thinking to themselves that’s the gig I should be in. The X and Y vary of course. The most recent one I came across was X = Kotlin and Y = £1200 but I’ve heard all sorts. My favourite was the guy who was offered £1500 a day to write JasperReports but apparently he didn’t take the offer.

Now, how much of this is coder campfire talk and how much is real is hard to tell sometimes. However, what certainly is true is some skills pay better than others. The jobs market is a market like any other and there is an ongoing process of price discovery to find out what a skill is worth.

Let us suppose for the purposes of this article that the JasperReports story is true. I think there’s a plausible situation where a company needed some reports very urgently and didn’t have time for one of their own Java developers, if they had any, to get up to speed. It’s definitely possible in such a situation that the daily cost of not having the reports written was considerably greater than £1500 a day so it makes economic sense to pay the premium.

It worth noting, however, that this was highly unlikely to be a long term market. If it was an ongoing requirement you would just train up one of your own devs and use the contractor to fill the gap. Also, there is no way a developer could have predicted that there would be this market. It was just a skill that they happened to have that turned out to be in demand. In other words, they lucked out but only for a period.

The Kotlin example is more interesting. The reason for the high rate is presumably low numbers of Kotlin developers. But of course there are also going to be low numbers of Kotlin jobs relative to, say, Java jobs. So, you’ll be paid more for a job if jobs are available but you run a greater risk of not having jobs available when you need them to be. I guess the best approach here is to maintain a dual skill set. Have a bluechip skill like Java together with your niche skill so you can fall back on your bluechip if there are no jobs for the niche one.

The Lindy Effect

The other thing to be considered with having a buzzy skill set is the Lindy Effect. The Lindy Effect seems to have gone through a few iterations so I’ll clarify what I mean when I’m talking about it. The Physicist J. Richard Gott III noted that when you observe things they will be on average at the middle of their lives. So, you’ll see some things near the start of their lives and some things near the end but on average the time that something has existed before you observed it will be half of it’s lives. A corollary of this is that if you are trying to predict how long something will exist we should predict that it will exist as long as it’s existed so far. So, if it’s been around 10 years we should expect it to last 10 more.

If we apply this idea to coding it seems to suggest that if we’re interested in longevity we might actually be better off focussing on the likes of C/C++ and Java, rather than, say, Go or Kotlin. This is not to say that Go won’t be around in 20 years and Java will, it’s just that it’s more probably that this is the case than the other way around. If you’re thinking this is counter-intuitive consider two things in the JVM world. Firstly, who is talking about Scala and Clojure these days? About 10 years a lot people were predicting these to be the future. Secondly, consider the sheer amount of code written in Java. I think even if we stopped writing Java today it would take at least 20 years to rewrite it. If you don’t believe me ask yourself why these guys exist. Java will need to be maintained for a long time.

Leave a comment