
How to avoid the software salary ceiling - swimorsinka
http://thinkfaster.co/2015/07/how-to-avoid-the-software-salary-ceiling
======
ChuckMcM
Moneyquote: _" Now I understand why older programmers complain about rampant
ageism in Tech. Younger workers are cheaper, and programmer productivity is
notoriously difficult to measure, so most companies opt for the cheaper
option."_

Wow that is so spot on, as a "generic" programmer asking $150K versus a
"generic" programmer asking $75K ? Easy choice, we'll get two and double our
productivity and halve the sick days! I noted that in the medical profession
"General Practitioners" made the least, while specialists made the most. They
were all doctors.

Specialist software categories:

Embedded Software - bringing up code without an OS, understanding hardware
function and tools.

Graphics Programmer - these days understanding 3D programming with Shaders and
other features common in todays GPUs

Kernel programmer - understanding the insides of the kernel and how to write
code that works there.

Networking software - understanding all of the intricacies of how packets get
from point A to point B, and what interferes with that and what facilitates
that.

Security specialist - someone who understands what makes programs and systems
break and can program fixes for them or ways to spot attempts at exploiting
them.

Storage specialist - someone who understands file systems and disk drives and
getting data to and from programs reliably.

~~~
sammyo
The issue with a narrow specialty in Tech is that the lucrative niche can
evaporate almost overnight.

~~~
FigBug
Yes if you specialize in a specific technology. Not as much if you specialize
in something more fundamental like audio DSP. you may have to jump between
telephony and pro audio as the markets change, but there will always be work.
And the barrier to entry is quite high.

~~~
eeprom1
Your working conditions and pay don't depend on how bad ass your specialty
sounds, or how technically complicated the work is. They depend on the total
supply of people who can do the work compared to the total amount of work that
needs doing.

There's no escape for grown-up computer programmers. This thread covered the
situation pretty well:
[https://news.ycombinator.com/item?id=9361580](https://news.ycombinator.com/item?id=9361580)

------
bryanlarsen
Good strategy, bad choice of specialties.

There are lots of 3D graphics professionals working on video games, which is a
notoriously over-worked, under-paid field. To hire 3D graphics professionals:

1\. go to a video game hub, like Montreal

2\. offer sane working hours

3\. there is no step 3.

Notice the complete lack of any mention of salary.

~~~
PopeOfNope
Could you be conflating 3d graphics artists with 3d graphics programmers? The
former make 3d models for games. The latter writes 3d graphics systems to take
those models and show them on the screen. The former is relatively low skill
(as you say, it's a saturated market) the latter is very high skill (linear
algebra).

~~~
bryanlarsen
Video game makers employ both, over work and under pay both. Artists make
about $30k, programmers make $50k.

~~~
PopeOfNope
Maybe Montreal just doesn't pay for 3d graphics programmers. Triple what you
just quoted and that's what an average gameplay programmer makes in the bay
area. 3d graphics programmers make more because an average gameplay programmer
can't do what a 3d graphics programmer does. Then again, there aren't as many
jobs for 3d graphics programmers. You'd pretty much have to work for one of
the big graphics engine makers (Valve, Unity3D, Unreal, ID) or a company big
enough to make their own (Ubisoft, EA, Disney).

In Montreal, that's pretty much just Ubisoft, isn't it?

Anyway, the original suggestion was 3d graphics, not necessarily for games.
Lots of other fields use 3d graphics as well. I don't know how well they pay,
though.

~~~
bryanlarsen
150K is pretty much the average salary for any programmer in silicon valley,
though, right?

Autodesk also has a big presence in Montreal, and they do pay better than the
video game makers, from what I hear. My OP was just saying that the best way
to find 3D graphics programmers was to poach from games companies, not be one
yourself. :)

I really don't know the field that well. It's been almost 30 years since I
actually worked in the video game industry. Video game skills that old apply
much better to the (much better paying) embedded market. We don't use
assembler any more, but the experience is actually relevant there.

~~~
PopeOfNope
> 150K is pretty much the average salary for any programmer in silicon valley,
> though, right?

