So for example Java in London tends to be pretty well paid because all the investment banks hire for it heavily, this has also pushed up Java salaries in non-banking role.
The best PHP dev with great negotiating skill probably still makes less than an average Java dev at a bank.
In case you don't remember, we had a discussion about the job market last year: https://news.ycombinator.com/item?id=4214543
You were claiming the hiring market was on fire and that being fizzbuzz capable was about enough to get meetings with hiring directors and that your clients were begging you to find them an engineer.
During that time I was spending a great deal of time applying to jobs, going to tech meetups and interviewing and had very little success despite a track record of successfully taking on challenges in the business world and demonstrable junior-level programming skills. I asked you to your back up your claims and put me in touch with any of these clients dying for an engineer, as you might remember.
Now—about a year later—I've achieved the goals I had at that time. I'm working in a purely technical role building a large site that many, many people use. My compensation is at least in the top decile of both programmers in the US and residents of the city where I live. And one thing that was key to me getting a flood of offers from both large companies and start-ups a few months ago was developing domain-expertise in JavaScript and becoming proficient in several frameworks. Putting up projects on github and contributing to others played a role, too.
There is a high rate of unemployment in the US right now. As a result, many, many people are trying to break into the software world. For new graduates, there's a bit of an open door via internships but it's not at all easy in the general case. I've seen many talented people struggle for months to break in and then suddenly get a flood of offers. There's clearly a good degree of herd behavior involved.
Without the specific framework skills that I had, companies would have had a very long list of applicants to consider before getting to me. And both understanding the frameworks and doing well in the technical interviews required some fairly deep understanding of the language. Yes, the company you work for and the team you're working on have a great deal to do with your compensation. But both of those things are heavily influenced by how skilled you are in what technologies, especially for typical engineering roles. Knowing the right stack can open doors for networking around the front-door, too!
>They're getting compensated for non-Ruby things which happen to be expressed in Ruby programs." I call that winning rather than cheating but to each their own.
I wouldn't call that cheating but I would call it a poor anecdote to generalize from. Some people with a legal background translate contracts and earn a great deal of money for it, but that fact doesn't speak much to the market for translators as a whole or show there's no appreciable difference in career trajectories for translators of various languages.
I would say that perhaps both of you are missing one important component - specialisation. giving off the right signals for a particular niche enables you to credibly sell yourself in that niche (be it email-life cycle products or Angularjs coding)
I read your post from a year ago - you mentioned three interviews, Ruby, ObjC and JS. I would guess that today you would not dream of going to the first two - simply because your strengths lie in JS.
You have specialised - and as such become more valuable. But you could have specialised in many things other than language and still gotten good jobs. A specialist commands more money, due to scarcity and percieved increase in the probability of success.
However I still think patio11 is also right - of two equally qualified specialists, one that is better at marketing and promotion and negotiation is going to do drastically better.
But no matter how good Ramit Sethi is on negotiation, if he goes for a C++ job he is not going to beat out a specialist even if the specialist just says yes to the first offer.
(Little assumption there about Ramit's C++ skillz)
You could however have picked Ruby, PHP, Python, Haskell, Java, C(++), Objective-C (holy crap, Objective-C), Scala, Clojure etc to deep-dive on and would have been just as employable.
To convince me otherwise, you'd have to make the case that all of my professional connections are conspiring to deceive me or that I'm experiencing hallucinations on a near-daily basis and need professional help.
Objective C would have been very strong as well. Many companies of all sizes, including my current one use it. It would probably have taken a successful app on the app store or a stronger resume in order to get the kind of interest I did from top tier companies. Ruby would have lead to openings, but probably wouldn't have done much for me my interviews with Google. Java is used all over the place but from what I've seen, few junior devs without a degree break into the better work. Haskell would have been absolutely horrible--I'd have been competing with freakishly smart people for a small number of low-paying jobs!
The beauty of JavaScript is:
1) It's in the front end of every web stack, so nearly everyone needs it.
2) The MEAN stack (which includes Node and Angular) is a fast rising platform with few people competent in it. Even knowing "old" frameworks like Backbone can lead to a lot of opportunities.
3) In general, there is a bit less conservative of a culture among JavaScript programmers. Java/C/Python shops are more likely to care about pedigree and formal credentials.
And salad. I don't have a link for it but I think salad is huge.
There are tons of other things to do but I don't generally do them. I eat about 4000kcal a day, often go out drinking with my friends, don't sleep enough, and I'm often a workaholic. But I exercise and I eat vegetables.
For the people that ultimately pay the bills, this is the only thing that matters. They don't give a shit what technology you know or what a nice guy you are. They just want it done. To them, the ability to understand their domain, communicate effectively, and get things done is far more important that how you do it. I regularly hear from people who say, "I need x fixed/working/solved. We use y. If you don't know y, then figure it out."
Languages and technologies are only important to CTOs and recruiters. The point when you get beyond them and start talking to their bosses is when your career will really take off, not when you learn a "better language".
While the people who pay the bills think that's the only thing that matters, your ability to confidently market yourself as providing perceived value plays a big part in your payment or salary negotiations, regardless of the actual value you provide.
Unfortunately I, like many others in our field, suck at this. Strangely, I've always found it easier to to market the work I do than to learn to market my own value. I can't even write a short bio without feeling like I'm stepping out of line.
My suggestion: replace the word "market" with "communicate" in your thinking. So:
"your ability to confidently communicate your value plays a big part in your payment or salary negotiations"
So it's not marketing, it's kind of like writing docs for end users. Still not coding, but a little further from "marketing". A small change, but it may give some mileage.
I feel like the term "marketing" is often used by not-so-great communicators to fill a gap of understanding of how value is communicated by those who are doing good business as a result.
I think the same goes for companies. E.g. a user friendly phone, tablet, computer or maybe just a very usable website, is not more expensive because of 'marketing', but because it does a better job communicating with the end user and thus creating a better perception of value to the customer.
150% agree. I had to write a bio when I judged a hackathon last month. It took 2 hours two write, what ultimately became one sentence.
Even at the CTO level, languages and technologies more of a strategic business decision than a raw technical decision. Questions like:
* can we hire enough programmers of quality in this language?
* is there sufficient support available for these technologies?
* is the technology sufficiently mature?
Selection of a core technology can't be purely a "wow, cool" decision at that level, although it may factor in to what kind of programmers you are likely to get (e.g. see pg's old article "The Python Paradox" http://www.paulgraham.com/pypar.html)
Jane St. Capital also does this to some extent by using OCaml, but I don't think that was the primary motivation.
Of course they do. Imagine trying to convince a CTO of a 20-strong company to switch to another, better suited for the business task at hand, programming language for a project with 1+ MLoC written over a course of couple of years.
- How much money are you making for your employer - What are the costs your employer needs to make to allow you to make that money for him
If there's a large and growing gap between the two, you can expect a raise, event if the company as a whole isn't doing too well. If there's a small or shrinking gap, you'll be looking for another job soon. If the gap is negative, you're probably the owner.
In the worst case, I... I mean my made-up friend Bob... has worked on teams that seemed to have no other purpose than to execute the new idea that week, with little or no connection to any actual business value.
Bob has seen this happen too many times for it to be a random occurrence. According to Bob, such engagements/teams are typically funded by the taxpayer or upper management at companies that have more cash than God. Then I told Bob to shut up, because he's in breach of all the NDAs and sometimes people read things on Hacker News.
What would be interesting in this survey is slicing it by industry and years of experience. Do Python programmers in Financial Services make more or less than C++ if they both have 3 years of experience? Which languages show tapering of salary after a certain amount of experience?
Also, the dynamic range among e.g. Ruby programmers of my acquaintance goes from something like $2k a month to $2k a day, not primarily based on skill with Ruby. (If I were comfortable describing the individuals at the high end some people might say "That's cheating! They're getting compensated for non-Ruby things which happen to be expressed in Ruby programs." I call that winning rather than cheating but to each their own.)