Apparently, there is a perceived shortage of C# and Java programmers. Certainly a good percentage of all job ads are for these languages.
That’s good if you already have these skills, but a much weaker signal when deciding what to learn if you’re a newbie. As far as I can tell you’re not allowed to graduate from high school in India without at least some skill in Java. And every computing course on the planet is based on it. The only difference between good and bad courses is whether you do real programming in C++, Haskell, F# etc as well.
The Ghost of PowerBuilder
You might not even have heard of PowerBuilder; in the 90s this was sex on CD, recruiters would call me up about it even though it was not on my CV ( just in case I’d learned it since I’d last spoken to them) and money pretty much got thrown at you for it. It still exists, as does Visual Basic, the language that helped lower it to obscurity.
There is now work in porting legacy VB to Java and the unfortunate love child of VB and second-rate CompSci grads VB.NET continues its well earned decline. Loads of skills have gone this way, indeed the VB wave was mostly Fortran and Cobol developers who saw an escape route and grabbed it with both hands.
Java stored procedures went from sex to herpes in about six months, and of course Oracle now owns Java. That would scare me, it should scare you. What is the bloody point of this history lesson? It’s not history, dear - it’s economics. You get paid as a function of supply and demand, but there is a lag. Demand for Java and C# has grown, but supply has been growing for a decade.
Java is a better language
... Like I care. Apparently it’s easier than C++ and as a C++ developer turned City headhunter I accept that and see it as bad. At one stage VB programmers were paid more than C++ guys and it was easier, easy money.
Nothing wrong with that, just don’t kid yourself that it is long lasting, that only comes when there is a barrier to entry. As you can learn Java on a $200 sub-notebook there isn’t much in the way.
You may be a superior Java developer, whatever that means, but it doesn’t matter, since it is a well known fact that the pay and productivity of programmers is often negatively correlated. Yep, you read that right. This is easy to prove: look at your team samples of a dozen programmers has been shown to vary by at least an order of magnitude, whatever measure of productivity you use.
I’d bet money that pay in your team is almost entirely a function of number of years experience with a bit of politics thrown in. For people on the same grade at the same firm it’s unlikely that pay varies by as much as 20 per cent. A factor of ten reduced to 0.2. Short version, you’re a commodity, live with it.
When a skill is new and in demand it is easier to get in, they can’t ask for three years' experience in something two years' old. Actually that’s a lie, they do, but at least you can get in with bare competence, not expertise. One interview I had was literally: “You’re an expert in C under OS/2 aren’t you ? Good we need one of those." The banker interviewing me knew neither technology.
As it matures, the entry level goes up and increasing competition for jobs drives it still higher. So starting off in Java now is like walking up the down escalator: maybe you get to the top, but you will be sweating.
It’s less bad for C# because few universities teach it, but the same logic applies. Is there any hope ? No. As a techie you have to gamble your career roughly five-six times between now and retirement. You will get it wrong, and have to take up minicab driving or, if all else fails, government IT.
Answers you won’t like
The first draft of this piece ended on the “No.” above, but I guess El Reg won’t publish a piece that leaves readers so demoralised. When I made dumb career decisions I found that the fact that I’d studied what really goes on in computers to a deep level got me out of some holes because I could more quickly pick up the new toy. Nearly all IT books are “user” level, even programming ones - which is OK for bits of syntax but you need to spend time on algorithms, database theory and most offensively to Java coders, hardware architectures.
Business skills are also a good hedge and although there are (expensive) formal courses I’ve found that, to talk the talk, a bit of time invested in the trade magazines for your industry can make you sound more useful far more quickly.
But the least welcome advice is that you’re going to have to start learning the next skill before this one starts to crumble under your feet. I can’t tell you when the Java bubble will burst and neither can any one else who is being honest with you.
But when it does, the sheer volume of Java people means that any niche “near” Java will get filled up very quickly as the crowd begins to look for the fire exit.That means you need to look at things that aren’t like Java at all such as GPUs, functional languages, AI etc. That’s hard work and you’re doing long hours already, but if you want to keep being paid twice the average person, that what you’ve got to do. ®
Dominic Connor is a quant headhunter in the City. He is currently looking for a "heroically over qualified C++ guy with high frequency trading experience". You can reach him at Wilmott.com.