Pretty much :)

> Autodesk also has a big presence in Montreal

Interesting. I'm very interested in the Montreal job scene because I live just
across the NY/Canadian border and have wanted to relocate to Canada for a
while now. Unfortunately, the salaries haven't been there for web development
or game development.

> Video game skills that old apply much better to the (much better paying)
> embedded market.

Do you work in embedded systems? How difficult a field is it to break into?
I've been thinking about shifting in that direction for my own personal
sanity, if nothing else. Doing nothing but building virtual worlds and
websites for a decade makes you long for the physical world. I do, at least.

------
dudul
"Many people reach senior software engineer, and then they get stuck. They’ll
still be a “senior” level developer 5 or 10 years later. For many, getting
stuck is just fine. They like coding, and they don’t want to manage people,
and the money is pretty good."

I have a problem with this part. Basically, being a developer and not making
it to a managing position is "getting stuck". I strongly disagree with that.
Developers and managers have very different roles, a great developer will not
necessarily be a great manager. It's like expecting great athletes to become
great coaches, and if they don't they're stuck?

Is becoming a manager really a promotion? I would argue that in such a hot
market great developers should be making more money than their own manager.

~~~
matt_s
I think he means stuck financially, not career wise since they have chosen to
stay as a developer.

His answer to how to move ahead financially is to specialize. So maybe that is
the general advice is to find something to specialize in or you are just seen
as a commodity by management. If you are a commodity (e.g. general web
developer with X years) then you may not get higher rates.

~~~
dudul
I agree with the general idea. You can remain a "simple" developer and still
ask for more money if you specialize and bring significant value.

I disagree with the idea that moving to a management position means that you
get "unstuck", especially financially. To me, becoming a manager is pivoting
or branching out, not specializing. And as I stated, a manager should not
necessarily make more money than the people they manage.

Do all NFL coaches make more money than their players?

I guess this is what bothers me the most. This idea that a manager should make
more money than the developers. Salaries are in function of demand/supply and
the value that you bring to the table, if it's easier to find a manager than a
developer then the developer should make more money.

~~~
ben336
> And as I stated, a manager should not necessarily make more money than the
> people they manage.

"Should not" is very different than "does not". In reality, managers almost
always make more

~~~
dudul
Agreed. Mostly because managers are in charge of hiring and they would not
hire someone reporting to them and making more than them.

~~~
HeyLaughingBoy
I doubt that has anything to do with it. I've known at least one manager in
the position of hiring developers who made far more than she did.

In the end, you have to do your job. If that job requires that you hire people
making more than you, tough!

~~~
rwallace
Then you've known a manager who was mature and professional enough to place
the welfare of the company above her own ego. Such managers _should_ be the
norm; unfortunately the actual state of affairs is that they are rare and
precious. I hope her employer realizes how lucky they were to find her, and
does whatever it takes to make her happy enough to stay.

------
mattdeboard
I agree with the premise of this article (if you wanna get paid, specialise)
as it strongly echoes my own, perhaps limited, experience.

I am a generalist. I like being able to solve problems across a wide spectrum
of fields. Working at a startup for the last three years has given me plenty
of time for that. The flipside is that I have not had much opportunity to
specialise. I take pride in being comfortable diving into anything. However
this has meant I don't have DEEP knowledge of a specialist.

At a previous job, I was able to dig really deep on Solr and build some
expertise. In the intervening years however most of that has become way
outdated.

Also I've found (in an admittedly limited sample size of interviews) that jobs
seeking "full stack" developers tend to really be seeking someone to fulfill a
specialised role but ALSO be comfortable moving up and down the stack as the
need arises.

So obviously in my next job I've been looking for more established
organizations where my opportunity to specialise in something I enjoy is
greater. I think I've found one and am quite excited about it.

~~~
gsarrica
I know many companies who would rather have someone like you. Someone who they
can give a problem to and they know you can solve it because of your wide
knowledge base. "Sorry we can't give this problem to Bob to solve because all
he knows is tech X." This is worth a lot to some people.

It's also not that you know many things, it's that you can learn other things
easily and quickly. (without training)

