What Happens to Older Developers?
https://news.ycombinator.com/item?id=7427542
update@201509: see 以后老了我能做什么
http://christfollower.me/#D140313ADVICE
Don't let this happen to you. For what it's worth, here's my advice:
- Don't fall off of the employment ladder.
- Become a specialist. Try to remain broad enough, though, that you don't become obsolete.
- Build a network of people. Make it a large one.
- Diversify your investments.
- While you're employed, don't let medical issues, even minor ones, go untreated for long. If you lose your job and your assets, you'll lose medical care too and the issues may become serious.
- Be kind to people. But don't be a fool. Most people that you help are not going to return the favor.
Regarding specialists, I did recruiting for a while in 2011 and I can confirm that the filters are weighted against generalists. If you're a generalist who falls off of the ladder in middle age, you can expect things like this:
With a resume like that, why isn't he a CTO? Why doesn't he even have a job?
You'll be asked questions about algorithms that you haven't thought about for 30 years. Or you'll go through coding tests under adquote conditions that don't allow you to show what you can do.
https://news.ycombinator.com/item?id=7372997
The 3 main learnings that I've leveraged to get that high are:
- be the top performer on your team, no excuses
- ask very explicitly for the things you want ("I'd like a raise" != "I'd like my salary to be $X")
- negotiate from a position of power (have a BATNA: http://en.wikipedia.org/wiki/Best_alternative_to_a_negotiate)
===
- Be alert to pure, dumb luck when it happens, and willing to take advantage of it - including dropping previous plans - when appropriate. I thought I would always work in small companies or startups, but I applied to Google in the depths of the 2008 recession and somehow was accepted, so I figured I'd give it a try. I've been there 5 years, with a fairly generous option grant, and the stock price has quadrupled in that time.
- Always hone your skills so that when an opportunity arises, you can pounce. I learned a lot of Javascript in my previous startup, and in 2008 (and now), that was the hot skill that everybody wanted. Learn things even if you don't know they'll be useful, particularly things outside of your comfort zone; you never can tell what connection will be important in the future.
- Be curious about the world around you, and in particular, about what the people around you are doing. Every single job I've had, I've gotten through my network. In some cases, those connections were several years old, but I reached out and asked them what they were up to and it turned out what they were up to needed people.
- Don't be afraid to leave when you've outgrown a place.
===
FWIW, the few folks I know who tried to stay on purely technical paths ended up regretting it many years later. While the ones who went into management merely lamented the loss of their hard earned technical skills.
Anecdotal, and I know there are lots of people on HN with counter anecdotes, but think forward 10 or 20 years and see if the things you don't like about your role are things you can continue to tolerate or not. The grass isn't greener on the other side, but sometimes new problems are easier to handle than the same old problems over and over again.
Q: >FWIW, the few folks I know who tried to stay on purely technical paths ended up regretting it many years later. Why?
A: I think a lot of it was career envy.
You see people who you hired as young developers end up, years later after going the management track themselves, in regular face to face interaction with the CEO or senior corporate executive VP or whatever.
Their peer group seems to have more control over their own destiny or more power or however you want to frame it, while they're still stuck bootstrapping yet another CRUD framework for the nth time and answering to a department head who's now younger than they are and getting younger every day.
I think, when that inflection point comes, you have to decide if you're okay with being in that position, and if working with the tech is enough for you…for some people, they honestly don't care about the careerism bit and just simply enjoy the bit twiddling and never get tired of doing it. You really have to decide if you're one of those people and it can be really hard to do so.
One mistake I see often is people, hitting that inflection point, conflating the pride they have in the effort they put into gaining the knowledge they have as being the same thing as the love of the art. And also the fear of jettisoning that life-style (and yes, development quickly becomes a lifestyle), for something entirely new and different with an entirely different set of skills that often have to be learned from scratch.
Big companies try to have career paths for technical people. They claim "Distinguished Engineer" is the equivalent of a VP. However, it's really hard to get promoted to the few coveted DE positions, whereas a fresh batch of VPs are anointed every Monday.
===
Excellent post. I think that what happens after 30 is that you have to become an X Who Programs. http://michaelochurch.wordpress.com/2012/08/26/xwp-vs-jap/ "X" could be manager, game designer, entrepreneur, data scientist, or architect. If you do that, age doesn't matter. If you can't, you're fucked.
You can still code, but you'll usually need a "Director" or "VP" title (increasingly, you see Directors and VPs without reports, perhaps as organizations realize they actually need experienced people) after 40, because you're going to know (one hopes) how to do things right and be infuriated if you don't have the organizational credibility to do things properly.
The technical skills that non-techs evaluate us on are the constantly changing, coarse familiarities, and the PYTs they listen to are going to be similarly biased in favor of hot new flavors. This isn't a meritocracy because, in truth, it's only easy for a good person to prove he's good through technical work if he either (a) controls the tech stack, or (b) selects a company with a tech stack he's already well-matched with. The problem with (b) is that companies are always changing their tech stack (hence, the zillion pointless flamewars). Otherwise you have to get some other, more legible, credibility (the "X") and transfer it over to technical decisions.
===
- Programmers don't usually make good management role. This has evidence in neuroscience. People who become manager earlier in their career usually are the kind of people who are not STEM type but sales type, and their difference usually show in early age and lead to very different life journey. Convert yourself into a role not fit not only bring suffer but potentially a career suicide.
- Architect or senior specialist, this is probably the most nature and common development as programmers age. However, most of them often become technological dinosaurs when distance self from hands on works and not able to keep up for too long. Analysis turns into paralysis, abstraction turns into distraction. Their value is reflected mostly in legacy system of those business functions slow to evolve. But every ten years or so a major platform revolution usually throw them off the bus.
- Get into other profession where their long time disciplined training as a programmer can benefit. As stay out of the pressure of fast pace technology evolution, this career could be a winning path if you're never a passionate programmer and ok to settle for a 9 to 5 job waiting the day to retire. But the problem is, most programmers are never the type of person who can settle with these kinds of work to begin with. Admittedly many are, who have programming as a 9 to 5 job, would find this path with ease if money is not a priority.
- Entrepreneur at an older age. The upside of this path is obvious. Years of experiences go both technology and human will greatly benefit your business operation and market. True, this is another form of management, but different from corporate management, the personal achievement, responsibility, idea, build, essentially a manifestation of programming at its grind level. If programming is toy play, running a small business is the real deal. If you're ever good at programming, it shouldn't very different to create once own business.
===
I'm 60+. I've been coding my whole career and I'm still coding. Never hit a plateau in pay, but nonetheless, I've found the best way to ratchet up is to change jobs which has been sad, but true - I've left some pretty decent jobs because somebody else was willing to pay more. This has been true in every decade of my career.
There's been a constant push towards management that I've always resisted. People I've known who have gone into management generally didn't really want to be programming - it was just the means to kick start their careers. The same is true for any STEM field that isn't academic. If you want to go into management, do it, but if you don't and you're being pushed into it, talk to your boss. Any decent boss wants to keep good developers and will be happy to accomodate your desire to keep coding - they probably think they're doing you a favor by pushing you toward management.
I don't recommend becoming a specialist in any programming paradigm because you don't know what is coming next. Be a generalist, but keep learning everything you can. So far I've coded professionally in COBOL, Basic, Fortran, C, Ada, C++, APL, Java, Python, PERL, C#, Clojure and various assembly languages each one of which would have been tempting to become a specialist in. Somebody else pointed out that relearning the same thing over and over in new contexts gets old and that can be true, but I don't see how it can be avoided as long as there doesn't exist the "one true language". That said, I've got a neighbor about my age who still makes a great living as a COBOL programmer on legacy systems.
Now for the important part if you want to keep programming and you aren't an academic. If you want to make a living being a programmer, you can count on a decent living, but if you want to do well and have reasonable job security you've got to learn about and become an expert in something else - ideally something you're actually coding. Maybe it's banking, or process control, or contact management - it doesn't matter as long as it's something. As a developer, you are coding stuff that's important to somebody or they wouldn't be paying you to do it. Learn what you're coding beyond the level that you need just to get your work done. You almost for certain have access to resources since you need them to do your job, and if you don't figure out how to get them. Never stop learning.
===
I care much more about the solution as a whole than the technology. While the technology is important, most clients care more about correct results. From the business side, nobody has ever tell me "Thank God you used TDD over Angular with a no Sql database". But on the other side, I have seen software that crashes every other time they run, but big companies still willing to pay in the 6 figures to use, because when it runs, it solves a very complex problem for them. So understanding the whole solution, and why is valuable, has become much more important. And that is what has kept me as a valuable individual contributor.
I went into management for a while, found a few cultural differences, like that Indian woman are way smarter than most of team members. Also with younger people, some of them need to be professionalized before they can be fully useful, once I got one that sustained that being late to work because he was drunk in a party the previous night was a reasonable excuse because he was the king of JS in his shop. Didn't last 6 months.
===
This has always bothered me since my early twenties: my Dad was a programmer into his 50's (albeit, as a manager too) but he'd actually risen to those rank from an engineering apprentice so it's a bit different.
For me, there's the obvious path into management but being good at your trade does not imply you'll be good at management.
I think there's a more subtle path too: consultancy. I particularly like consultancy because you can start off basically as a freelance developer and gradually raise your profile into project management (if you own a consultancy team) or architecture design or CTO-type problems. It's much easier to get away from the code whilst still avoiding the management trap.
Of course, that assume the need to move away from the code but I know I don't learn new technologies quite as well as I did 10 years ago and that'll only get worse over the next 10-20. Also, as you get older, you generally need to find higher-value activities and a monkey coder is not top of that pile.
===
Developers should be growing to become bridges between business and technology. Businesses rarely have technology problems. They have business needs that technology might help solve. Even though most businesses are becoming software businesses regardless of industry, it's from the perspective of managing the details of their business.
Learning and delivering strategy is far more valuable than just tactics (latest hip language/framework/stack), because a solution doesn't exist just in programming alone, but a combination with policy and process.
As you grow, you can become a strategic aligner that is not dishonest about using the latest toy at the expense of your customer's growth.
===
Don't listen to what anyone who says that you can make as much as a programmer as a manager. The best programmers in the world with no management experience are going to cap at much less than a million a year in 99.9% of cases. Usually 400k or less. That's still good, and if you are happy with that stay a programmer! Just don't justify it saying that's the most you could make.
People who go into management literally have no cap in earnings. There are people who started as engineers and worked their way into senior management and even C suite positions. These positions can pay 7 or even 8 and in some cases 9 figures a year. The cap is much, much higher than you could ever make as just a programmer.
===
My manager is at least 55+ (he retired, but came back because he was bored) - he writes code all day. My CTO is 50, he also writes code (though not as much as my manager). From my (limited) experience, it looks like, as we age, we have these options:
- Continuously learn new things - this negates the "old man" perception in the industry
- Be good (not necessarily bleeding edge) in programming, but have good domain knowledge (this ties us to one domain though) - these kind of people are very valuable, as most programming jobs don't need bleeding edge skillsets.
- Become a suit.