Answer by Leo Polovets:
Background: I'm in my early 30s, but I've interviewed and worked with plenty of developers who are significantly older than me. Also, these opinions are my own and not my employer's.
The problem is not your age, it's what employers perceive about your age. When you're 40 or 50 or 60, companies assume you want to be an Tech Lead or an Architect or a Principal Distinguished Senior Staff Software Engineer, or something like that. They also assume that you've been getting 5-10% raises every few years for the last 20-30 years, so your market rate might be 50-100% more than that of a 25-year-old with 3 years of industry experience.
Because employers assume you want more responsibility and/or more money than someone who is more junior, the bar for hiring you is generally much higher. If a junior developer doesn't know some best practice, it's probably not a huge deal. If you don't know it, then it's natural to wonder if you're really worth 2x as much as the other candidates.
Some ways to ameliorate this:
- Be an awesome engineer. This goes without saying, but people like, , etc. will always be able to land programming jobs. They are at one extreme of the awesomeness spectrum, but the point still stands that if you reach a certain level (which is far below Jeff Dean), you will be very hirable regardless of age.
- Be an expert in something. This can be a language (Clojure, Java, C, whatever), a field (Database System Design, Algorithm Design, Machine Learning, etc.), or a specific type of software (Fraud Detection Systems, Recommendation Engines, etc.). A lot of these things stay around for a decade or even longer, so if you're an expert in something, you'll be in high demand. Two caveats: 1) you should like your area of expertise, otherwise you won't be happy and 2) over time, things change, so this is a good 5-10 year plan, but not a great 30-year plan. You should pursue new areas of expertise when your current area is starting to go out of style (but don't wait until it's finished going out of style).
- Be open to more junior positions and/or flat hierarchies, especially if you're entering a new software area. If you are okay with medium responsibilities and a medium salary, then you'll be easier to hire than if you only want CTO jobs that pay 150k+. This is a supply/demand thing.
- Leverage your experience. Instead of being "the older guy who needs a higher salary," be the "guy with a lot of experience and great mentor potential." Learn lessons, share them with others, etc. You can be a lot more valuable than "just" a software developer while still being a software developer.
- Live in an area where there's a programmer shortage instead of a programmer surplus. When companies are aching for developers, they're less likely to pass someone up because of age.
- Compound your experience. Assaid, you need to stand out from younger competition, and if you haven't been "leveling up" for the last 10 years, then why would someone hire you instead of another candidate who is cheaper?
- Keep learning new things and experimenting with new technologies. Fresh-out-of-college kids are appealing employees because they don't know everything yet, but they're open-minded and malleable (although I don't like that word because it has negative connotations). One legitimate fear with older employees is that they're set in their ways. You can combat this by demonstrating that you're open to new languages, tools, paradigms, etc.
- Remove graduation dates and older positions from your resume. You might be 45, but if you look like you're in 30s, you can use that to your advantage. Instead of saying you graduated with from the University of Foobar in 1990, just say that you graduated UofF. Furthermore, any jobs you had 15+ years ago can probably be removed without hurting your prospects. I mean, almost no one is going to care about the Perl/CGI scripting you did in 1997, so why reveal your age up front just to mention that?