The hard part is finding the right place to work at. Many large corporations
are looking for a square peg for a square hole.

~~~
mattdeboard
Exactly on all that you just said. There are places but they are hard to find.
The intersection of "looking for a generalist" and "doing interesting and/or
meaningful work" is tiny.

------
discardorama
Unfortunately, the author does not offer much to actually answer the question
posed by the title.

He does complain about the whiteboarding during interviews, and would prefer
to be taken at his word about his past experience. As an older engineer (much
older than the author, I might add), I can understand the feeling; however, in
my years of experience, I have seen too many people coast on their former
laurels and contribute, basically, nothing to the day-to-day business of the
company. They can talk a mean talk, but never deliver anything of value. They
sure are quick to jump on a hot idea once it's proven out and take credit,
though!

So is whiteboarding the best way to higher people? I don't know; but I think
it is a good way to keep the slackers _out_.

~~~
t0mbstone
Whiteboarding during interviews is a way to filter out people who don't know
how to whiteboard during interviews. That is all.

Some of the best and most brilliant programmers I've ever met were horrible at
writing code on a whiteboard.

~~~
geebee
I don't like whiteboarding interview, and I recently "failed" one. However, I
can see the value in them to the employer.

To pass my whiteboarding interview, I needed first to review data structures
and algorithms. It had been a while, so I went back to the textbook and got to
the point where I could write mergesort, quicksort, dfs, and bfs, as well as
do various permutations of sets (the sort of thing that you draw on when they
ask you, for instance, to print all arrangements of a string), and could do
this instantly (not by rote, through understanding, but "memorized" in the
sense that I didn't have to reason through it, I could just write them on a
whiteboard). Once I had that solid, I bought a copy of "Cracking the Coding
Interview" and started working through the exercises. My goal wasn't to
memorize, but to get to the point where I could answer medium to difficult
level questions accurately on paper or whiteboard (no typing, no compiler) in
45 minutes or less.

I was unable to get to that point in the time I had to prepare. I should have
asked for more time - I scheduled my interview for 3.5 weeks away, and I did
devote a substantial amount of time to study. However, I lack the ability to
get up to speed in that amount of time. You really do need to be razor-sharp
at the whiteboard, and I just wasn't there. My guess is that I could get there
in 3-6 months, studying about 15-20 hours a week. Others may not find this as
difficult.

There was also a point in my life when I could probably have done this more
easily. I have two kids, I'm married, I have a full time job, and there are a
lot of demands on my time. It's far more difficult for me to shake 15-20 hours
loose a week than it used to be.

Honestly, I do think that the ability and willingness to prepare for and pass
an exam like this probably is a very strong indicator of success in the kind
of environment where these developers will be working. In short, the
constraints on my life and my own personal limitations that make it difficult
for me to pass this exam would probably have reduced my value to an employer.
They either need someone with more talent and an ability to get into this sort
of form on shorter notice, or someone with more time who is willing to spend
it on this sort of thing. I'm not happy about it, but there you go.

My broken record: companies are generally free to do as they please (within
the limits of anti-discirmination laws, and so forth), but they should stop
talking about a shortage of developers if this is how they wish to hire.

------
soham
In other words, your worth is equal to your replacement cost. Specialization
helps because of demand/supply dichotomy.

There is another option; grossly unpopular, but I have to lay it out: make a
career in startups. You'll eventually land with one or two that work out very
well. That may not increase your yearly salary, but it increases your overall
payout over a decade, because you'll get a windfall or two.

How? As you keep working for startups, some will fail and some will succeed,
in different ways. Eventually, you'll learn how to recognize the more
promising ones. Are there any guarantees? No. But there are no guarantees in
any path.

(Link to my bit more detailed answer on Quora: [http://www.quora.com/How-can-
I-increase-my-income-as-a-softw...](http://www.quora.com/How-can-I-increase-
my-income-as-a-software-engineer-over-the-years))

