Switching jobs works well when developers are in their 20's. But I've found in the 30's that a number of factors combine to make it much less attractive:
1) Each jump becomes less and less. There's an invisible salary cap for software engineers. By the time a software engineer is in their 30's, they've jumped a few times and are already close to the maximum.
2) There are costs associated with switching jobs. There's a risk that the new job could be far worse (team, boss, culture, etc.). And you start at zero reputation and connections at a new company. The lack of reputation often means less flexibility and influence since the others at the company don't trust you yet. The rewards are greater than the costs in the 20's, but usually not in the 30's.
3) It also happens to be the time when many get married and have babies. This increases the risk factor.
4) For total compensation there seems to be two tiers of companies, the top tech (google, facebook, amazon, etc.) and everyone else. I've noticed the big difference is not the base salary (top tech only pays a few % more). The really big difference is cash bonus + stock (RSU).
5) Unfortunately, the interview skills required to get into the top tech companies is biased against older software engineers. For an engineer in their 30's college is a long time ago. They could spend time getting algorithm books and studying, but there's less free time at this stage in life. So the only big jump that's worth it financially (top tech company) is very difficult to do.
Young developers should save 50% of their after tax income.
In some ways, this industry is awesome: to be able to make six figures in your early 20s is an incredible benefit and potential head start on financial independence.
In other ways, this industry is incredibly cruel: you will run into age discrimination and the other headwinds mentioned in your mid 30s, if not earlier.
I tell the folks I mentor to think of themselves as professional athletes with a 15, maybe 20 year career.
"I tell the folks I mentor to think of themselves as professional athletes with a 15, maybe 20 year career."
what terrible advice! Please stop "mentoring"
"Young developers should save 50% of their after tax income." I wonder how long it's been since you were young. While saving early is likely a good idea, it's also the time that student loans, young families, buying houses etc are all huge costs that very likely making saving much impossible. It's also a time to have fun, travel, enjoy life.
I've been a software developer for 27 years and have encountered none of the "incredibly cruel" discriminations you suggest. It's definitely true and I see this often that many as they age don't bother to stay current, they get stuck in old ways and don't want to keep up to date. But for those that do, those that stay at the forefront of their field there's no discrimination. You just have to be better than the rest, whether you're 20 or 50.
I actually think more people should act as if their career is going to end in 20 years. Thinking in these terms really drives home what you need to do if you want actual financial independence. Even if the goal is not realistically attainable, it shows you exactly where you stand.
Let's say you think $1M is good enough for your notion of financial independence. Well, how can you accumulate that amount in 20 years? One way would be to invest $2750/month. If you can manage an average annual return of 4%, you'll hit the $1M mark right after 20 years. If you start at 25 (giving you a buffer period after college to grow some roots), you'll be good by the time you're 45.
Note that in this case, "financial independence" doesn't necessarily have to mean that you're wealthy enough to live your picture perfect life without ever working a day again. It could simply mean that you've reached a point where you don't need to save more and could take a 50% paycut without any serious long-term implications for your retirement. An example might be that you make low six figures up until age 45, surpass the $1M mark in investments, and then you get hit by ageism and your income drops by half for whatever reason. You're not going to be saving much anymore unless you make lifestyle changes, but you've still got the million bucks in the bank. The drop in income has impacted your ability to save and invest more, but it has had no effect on the savings you've already amassed, and it's still good enough to sustain your comfortable lifestyle with more modest savings.
Keep in mind software dev salaries often aren't as high in states outside of CA and NY, especially when working for smaller companies and companies that aren't tech-centered. Saving $2750 per month would be far too difficult for many software devs in other parts of the US.
I do agree that saving a lot early on is a good idea though.
One big life hack is to learn to balance salary with cost of living. It isn't always about pursuing the highest possible salary, because that might mean you're paying most of it in rent.
Consider a $75k salary in Texas. That's $4766/month net (or thereabout), due to lack of state income tax. Let's say you pay $1k/month in rent (very realistic for most of Texas). That leaves you with $3766. That $2750/month figure won't be too far off if you don't have any dependents and live frugally, especially if you take advantage of tax-advantaged savings (like a 401(k)).
The thing is, you can make more than $75k in Texas, especially once you've got a few years of experience under your belt. So while I completely agree that it's not going to be attainable for everybody, I think it's not so far off as many might think.
Absolutely. Unfortunately, I live in a state where housing costs tend to be unusually high, with salary not that much higher than average to compensate (Maryland).
I just got out of DC myself - the salary in the region definitely does not match up to the housing costs. You can get a little smaller apartment in Silicon Valley for ~$2k and make significantly more money out west, which was a powerful incentive to move out of DC for me.
Saving is especially a challenge for me since I have an extraordinary amount of debt from a bad family situation financially - it's a miracle I landed in such a high powered career as software engineering. I have more debt than most in the profession I believe (~$200k, no house or car), which is just a bad luck of the draw. However, for me this underscores how much harder I have to work to succeed even more so that I have more of a fighting chance against my financial odds.
It's completely accurate. It already takes into account federal taxes, medicare, and social security witholdings. It does not take into account 401(k) deductions. It also assumes no copay on insurance, which is the case at many tech companies.
I've done a lot of work in human longevity estimates. I strongly recommend you think of your life planning as lasting 60 years after college. If you think you can work twenty and live for forty off that, well for you.
There is a demographic shift and a lot of things are going to be different in 30 years. Plan for life-long learning and be able to be valuable in a changing environment. My 2c.
I think you might have misunderstood me (or I've misunderstood you). The whole point I was trying to drive home is that life is long--60 years after college is a good number--and so acting as if you only have 20 years of good work to prepare for that shows how important saving really is. Like I wrote at the end of my post, the idea isn't to literally retire after 20 years of working, but rather to get yourself in a position where you could suffer a large loss of income--say 50%--without a major impact on your retirement prospects.
The idea is to use the most productive and highest-earning period of your life (per the hypothesis that the tech industry is ageist) to amass savings, so that you don't have to worry about socking away for retirement later on in your career if you ever do face problems with your age.
I appreciate your interest in this topic and don't mind the personal criticism. I am sure some younger developers will read this, so for that reason I will respond to some of your points.
<< I wonder how long it's been since you were young. While saving early is likely a good idea, it's also the time that student loans, young families, buying houses etc are all huge costs that very likely making saving much impossible. It's also a time to have fun, travel, enjoy life. >>
These are all great excuses for not saving. Life doesn't care about your excuses. You either find a way to do it, or you don't. Some people will have such severe extenuating circumstances that saving much or anything is impossible, and my heart goes out to those people (and my respect for fighting an even harder battle than the rest of us). But the majority of young, employed developers can do it. Having fun, traveling and enjoying life in your 20s sounds great (and you can afford some of that even saving half your net income); but what about being in debt and living paycheck to paycheck in your 40s, with the stress of a spouse and kids to support? Having substantially no safety net to quit your job or take risks, so that you become enslaved to a safe job even if you hate it? The parable of the Ant and the Grasshopper is as true today as it was 2500 years ago when Aesop put it into his book of fables. And the truth is, having fun, traveling and enjoying life is great at almost any age, and much easier to do (and more enjoyable) with some financial independence. Saving when you are very young yields such huge benefits due to compound interest over time that it looks like a magic trick.
As for me, my experience is anecdotal but I did live through some incredibly hard times, including living in my car and with roommates in shitty apartments, and eating off the dollar menu at McDonalds for a long time (not recommended), and making a lot of other sacrifices in my personal life to get to where I wanted. I also had a lot of fun, traveled very cheaply with lifelong friends and had a great time. It's a balance, but not one that most people seem to strike very well.
<< I've been a software developer for 27 years and have encountered none of the "incredibly cruel" discriminations you suggest. It's definitely true and I see this often that many as they age don't bother to stay current, they get stuck in old ways and don't want to keep up to date. >>
I didn't imply that your interviewer would be ''incredibly cruel'' as in they would sneer and snicker at your age and you would encounter an environment of overt hostility and rudeness. I meant the transition from being ''hot'' and persistently courted by many companies and recruiters to no longer being as desirable can be confusing, painful mental whiplash. Having known a few professional athletes, the parallels are actually pretty apt - it's hard to go from the spotlight to the background for anyone. I agree with you that many don't bother to stay current as they age, and they should. Continuing education is not stressed enough in our field.
<< But for those that do, those that stay at the forefront of their field there's no discrimination. You just have to be better than the rest, whether you're 20 or 50. >>
I think this is demonstrably false, with a few rare exceptions. There is an age bias in our industry and it doesn't help anyone to pretend like it doesn't exist. In most startups and some company cultures it is worse, and in some company cultures it doesn't exisit at all, and in most companies it probably falls somewhere in between. I'm not saying that developers are unemployable after a certain age - they aren't, it's still very easy, relatively speaking, for them to find a job, but it might not be the job they want or the company they want to work for. Financinal independence gives them the freedom to pick and choose, or start their own company, rather than becoming sucked into slavery within a system that appreciates them progressively less and less each year.
Many people retire at 50 or 60 and don't die until 80 or 90 these days. Thats 20 - 30 years of living often while dealing with very high medical bills and health problems which can make work impossible. Everyone (not just programmers) should realize that their retirement situation is similar to professional athletes.
Programming is a hot field now and won't be in 20 years. Everyone in every country in the world is learning to program. Thanks to the internet its going to be a global employment market. Competition is going to go up. Salaries are going to go down.
Movies and popular culture say you have to enjoy your youth. I can sympathize with that, but as much as it sucks to work hard during your twenties, it would suck a lot more to work hard during your 60s or 70s when you are less healthy. Don't procrastinate.
If you save 60% of your salary you can retire in 13 years.
If you save 80% of your salary you can retire in 6 years.
Agreed that it can be difficult to save right out of college. Due to my relatively low entry-level salary, as well as college loans and living expenses, I didn't start really saving/investing until I'd been out for ~4 years.
The problem is, though, starting saving/investing even just a couple years sooner can turn into much higher returns down the road, so it's a good idea to start that trend as early as possible. If you can find investments with a higher yield than your loan interest rate, it can make sense to pay the minimum on your loans and carry the debt for a while.
Nowadays I do save more than 50% of my income, but I also have no dependents or debt.
>> I've been a software developer for 27 years and have encountered none of the "incredibly cruel" discriminations you suggest. It's definitely true and I see this often that many as they age don't bother to stay current,
It happened to me. I did and do stay current, there is a perception among management, especially in UI development that only college grads get the new stuff. The old folks only know how to do back-end well is their perception. This is why enterprises fail, clueless management.
As a 20-something developer, I appreciate and agree with your insights.
Also, I give you credit for responding in a mature way to some of the overly harsh responses to your comment. I guess that some level of gruffness comes with the territory of HN's matter-of-fact debate culture.
> Young developers should save 50% of their after tax income.
As someone who travels overseas once or twice a year, goes out all the time, I still manage to save>50% of my income. I don't have a car, cycle everywhere, live in a great share house, always look for deals (for traveling and eating out), and stay in the cheaper hotels/bus it around.
Yes and no. Saving cash makes little sense in the current financial environment, once you have your rainy day fund of 3 months living expenses. Buy an apartment or a house and put the extra cash into overpayments, you can't retire after 15 years but you could own your home free and clear.
Keeping it cash? No. Putting it in a 401K, IRA, or market based account certainly does have much greater benefits. And of course, once that grows you can most certainly retire after 15 years. Or at least be financially independent and choose your working environment.
People should try to save early however for most people working a "normal" software development job being able to retire after working for 15 years is unrealistic. Learning to live frugally and to invest wisely are useful traits though.
I've never switched jobs to make more money. In every situation where I switched a job my current employer was willing to match my offer. I will switch jobs to work with smarter people, to work on more interesting problems, to work with newer technologies, or to fight boredom. In theory I would switch to a job with lower pay to satisfy other requirements but luckily I never had to do so.
I don't think there's much to the professional athlete analogy. There is virtually no "demand" for more professional athletes while the demand for good software developers is ever growing and is unlikely to show any sign of slowing down. There are cycles but the trend is up. It is also really hard to be a good software developer and requires a combination of aptitude and attitude.
I work for a US startup and I know we do not discriminate by age (if anything older developers are over-represented). In companies like Google, Microsoft, Apple, more experienced developers (in their 40s and 50s) are pretty well represented (keep in mind that as you go back in time the % developers is naturally less simply because the industry was much much smaller). Saying that I realize that in some places simply being a bit older would be seen as a poor fit and definitely someone who is just starting to code in their 50s is not going to be looked at the same as someone out of MIT.
Another thing to realize is that software development is an immensely wide field. I think your advice is reasonable for someone who has only started writing code in school, works in relatively "easy" areas where a lot of expertise isn't required, is really in it for the money and approaches things with that sort of cold success driven attitude. People who have talent, go deep into their fields of study and are highly motivated are probably looking at a much longer successful career. [EDIT: In other words it depends on what types of software you work on, your abilities and passion, and your further ability to maintain your abilities and passion and expand your knowledge.]
That said there's absolutely no way to project what the world economy or job market will look like 20 years from today. There are likely to be pretty big changes. One can imagine a much larger % of the population working remotely. One can imagine some breakthroughs related to aging that will make the entire age issue moot. Who knows. My advice to juniors is to strive to be the best at what you do. If you're the best you'll always have a job. Professional athletes don't always stop working when they're 30-something, they can become a higher paid coach. They can work on TV. Lots of options. By the way the average age of athletes has also been creeping up.
> In every situation where I switched a job my current employer was willing to match my offer.
Doesn't that bother you?
That means in every instance, your current employer agrees that you're in fact worth more than they were paying. Why weren't they paying you that in the first place?
For these kinds of negotiations, I'd expect a 6-month back payment at the matched offer rate.
The answer to why your employer isn't paying your "worth" is because there's no such thing (or at least it's incredibly hard to measure). There's no real price discovery happening (and even in markets where there is discovery prices can fluctuate wildly).
Here's one interpretation: People are willing to get paid less if there's something else that can make up for that fact. I wasn't looking to trade something else for money which is why the "deal" of offering me more money didn't work. I see it as more about culture.
But then again, if I look back, the things that I am looking for have also changed. So sometimes "It's not you it's me" :-) is really true. I used to work for a great company for a long while and I'd still be very happily working there if they hadn't been acquired and flushed down the toilet (culture + business broken). In a sense selling the company is the most selfish act a company can perform vs. its employees. Otherwise I might have been making a little less money, producing a little more value and a little happier. Our economy sucks at optimizing these things.
"In companies like Google, Microsoft, Apple, more experienced developers (in their 40s and 50s) are pretty well represented"
For sure, that's one of the prime reasons I moved to a tech megacorp from the startup world, I wanted to be at a place where I wasn't the "senior developer" at the age of 30. Smart companies value experienced engineers.
I think a lot of the people who got the short end of the stick are the ones who followed the traditional path of staying in a single company forever and developing their skills in a single area - specialization is a blessing and a curse.
This is a great explanation. It's also called "golden-handcuffs".
In your 30's, I think you need to start thinking about exit-strategy (saving enough to live financially independent), rather than hopping to yet another job.
Then, you can job hop down in salary and do something more fun.
Effectively you need to become a force multiplier, leverage your high level experience into a role that allows you to add value to 10 to 20 people rather than just yourself. eg. You were a 10X coder, now become a 10X manager.
Also, if you spent your 20s building up contacts it becomes pretty easy to start a business serving the needs of your particular niche in the industry.
Management and starting a company that grows beyond 8 people require pretty much the same leadership skills.
I have no idea what makes you think a 10X developer can just "become" a 10X manager. This tendency of programmers to think they are automatically qualified, let alone interested, in being a manager is baffling to me. They are two mostly unrelated disciplines and in my experience, most programmers are not cut out to be managers.
Agreed, and also I suspect (or maybe this is just a silly hope) that the best developers in a company can often make more than their manager, even if their manager is great.
Now, moving up to director or VP level or higher (assuming you have the aptitude and desire), is a different story.
Yes, the best devs will generally make more than their mgr, however, the best mgrs will make far more than the the best devs.
And as you said, the target is really a VP/Director type position, using mgmt as a stepping stone.
It's like how a Sergeant makes more than an Lt in the Army, however, the progression in the officer core quickly outstrips the best an enlisted man can hope for.
The great thing about leadership roles is they're typically very transferable, there's not many orgs that don't need good leaders.
> It's like how a Sergeant makes more than an Lt in the Army, however, the progression in the officer core quickly outstrips the best an enlisted man can hope for.
Not in the U.S. Army. Most junior NCOs make less than even a fresh Academy graduate. The NCOs making more than a junior lieutenant have all been in the service for 10+ years.
Agree completely. I have a team leader and a manger, with junior to intermediate experience in development and zero formal training in management. Frustrating to work for. I guess if we were both to apply for the same job, it would be a case of "well that guy has management experience", and give it to my team leader, despite the fact is is a poor coder, and an even worse manager.
A subtler effect is the income vs cost disparity. Suppose you make 60k and consider 50k to be a minimum income to live comfortably well a 70k job doubles your disposable income which is a big deal. Now suppose you make 120k and get a similar percentage bump to 140k. Except your minimum standard of living is still 50k. Sure, it's a larger Monitary increase but it's no where near doubling your disposable income and would have minimal lifestyle impacts.
"Unfortunately, the interview skills required to get into the top tech companies is biased against older software engineers"
Maybe that's a good thing. A "top tier company" will squash you like a flea if they don't need you or if profits need to be boosted for stockholders and heads need to be cut.
For sure any company can do this. But my feeling, observing business over many years, is that a company that is extremely attractive to job seekers has less to loose by doing so. They will always have talent lining up at the doors wanting to work there no matter how tight the labor market is later on.
> 4) For total compensation there seems to be two tiers of companies, the top tech (google, facebook, amazon, etc.) and everyone else. I've noticed the big difference is not the base salary (top tech only pays a few % more). The really big difference is cash bonus + stock (RSU).
This is partially true (IMHO). What the other companies provide is potentially higher upside with a lot greater risk. Younger people, or rather those with less life responsibilities, are more likely to make that trade-off. Equity in a startup might go 10x or even 100x or, hell, 0x. None of these is likely to apply for Google, Microsoft, Facebook, Amazon, etc.
> 5) Unfortunately, the interview skills required to get into the top tech companies is biased against older software engineers.
I disagree with this assertion. To be a software engineer is to be in a constant state of learning. Period. It's true that those with less life responsibilities will have more time and greater inclination to spend outside work time learning new things. I mean this in a general rather than specific sense. But that's not biased against older engineers. Those with more life responsibilities have simply made certain choices.
Put it this way: in many professions married people with children work full time and then go study part-time to get a Masters or some other qualification. It's demanding, sure, but it's a choice and it's certainly possible.
I think it's true that in Silicon Valley there is _some_ bias against older engineers. You see this in terms of starting salaries and signing bonuses for the better grads from Stanford, MIT, CMU, etc. These can be a significant percentage of what someone with 10 years experience working at exactly the same company is earning.
But life responsibilities or not, no one owes you a living. Those who invest time to maintain and improve their craft are, as a whole, going to do better in the long run. There's nothing ageist about that.
>> I disagree with this assertion. To be a software engineer is to be in a constant state of learning.
3 years ago at age 47 I interviewed at a promising game company in Austin, TX. The first thing the smug young guy said after weighing my resume by holding it in the air in the palm of his hand was, "pretty long resume, huh?".
I game every day, I developed a simple game for fun in the 90s'. I get gaming and what gamers like. I can do programming, hold my own with new or old technologies, do front-end, back-end, embedded, you name it and the most important thing he had to say to me was, "pretty long resume, huh?".
Come to think of it, many places I've interviewed at in Austin are like that, I call it the UT attitude.
"For total compensation there seems to be two tiers of companies, the top tech (google, facebook, amazon, etc.) and everyone else" - not really, though, it's the financial sector. We are talking about global picture, right? Or is the discussion focused on just one single country?
For 5. having a lot of experience interviewing the kids coming out of college can outweigh the fact that college was a long time ago. If you interview 1-2 candidates per week for 10 years, that's 500-1000 interviews!
According to Glassdoor, Google pays 200k average and up 300k for software engineers. The industry average hangs around 100k for pretty much any salary data on the internet.
Quote from my manager after a candidate turned down our offer: "We're not Google". This is responding to the candidate's "unreasonable" salary expectations.
So yes, I do believe there are companies paying significantly more.
there are 4400 software engineers, but only 285 senior software engineers that shared their salaries. Not sure if that's the actual ratio, but I'm sure it's not too far off.
After you've worked for 4+ years, a typical yearly RSU refresher adds up to around $80k+/yr. Add in $150k+ base salary and bonus and it can easily hit $200-300k or higher.
You're saying you get a yearly refresher that adds $80K/year? After 4 years, assuming no increase in stock price or your grant, the equity portion alone of your compensation would be $320K/year.
I think he means you get an 80k refresher every year that vests over 4 years (20k/year). After 4 years, you have a full pipeline and 4 tranches (80k/year total) vest every year.
1) Each jump becomes less and less. There's an invisible salary cap for software engineers. By the time a software engineer is in their 30's, they've jumped a few times and are already close to the maximum.
2) There are costs associated with switching jobs. There's a risk that the new job could be far worse (team, boss, culture, etc.). And you start at zero reputation and connections at a new company. The lack of reputation often means less flexibility and influence since the others at the company don't trust you yet. The rewards are greater than the costs in the 20's, but usually not in the 30's.
3) It also happens to be the time when many get married and have babies. This increases the risk factor.
4) For total compensation there seems to be two tiers of companies, the top tech (google, facebook, amazon, etc.) and everyone else. I've noticed the big difference is not the base salary (top tech only pays a few % more). The really big difference is cash bonus + stock (RSU).
5) Unfortunately, the interview skills required to get into the top tech companies is biased against older software engineers. For an engineer in their 30's college is a long time ago. They could spend time getting algorithm books and studying, but there's less free time at this stage in life. So the only big jump that's worth it financially (top tech company) is very difficult to do.