[About me: Software Engineer by education and trade. Been in the valley for
several years. Early employee at Box, left last year as their Director of
Engineering. Now run
[http://InterviewKickstart.com](http://InterviewKickstart.com). We've trained
a lot of people on how to prepare for technical interviews, the right way, the
no-shortcuts way]

------
svisser
"I worked at Google so treat me differently" shows up several times in this
article.

~~~
iaw
It's unclear to me if that was his message or if he was trying to get across
the more nuanced "my experience at Google should be a signal about my
qualifications"

~~~
pravka
The latter certainly describes the impression I got from the references to his
employment at Google.

------
EGreg
Or just be a CONSULTANT and raise your rates usng the wealth of information
like patio11.

Seriously, FTE is considered "the" way to fo by far too many people. Is it
really that hard to manage your own health insurance plan and deduct taxes?

~~~
dangero
I've been working as a consultant for a number of years and I think the
biggest difference is the inconsistent salary. As I recall there was a recent
poll someone posted on HN and that was the main reason people don't go into
consulting. Consulting also suits a certain type of person because it's a
hustling game. You can always make more, but that means there's no light to
flip off at 5pm.

~~~
AdrianRossouw
I found that switching to consulting, and charging a day rate is the first
time that it finally _clicked_ for me that I need to stop after 8 hours.

by working longer hours, i was reducing the value of my time. I was also
reducing the value I provided in those hours.

So it ended up giving me more balance than working a salary job.

------
fecak
I recently blogged about this similar topic
([http://jobtipsforgeeks.com/2015/05/20/moremoney/](http://jobtipsforgeeks.com/2015/05/20/moremoney/))
and listed a handful of ways to avoid what I referred to as a salary plateau.
The basic list was change jobs, get promoted, ask for a raise, brand
additional benefits to your hire (network, visibility, etc.),
consult/contract, moonlight or add revenue streams, and specialize.

I haven't read "Career Superpowers, but it sounds like Whitaker did almost all
of these things - moved between Google/Apple, became a nationally recognized
authority, specialized, added a revenue stream (book), and got promoted to VP.

~~~
alain94040
Here's my tip to negotiate a significant raise without burning bridges:
[https://medium.com/@colunchers/how-to-negotiate-a-
raise-9166...](https://medium.com/@colunchers/how-to-negotiate-a-
raise-9166c977645a)

In the end, your salary is roughly proportional to the number of people you
impact. Management is an obvious path, since you directly control a group of
people. But senior engineers can give technical direction and influence a lot
of more junior engineers without having to be formally their boss. Also known
as the technical track at companies such as Intel (principal engineer ->
fellow).

------
zo1
The other thing that's somewhat related to this is the old "X years of
experience means this range salary". Nothing like that cold, hard statement to
remind you that the person across from you sees you as nothing but a cog or
entry in a balance sheet. It immediately puts everything you've done, no
matter how incredible/complicated/significant, down as if it's irrelevant.

~~~
BrainInAJar
That's capitalism. The sooner you stop thinking of your boss as your buddy and
start thinking of the employer/employee relationship as a business transaction
of hopefully mutual benefit, the better.

------
RogerL
"We can't hire 3D graphics people"

"I'm teaching myself 3D graphics"

There's more than a hint here. It's not hard to hire competent people and then
give them space to grow. As engineers, that is what we want, to grow,
challenge yourselves. And it is the only way that experience occurs. If you as
a company are not willing to invest in that, don't be surprised when people
don't walk in your door and agree to do exactly the same things they've done
5x already, with no opportunity for growth.

I'll take a job that offers great opportunity and a mediocre salary any day.
The vice versa not so much.

~~~
genericuser
Just because you are specializing does not mean there is not room for growth
of your knowledge, it just may not be in programming manner.

Consider specialization in say Expert Systems, you get to learn immense
amounts about each domain which you are developing expert systems for, but I
can understand employers wanting you to have a firm base in expert systems
before hiring for you such a job.

The same can be said for 3D graphics, real time simulation software, and most
other types of programming you could specialize. Just because you know
everything there is to know about making realistic vehicles with 3D graphics
does not mean there isn't plenty for you to learn about making realistic 3D
dinosaurs and the nuances necessary to make them look amazing. You may not
always be given tasks that require you to learn and develop new skills, but if
you actually care about challenging yourself and learning you can generally
find a way to incorporate challenges and learning new things into your job.
You just have to be willing to put in the initiative to avoid forcing problems
to be solved with the solutions familiar to you, and put in initiative to try
new things learning enough about them to be able to advocate for their use
when necessary.

TLDR: Just because the job doesn't force you to learn and be challenged,
doesn't mean someone who wants to can't learn and challenge themselves on the
job.

------
applecore
Key takeaway: You should become an expert in a deeply technical software
specialty. Also, bounce back and forth between Google and Microsoft a few
times.

------
dj_doh
I second this wholeheartedly. Unless you are specialized in some vertical with
locally or nationally recognized skills, you are going to hit the ceiling. I'm
not commanding 200-300K salary yet. But story is true for someone earning
150-160K. It seems like 150K is the beginning of the ceiling.

From a company's point of view, it's legit to not offer high salary for
individuals with generic skills and experiences. They can always hire 2 at the
cost 1 engineer. Then pay thru slower productivity, buggy software,
inefficient architecture and so on.

------
fleshshelf
I'm much less stressed about this after I realized it doesn't take more than
10-15 years of saving to become financially independent. It's seriously
stressful to know you have to find a career that can sustain you until 65.
Many people seem to have problems fairly early in their tech careers, with
rampant ageism etc. So I plan on being FI by 45, preferably 40. So liberating
to know my current job could be my last.

------
frozenport
We should have a discussion about default SQL connectivity limits and the
problems with using persistent connections.

There seems to be a ripe opportunity to make something similar to Amazon RDS,
except with automatic scaling. The current version of RDS presents the user
with different instance sizes and doesn't automatically scale during high CPU
loads.

~~~
CognitiveLens
I believe your comment is for
[https://news.ycombinator.com/item?id=9845820](https://news.ycombinator.com/item?id=9845820)
?

~~~
frozenport
The page was showing a `DATABASE ERROR: CONNECTION FAILED!`

------
jblok
What other specialisms aside from WebGL/graphics, and QA, as mentioned, might
be open to a standard web developer?

~~~
svisser
Build / release engineering.

~~~
iagooar
Could you elaborate, please?

~~~
JamesBarney
Many enterprise organizations have a build/deployment process that is archaic,
error prone, and takes lots of time.(in terms of man hours, and deployment
latency.) A build or release engineer comes in and takes that process and
transforms it into the press of button. Basically just build/deployment
automation.

But the benefits to an org are vast for just a couple of months of the build
engineers time. -Deploys much faster deployment, shortening the feedback loop
between end users and development -Is far less error prone. The manager
doesn't have to explain to his boss why development started deploying last
night at 6pm but now it's 10 am the next day and the software still doesn't
work. -No longer has to pay someone to sit there and baby sits builds all the
time.

I've worked with a couple of release experts and they've always been extremely
valuable.

~~~
iagooar
Now that you say it, it is both something I always missed and would love to
do.

Especially, if you work with Rails, deployment / release times can be really
slow.

What about the operations aspect of the job? What is the state-of-the-art
nowadays?

------
ecesena
Nice writeup. I think that the final message to be specialized is great, and
I'd underline that this should come after you proved that you master the
"general knowledge".

This is clearly true for the author, he can specialize on 3d graphics after 3y
web+mobile dev at Google and 3y in a startup, but the assumption that one
could start specializing in 3d graphics from 0 imo is wrong.

All great painters were highly specialized, but all of them mastered the
"general skills" in painting before taking their art to another level.

------
atemerev
If financial side is so important, why not specialize in fintech / quant
software development?

No special education (except for the general interest in finance and some math
— easier than in computer graphics) is needed, and salaries are quite
attractive.

The downside is zero work-life balance and huge stress levels, but everything
has its price.

------
markbnj
>> Error establishing a database connection

Oh... irony?

~~~
moistgorilla
None considering the article has nothing to do with databases.

~~~
markbnj
Fixed now.

