Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What happens to older developers?
554 points by JeffJenkins on March 10, 2014 | hide | past | favorite | 358 comments
I started wondering about this in the recent STEM thread. As someone now in their early 30s I'm starting to wonder what the mid-late career as a software developer looks like.

Do you have to go into management to continue progressing upwards in pay and influence? I know this isn't the case at some companies (e.g. Google), but is it rare or common to progress as an individual contributor?

Is there a plateau in pay? Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?

Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?

Is becoming a specialist rather than a generalist the answer?

And lastly: if you're in your late 30s, 40s, 50s, what are you doing at your job? What are the older people in your workplace doing?

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.

My favorite reply so far. I'm 37 and am starting to worry. I haven't run into any issues yet.

I have noticed though that experience become a liability. If you wrote JavaScript for IE 6, a lot of the optimizations and things one did to make sure things worked in IE 6 are no longer necessary. One should be ready to let go of things as soon as they aren't necessary anymore. Always keep learning and know why you do the things you do with code.

Yes. Just keep leveling up, and one day you will be an über-developer that can solve any problem by thinking about it for 2 weeks, then spend an afternoon writing a 100 line bash script.

Sort of. All that experience adds up.

It's funny: I was betting on WPF at the time but it seems dead now, with only some XAML knowledge transferable. Still have to do JS, but at least Angular doesn't suck too much.

Here's a tip: never bet on something proprietary.

Here's my 20+ years of experience working as a contract in Australia.

In all that time I've only ever worked with proprietary tools and have never had trouble getting high paying contract work.

I would say I've done very well betting on something proprietary.

Parent comment had to be qualified a bit: Never bet on anything proprietary which doesn't offer significant advantages over non-proprietary competitors.

Sliverlight would be a great example of that.

LOL. I know guys who have worked the last 20 years on Oracle, and they'll have no trouble finding work for 20 more. The same for Visual C++. Or a whole host of other things. The world isn't as simple as GNU ideology would have you believe.

Yeah, like that article from yesterday about the Perl6 guys doubling down because in 18 months when Perl6 was done, the speaking/writing/consulting gravy train was coming...

I've always done this naturally, some days I read a blurb about some technology I used to use and realize, huh, I used to do that all the time but haven't touched it in years.

I think one of the key things is to have a passion for learning. I've always been bored doing the same thing over and over. Learning new technologies, design patterns, architectures, skills, etc is what interest me. That also, coincidentally, is what keeps me up to date and productive.

Whole-heartedly agree with this post. I will be 58 this year, and have been a developer for the last 20 years, after having been in academia for the first part of my career. As you say, the key is to never stop learning.

I've been a little worried about the plateau, because I am 30 and have a fairly high salary as it is. I suppose on one hand it's good to know that perhaps the plateau isn't as serious a problem as I thought it was, since there's a little bit of rumbling pressure for me to start that journey to management (which, to be honest, I don't know if I'm a good fit for since I'm not exactly a "people person")

I really don't understand why a plateau is such a bad thing when you're already paid a high salary. It's a strange culture that you have to have a raise every single year (beyond inflation).

Kids are expensive. They become more expensive as they age.

You do. One change as one gets older is you become more accepting as who you are. A high pay senior engineer is not a bad place to be. I used to read about all these entrepreneur stories and wonder why I isn't one of them. Now I accepted that I do not really have the caliber and leadership. I admire and I'm happy to work with those young entrepreneur who are so talented.

This is great for me to read. I'm 37 and I didn't graduate from college until I was 30 so I'm constantly worried that I will soon lose relevancy. However, even though my experience is on par with a developer ten years my junior, I often find that my age can sometimes give me an advantage. I'm less affected by politics, more able to see the big picture, and occasionally looked up to even by those I work for. That said, I don't have a family so I am still free to work long hours if I want and spend my free time in pursuit of whatever I want.

Yeah I have to agree - I'm in my mid-50s and this is my experience - I've changed what I do roughly every decade or so - compilers, chip design, satellite protocols, embedded everything, board design, all round kernel hack - keeping your skills fresh is very important, it stops you getting burned out and bored

I am glad to hear that generalists are as valued as specialists. At my company, it's the other way around.

Hello, future me. It was nice to see you time traveling.

Great answer!

Just for curiosity, detracting from the original topic, what was your favorite language to code professionally?

Clojure, hands down.

I'm about to turn 53. I spend most of my day coaching younger programmers at Facebook (because they're almost all younger). We pair program and talk. I work on speculative projects, some consumer-oriented, some programming tools and some infrastructure. I also research software design and the diffusion of innovation.

I took a 10 year excursion into being a guru, but I'm technical now and intend to stay that way. I love programming. I've never been a manager. I suppose that capped my pay, but I'd rather be satisfied with my work. I haven't noticed a pay drop with age, but my experience may not be typical.

The most important factor for me has been to keep coding. It gets harder. I have noticed a definite drop in my long-term memory, concentration, and general cognition, but I compensate by being better at picking important problems, being able to pattern match a large library of experiences, and not panicking. As Miracle Max said, I've seen worse.

I started learning Haskell a couple of years ago, and that has really helped expand my programming style. I still don't like it, but it's good for me. I'm also learning React and the reactive style of coding UIs. That's also a brain stretcher.

It also helps that you're Kent Beck :)


> I spend most of my day coaching younger programmers at Facebook

Love this. The whole "small team in a big company" thing is great until you realize there's nobody to coach you.

I'm 38 -- your notes on memory are interesting. I use Anki spaced-repetition software to retain less-often-used technical minutiae.

I'm also transitioning to using it to integrate new knowledge. Clip to Evernote. Create flash-cards in Anki, and practice on my commute.

What kind of "technical minutiae" do you put in your Anki deck? I use Anki for Japanese study, but I've been thinking about doing more with it. Wasn't quite sure how to make useful tech flashcards... outside of memorizing as many powers of 2 as I could :)

Snippets from Python module docs. Objective-C APIs.

Basically, anything that I have to look up on StackOverflow.

E.g. os.path.relpath, -[NSString valueWithPointer:], -[NSString substringFromIndex:].

My loose heuristic is if I claim to be an X programmer, and some douche calls me out on an API call for language X in an interview, would I feel embarrassed saying I usually just look that up on Stack Overflow.

I'm almost 57 and still write real code that people use and employers make money from. The trick is to continuously learn new stuff. My whole career has always been spent at the leading edge of whatever was most important at the time. Sure, people sometimes don't want to interview you because they assume you are old and pointless, but that's usually when they don't even read your resume, blog, linked in or whatever you have. There are people who think that way, and there are people who recognize ability and experience matter. The trick is finding the latter while trying to avoid the former.

Some people don't learn anything new and become obsolete, or become management, or even have to start over away from programming. It's not easy to stay out front but you are the only one who can do it.

There's something to be told about learning stuff that matters. Data-structures, algorithms, statistics, machine learning, math in general doesn't change and will be as relevant 30 years from now as it was 30 years ago. POSIX doesn't change either.

Learning for learning's sake is actually pointless and can do more harm than good if done tastelessly. The best kind of learning happens either when something is cool and you want more just because you get a boner just thinking about it or when facing a real-world problem that you'd like to solve using a different approach.

For an example of pointless learning - learning a language that's similar in concept and popularity to another one that you already know is pointless (e.g. Ruby vs Python), unless you learn it because you've got specific real world needs. For learning new languages, I actually apply the following rule - if learning it doesn't hurt, then I'm waisting time.

Another example of pointless learning - anything proprietary, as proprietary things don't survive as well as open-source stuff or stuff based on standards. Actually, taste is required to pick winners - SOAP will be irrelevant in 30 years from now and anybody with taste could have seen it coming since its inception (speaking of which, Google's Protobuf won't survive either, because simple text-based protocols always win).

>Learning for learning's sake is actually pointless

I can't disagree more.

Learning latin, ancient greek, french,italian, portuguese and spanish, C C++ JAVA Javascript, ruby python coffescript and groovy, lisp clojure...

Studying the patterns help being better user of each language. Consider it a "classic" coding education. Is totally worth the time. Especially because after a while, you see the ideas, the broader picture, not the words or the code.

Being ignorant is not so much a shame, as being unwilling to learn. Benjamin Franklin

"The mind is not a vessel to be filled, but a fire to be ignited." - Plutarch

See, I can play the quotes game :-P Besides, you missed my point, taking that out of context. Read it again.

> Google's Protobuf won't survive either, because simple text-based protocols always win

I expect Protobuf, Thrift (fbthrift) and Avro to be around for quite some time. Once you know what they're good for, everyone likes binary formats that can be easily shared across multiple languages via code gen. You can turn every binary format into text-based for debugging purposes using standard commands. Heck, even Apple has binary plists. It's natural that a format eventually gains (or is based on) binary alongside text -- for those times when binary is simply faster. Now, if it's just transmission speed, you can convert text to binary using gzip.

Frankly, the key to success for protobuf or thrift as independent projects is how much adoption you see outside of the companies.

Oh and I'd also point to the "death of rest" in http://techblog.netflix.com/2012/07/embracing-differences-in... -- just as websites provide front-ends to a myriad of backend services, so too can API servers provide a consistent, simple front-end for devices. Not sure what to call it, since as a pattern, it doesn't require a specific protocol, and it could be considered somewhat HATEOAS, except state is easily maintained client-side these days....

I worked with Protobuf and while doing so I had 3 problems - the generated classes were freaking monsters, crashing my IDE, those classes must be used with the precise library version of the generator that was used and in spite of tools available for easy debugging, I couldn't find out one that didn't suck, plus the output is not the only problem, input is a problem too. In practice it's actually a bad idea to parse the whole freaking blob and/or carry around monster classes that specify how, when in essence you end up carrying only about some paths.

And while I thought that the availability of that spec was an advantage over an undocumented JSON-based protocol, in truth an undocumented spec is just as bad as an undocumented JSON-based protocol and at the very least with a JSON-based protocol you have an easier time doing reverse engineering, since playing around with the request format doesn't involve writing code to do it.

Besides, there's nothing about binary protocols that makes them better for code-generation tools. That people don't do this for JSON is only because with JSON you don't need to and it's often preferable to not do it.

There is something to be said against JSON - for objects in arrays, the keys are redundant for example, which adds up when parsing a long document. But there's nothing inherent in a text-based protocol that disallows you to first define the shape of the data before describing the data in more concise terms, while keeping it fairly readable at the same time. And I'm unconvinced that something like Protobuf brings benefits unless you're working at a Google-like scale and I did work on an ads platform that integrated with various bidding exchanges and that was operating on an insane scale and the bidding exchanges I loved were the ones with the protocol based on JSON, while at the same time I had countless problems with those based on Protobuf.

> Heck, even Apple has binary plists.

And personally I hate it, because instead of opening that file with a plain text editor, or as a text file handle, I now have to use special-purpose tools or libraries. Binary plists sit somewhere between Unix-like text config files and the Windows registry and the closer you get to the Windows registry, the more I hate it.

>>everyone likes binary formats that can be easily shared across multiple languages via code gen

Everyone? P buffers and code gen create a static protocol that's more hard to modify OR extend than text; more moving parts: the spec file, the generated code, the code generator, and the lib for your language. Code gen adds complexity to development, build, and deployment. Binary protocols are more difficult to test than typing some json into Postman for example.

Http is the canonical example of the successful text protocol.

How can you hold both of these ideas in your head at the same time?

1. "There's something to be told about learning stuff that matters. Data-structures,"

2. "Protobuf won't survive either, because simple text-based protocols always win"

If the simple inefficient way always wins, we don't need data structures.

Those 2 ideas are orthogonal and I can't possibly see any connection there.

There's a difference between in-process/in-memory storage/usage of a data-structure and long-term storage on disk or serialization for the purposes of inter-process communications, especially in case you don't control both ends of a conversation or in case your components are a heterogenous mixture of platforms.

Lets say you want to build an index, like say, a B-Tree or something. Are you going to store it on disk as a binary? It surely saves time on rebuilding it and B-Trees can get big, their whole advantage against normal BSTs being that they are more optimal in case their size exceeds the available RAM, so they are meant for being stored. However, the B-Tree itself is not the actual data. It's just an index. You don't care much about losing it, since you can always rebuild it out of the data that it indexes. And most importantly, you aren't going to use Protobuf to store it ;-)

What about the actual data? If it's a database, like a RDBMS, well it's a black box and it's the norm to store things as binary blobs, again for efficiency, but if you haven't followed the trail of people that have had problems migrating their binary storage between different versions of the same RDBMS, or recovering from backups, let me tell you, it ain't nice. Which is why you can't speak of having backups unless you're doing regular SQL dumps. And most importantly, you aren't going to store anything using Protobuf ;-)

What about unstructured data, like terabytes of log lines? Now this is where it gets interesting, as unstructured data is the real source of it all in systems that collect and aggregate data from various streams. You end up storing it, because it's simply data that you may want to parse at some point. Are you going to store that as binary blobs like with Protobuf? You could do that, but it would be your biggest mistake ever, as that data will outlive your software or any of the current business logic, plus the format will evolve a lot ;-)

As for API communications and protocols, I'm unconvinced that something like Protobuf brings performance benefits over plain JSON and I mentioned in another comment that I do have experience and have done comparisons with various bidding exchanges that were sending tens of thousands of requests per second our way. Maybe at a Google-like scale it brings benefits, but for the rest of us it's a nuisance.

Creating a personal brand is also important. Having a bunch of things listed on a resume or CV makes it hard to put across a level of experience and competence.

As time goes by, people should be publishing interesting blog posts, getting involved in interesting projects, amassing followers in social media and generally making a name for themselves.

Ideally, you want to get to the point where people ask you to work for them, rather than the other way around. Learning and showing that learning applied is a very effective route.

As an employer, I'd rather not higher a social-media self-brander to work for me. I'd prefer a developer for engineering jobs. The self-promoter might be a fit for marketing, though!

Sure, that's an OK choice to make for you. But if you're heading into the second half of your career, what you absolutely need to do is establish the fact that you know what you are talking about, and are able to clearly and concisely communicate that. Anyone staying in their career for a long time should be a specialist in a few topics, and should be sharing that knowledge. If you're not specialised, your career will be shorter than it could be.

It's not about marketing and over-the-top self promotion. It's more about taking control over defining yourself so you can't be easily stereotyped based on a cookie-cutter resume.

How do you usually determine what's important at a given time? I feel like I usually find out when it's too late to be at the cutting edge.

I personally like to be aware of the cutting edge, but not bother investing time and effort until after the real lunatic fringe has proven or disproven its worth.

It's OK to be late to a party, as long as you're fashionably late.

That's easy: See how many things are implemented in JavaScript? How many times JS-related projects (terminals, vm's, DSLs, monitoring projects, etc) hit the news on hackernews? What kind of companies are using JS frameworks?

I'd say JS is by far the hottest language around and I'm a ruby programmer not JS programmer (although, I'm starting next month with JS).

Then depends I guess:

* if you're a web dev, JS/RoR/SASS/HTML5 with an eye on Rust and Go. Python has interesting frameworks also for web-dev.

* If you're into mobile Java/C++/Obj-C of course (old news) and HTML5

* If you're into low level, embedded stuff it's always C.

* Scalability? Erlang... and so on..

It's really easy to follow the trends around. The hard part is to understand new trends well enough in order to be able to understand if they are a better fit and use them in production. (e.g. Go is faster than RoR, but most people will stick to a framework that's heavily tested, well supported, with an active community, huge set of external plugins and tutorials .. for production. This might change in 4 years... Or maybe not :-)

I do consulting work and here's what I do. Maintain high level skills in one or more of the most popular languages. This is easily found by doing searches for popular languages on any jobs site. Right now my bankable job skill is Java. There's a ton of work for it, it pays pretty good, and keeps me busy. I also pick up languages that I simply find interesting even though there may not be jobs for that skill. So I might pick up Scala, Ruby, etc. even though there's not currently jobs for those skills in my local area. And honestly at this point, if you pick Java or .NET and maintain your skillsets with new versions as the platforms advance, you could probably make an entire career out of those languages. There's so much code out there that you can be maintaining it for a lifetime without having to try hard. It may wind up being less interesting work decades from now when people are using the new whizbang, but there's always going to be work.

Forget the hoopla about AngularJS, Node, Ember.. Focus on what makes businesses revenue, and do that, as patio11 once said.

It's a nice soundbite, but harder to execute in practice.

I can create a lot of business value in Perl, for example. But if the companies and teams that create business value do not use Perl, I can be left out in the cold. There's always the 'rugged individualistic' solo freelance route, but it's limited, especially for someone focused on non-popular/standard tools.

I like when the nickname fits the character. Congratulations (both for the nick and the long career in THE ever-changing field).

I'm 38, and Software Dev. is as lucrative as ever.

I've never done any 'IT work', and I've focused almost entirely on product development, over my 16 year career.

As a salary, I think I have plateaued at 160K, which is good enough for me. With 'adjustments for inflation', that's usually an extra $5K increase per year. There are people who make more than me, I know. For example, a guy I work with probably makes $200K (and he doesn't have a college degree).

There are always 'business problems' to solve with software, and there is always software to maintain. A lot of software never 'ends' - it just keeps going on, or dies dramatically, replaced by something similar. There's never been a better time to be a developer.

At a certain point, you'll have to become something like a 'manager'. For me, this is more of a 'tech lead' / 'architect' sort of role. I'm responsible for the quality, functionality, road-maps, integration, etc. I'm responsible for understanding the business domain, in and out. I'm responsible for managing the parts of the system, and ensuring that they all work together. I have to lead meetings, give presentations, work with the field and customers.

However, all of that is a small part, for me. I still code a good 85% of the time.

I get somewhere around 10-15 recruiters contacting me per week. So, I believe the job market is hot. But, I am really comfortable where I am. I work from home, and I run an entirely distributed team. We meet in person, when we think we need to meet. Things go very smoothly, because we're all experienced devs, and we fit together culturally.

I'm far from an 'amazing dev'. I don't have a slick github account. I don't run any important open source projects. I just know how to do a lot of different things, I am very efficient, and I have a great track record for success. I know on any given week, hundreds of thousands of people use software that I had created, and that makes me feel good.

Where are you based if I may ask? Just to put your salary in context, because 160K is not the same everywhere!

Also, I'm not trying to brag by posting my salary. I just think it's really important for devs (young devs, especially) to know these data points.

I took the first interesting offer that I got, when I graduated from college. It was $43k. (You have to start somewhere!)

But, as you get more experienced you must also learn to understand the value that you provide to the companies that you work for. Too many developers get taken advantage of. Software currently rules the world; remember that. Companies make trillions of dollars (in real revenue or efficiency) on the things you create. You deserve a good pay, if your products are valuable.

$43k? My first offer was $28k, though, to be fair, I didn't have a programming-related degree.

I'd also like to underscore the comment in your parent post--"good enough for me." It's not always about pay. I'm seeking a sort of "medium chill" [0] existence. I currently make more money that I ever thought I would, but I also have a position with a relatively stable company where I can continue to do interesting work without unnecessarily ramping up my responsibilities with each pay increase. If you offered me a job with a 25-50% pay increase with a similar increase in work time and/or stress, I'd politely decline.

[0] http://grist.org/living/2011-06-28-the-medium-chill/

Exactly. I like 'medium chill'! I generally try to work a 40 hour week. Sometimes I have to put in some extra hours, but I like to be observant about why I'm putting in those extra hours, try to fix the root problem, and get it back to 40.

A college professor that I had (a mentor), once told me that the best programmers should be somewhat lazy. I'm definitely not a 'best programmer', but I do try to automate as much as possible and be on the look out for 'gordian knots' to cut.

I was offered a VB6 job in DC for $24K and 5 days vacation for my first - I turned that one down.

Washington, DC metro area.

Do you think that the significant presence of Federal work has a lot of pressure on salaries in DC and surroundings?

The federal gov't injecting a few billion dollars into an economy can't hurt. So, yeah, I'm sure it helps stimulate the growth here.

But, I rarely find many, if any, gov't contractors at the HN meetups in DC.

There are actually a lot of startups here, and lots of VC money, in general. A lot of people come here to live, and work from home, here. Housing prices and costs of living are high, but not as high as some other locations (SF, NY, etc.).

So, definitely other factors, too.

I'm living in the DC area and I'm curious how you would go about finding non-government-related places to work. The place I'm working now isn't government-related, but I found it mostly by chance, and most of the places I saw during my job search were government contractors, so I'm not sure where I would look if I wanted to change jobs.

I'm older than you and I've been looking for a new developer role recently. The main problem I see is that there haven't really been "old web developers" in the past - I've got about 15 years experience which is pretty much as much as it's possible to have in the web industry. People with more experience tend to be "software engineers who wrote web things" rather than "web developers" per se. Employers have expectations that web people are young people and as such building web software is something that you can only really do at the start of your career. The assumption is that if you have a lot of experience you'll quickly get bored and move on. Consequently it's getting a lot harder to find a job. I suspect that once we pass 40 we'll all have little choice but to move in to a more business analyst or management style role, or go freelance, until the industry is mature enough that age isn't something that works against you. A shame really.

I mentioned this in another post, but you explain it better. Yes, there's not enough history around the profession to let people know that a 45 year old developer can deliver value - probably far more than a 25 year old developer - simply because the role hasn't been around for very long.

I honestly don't understand this, I'm sure there is ageism, but when I'm reading resumes and interviewing I love the more experienced developers! The few times I've seen a solid 10 years experience résumé followed up by a solid phone screen it has been a feeding frenzy. So much so that my company usually can't even move fast enough to get an offer in the ring :(

On the other hand, it's really obvious when someone has 10 years of experience staying invisible and just hanging on. Those are the ones that get ignored in my experience, and for good reason.

Yes - I try to hire a lot of experienced developers. There is no hand-holding, with them. If I hire someone skilled and with a lot of experience, I can give them vague requirements and a general deadline, and I know that I'll get something high quality, that just works, and that's probably better than I original spec'd.

I don't like risk, but that's just me. I know I could hire more inexperienced (e.g. cheaper) staff. But, there's just a lot more risk that goes with that. I'd rather pay someone good, a lot, and know I can sleep at night.

>>10 years of experience staying invisible and just hanging on.

Can you elaborate on this?

There's 10 years of experience, and there's 10 years of having the same experience time and time again.

That is a great way to rationalize deciding that a specific person is no good even though they have the experience.

Of course it will turn out that you have personally made the most of your time, and that you have some other reason for downing the other person.

I have interviewed people with 10+ years of experience who failed fizzbuzz (in their language of choice, unlimited time, googling encouraged). There really are people out there who do not meet even the lowest of bars, despite having years of experience on paper.

Some percentage of the workforce essentially manages to not-get-fired and little else. I don't necessarily think that's a rationalization about a specific hiring circumstance, rather that it's a fairly general observation that probably applies in lots of fields.

It's not a rationalization at all. Get a job paying well and learn how to do it in 3-6 mos. Now repeat doing said job over and over for 5 years. The person ends up with ~6 mos. experience. I have interviewed these people. The problem is that it is a slow skill drain and by the person realizes they are behind they are often so far behind the level of effort to catch up keeps them stuck.

It is basically innovators dilemma on a personal level. In order to stay growing you have to move on and take risk, but that is hard to do when you can easily do your job and make okay money. Then one day that job is gone.

Repeating the content/work of one year of experience ten times, rather than having ten years of diverse and beneficial experience.

People tire out but realize they can work at 5% utilization (sometimes 0%) and not get fired.

It's not common among ambitious people and in geographic regions with a robust job market, but some people resign themselves to career mediocrity.

A part of it depends on what/where the experience is from. If I see someone who has worked for 10 years at a shop that I know is fundamentally dysfunctional, that makes me hesitant.

Similarly, if someone looks like an opportunistic job-hopper who never stays put for more than nine months, I also get hesitant.

Sure, but how would you feel about 30 years experience? Because at that point, somebody who started just out of college has another 10 years to go before retirement.

My experience is limited, but I don't see many companies aiming for employee retention on the order of ten years.

I don't think anyone expects someone to stick around at a company for more than 10 years.

It seems that they go a few directions:

The most common seems to be to try and generalize, because relearning most of your job skills every few years starts to get annoying the 20th time you've had to do it. It's different when you are younger and everything is new, you just chalk up a major tooling change as just something else to learn. But when the next hot platform or architecture or whatever comes out you get tired of running in exactly the same place. You also start to get a long view on things, where all these new things coming out don't really seem to offer any advantage to you that keeps development fun. It's just more and more layers of abstraction and you start to see the nth demo of WebGL maxing out a 4 core modern GPU system doing exactly what you did 20 years ago with a single 32-bit core, 1/5th the transistor count and all in software. So how do you generalize? One word: management. You start to take over running things at a meta-level. You don't program, you manage people who program. You don't program, you design architectures that need to be programmed. You don't program, you manage standards bodies that people will be programming against. It's not a higher level, more abstract, language you go for, it's a higher level, more abstract job function. The pay is usually better and it's a natural career progression most organizations are built around. There's lots of different "meta" paths you can take. And because most of the skills in them will be new to you in your late 30s, 40s or 50s, they're at least interesting to learn.

The problem for some people is that these kinds of more generalized roles put you in charge of systems that do not have the sort of clear-cut deterministic behavior you remember from your programming days. Some folks like this, and look at it as a new challenge. Some hate it and wish for their programming days again. YMMV

So the next most common path is to just become more and more senior as a developer, keeping down in the weeds and using decades of experience to cut through trendy BS to build solid performant stuff. These folks sometimes take on "thought leader" positions, act as architects or whatnot. Quite often though industry biases will engage and they'll be put on duty keeping some legacy system alive because their deep knowledge of the system lets the company put 1 guy maintaining half a million lines of code in perpetuity vs. 10 young guys maintaining the same, who all wanting to leave after a few years to build more skills. The phenomenon is best seen as the ancient grey beard COBOL mainframe guys. Some people love this work, they can stay useful and "in the game", but some hate it because it comes with the cachet of being stale and not keeping up with the times. YMMV

Probably the third most common path is to simply branch out and start your own gig. A consultancy or something where you get to work on different things in different places on short engagements. The money is good while it's coming in and you get to make your own hours. At some point you decide to keep doing this till retirement (if you can keep finding work) or to grow your business, in which case you generally end up doing the meta-management thing. There are thousands of these little one-man development shops like this and I wouldn't be at all surprised if this is more common than third on my list.

Probably the next most common path is to just get out of development entirely. The kinds of logic, planning and reasoning skills, plus the attention to detail required to be even a half-assed developer, can be extremely valuable in other fields. Lots of developers go into Systems security, Business Analysis, Hardware, etc. With a little schooling you can get into various Finance, Scientific or Engineering disciplines without too much fuss. The money isn't always better in these other fields, but sometimes the job satisfaction is. Again YMMV.

This is an amazing post. Every word of the first paragraph rings true. More and more layers of abstraction that don't really accomplish anything we haven't seen before, except doing it on a cloud platform or some such.

I'm 35 and just changed jobs from the first path described here to the second. I had been in the software architecture group at a typical bigcorp. It was actually a pretty good career progression as far as bigcorps go, but just wasn't a cultural fit for me. I had no interest in supervising and mentoring and directing other programmers, I'd always rather just do it myself. I'm a coder at heart and don't think bigger than that. I hated it and wished for my programming days again, just as you said.

My new job is with a small company, you could call it an established startup but it's not really looking to grow and exit, it serves as a lifestyle business for its founders. This has me on your second path, using experience to cut through the trendy BS to just get stuff done. It's mostly legacy .NET maintenance, but I actually enjoy carving out and solving and tweaking these sorts of problems more so than building new stuff. I'm probably going to become stale and outdated in another 5-10 years, a .NET version of the COBOL dinosaurs, but I'm fine with that and don't have any drive to advance more. This can work because I'm also on track saving aggressively enough to just retire from full-time work by then.

Your third path of a one-man development shop has attracted me for years too, except for the fact that it tends to really be sales in disguise with the programming coming secondary. I'd do this in a heartbeat if the work found me, but don't have any desire to go pound the pavement to find clients and deal with all the usual self-employment headaches like getting paid.

Pretty much covers it. If all you do is 'write code' then you have to be prepared to start 'write the same code in a new "paradigm" several times.' Once that starts you'll do one of two things, either get bitter and grouchy and become unemployable as a coder (trust me when I say that nobody likes working with someone constantly whining about how they already wrote this code 5, 10, 15 years ago), or you will change the areas you work in.

Some folks will try to be "architects" (used in quotes because there are lots of definitions about what that means), and some will go into management.

As a coder, your pay will definitely plateau. One of the interesting things about the current situation for 'rock star' coders is that their pay will plateau faster, this will be a problem for them later. If you can get a number of people on the same page to build something bigger than what a single person can build (not so much management as technical leadership) then you plateau will be a bit higher (roughly 20% if you believe salary surveys).

Keeping it fun is key though.

>As a coder, your pay will definitely plateau.

Mine seems to keep climbing. I'm hearing reports of >$300k, and have received an offer in that range myself (counting signing bonuses and stock grants). Granted my pay might plateau there, but honestly that's enough money to keep me happy without having to see it go up every year.

I'm a total generalist, but I also have a few areas where I would qualify as a specialist; that offer I'm sure was because of the specific skills I've built up. I've also been programming professionally since 1989, and I try to keep learning, which can't hurt.

Agree that keeping it fun is key. :)

">As a coder, your pay will definitely plateau."

There are two problems with hitting a plateau @ 300K: Housing costs and College Tuition.

At the traditional 3x debt to gross income metric, your home mortgage would be capped around ~$900k, vs the $1.3-1.5MM range of current trading prices. Which is not terrible if you lock something in. However, once you are at 4x paying for schools becomes a far greater challenge. You could be looking at anywhere for $175-250 per kid. So, capitalize this and you are at $350-500K. That is, your combined "future obligations" would be something in the range of $1.7 to $2.0MM (exclusive of retirement). Which is something closer to 6.5x gross income. Which is pretty highly leveraged. You're after tax cash flow without real-estate tax shields could easily be ~200k, so you are looking at something like 10x cash-flow leverage. That is about as high as most PE guys will take a decent c-corp.

Just start shielding your income and assets as soon as possible. Strategize to minimize exposure to asset inflation (housing, education). The IRS (tax man) and the "doo gooders" in academia (ironically, the new "alternative minimum tax" man) have really boxed in the middle class (read: the not-rich enough) from the perspective of lifetime earnings. Most of your "savings" will be at risk to get swept from you, thanks to "financial aid" effect driving college tuitions.

These numbers get bounced around every now and then but they are worth considering. Inflation in "raw materials costs" for knowledge workers (kids) need to get passed on to customers (ie, employers) if you want to stay in the same place (red queen effect and all that).

This is relevant when you are evaluating career moves down the road.


3 bedrooms (Weekly Average Prices, San Francisco)

$1,339,274 $1,573,313 $1,805,297 $1,720,736

Just throwing this out there: if there's a problem with developer salaries being capped at $300K, think of how hard it is for all the families who are making the U.S. median household income of $53K/year, or hell, the Santa Clara County median income of $45K/year.

I understand that everybody wants more money - hell, I want more money too. But a lot of that is because everybody wants to be in the top 1% of nice neighborhoods, nice homes in nice neighborhoods, nice colleges, etc. You can have a life that is just fine on far, far less than $300K/year.

Point is don't be lulled into a false sense of security. Also, these things drive observable behaviour today. It's not a question of passing judgement on it (or not).

I don't really disagree, but neither do you want money to feed a sense of insecurity. You want to rationally pursue means that maximize your take-home income and wealth, but usually if you get emotionally attached to money you a.) will be a lot worse at rationally pursuing lucrative opportunities and b.) are in for an unhappy life.

Problem - the school systems are funded by property taxes. Live in a low rent area, your kids will be at a crappy school. It's why a family needs to be earning at least 200k, preferably 300k. Rent for a family of 4 is at a minimum of 5k - 6k. The alternative is to live in the midwest, with snow. And a lot of people who don't understand working in tech. And less opportunities.

I deal with snow, yes. Though it's not THAT bad.

>And a lot of people who don't understand working in tech

Boulder, CO, has the highest density of people working in tech in the country. You were saying?

Its sad. But the solution seems to not marry at all.

How about private schools?

I make 1000$ a month after tax, selling enterprise software, and honestly - I don't understand what are you talking about. 300k annually seems really a lot even if you live in an extremely expensive place like Denmark (mnimum wage 2000$ a month). So many people have less and live happy and successful lives, get degrees etc.

Sounds great, can you share what ]helped you become a top earner?

That a serious question or are you making a point? It's often hard to tell on the Internet...

Edit: Oh, I see - you've confused me with the person way up-thread with the $300K income, I'm not the same poster as he. I don't like to reveal my income on the Internet, but I'd describe it as "enough", so, to answer your question:

1.) 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.

2.) 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.

3.) 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.

4.) Don't be afraid to leave when you've outgrown a place.

I'm the poster from up-thread, and I agree with this message. :)

With one caveat:

>Always hone your skills so that when an opportunity arises, you can pounce.

My strategy has been to follow my passions, which include digging into various technologies that interest me. I don't do it "so that" I can be relevant. I do it because it's fun.

It just happens that, when you get good enough at enough things, you'll find that at least some of those skills are in demand. I know a lot about so many programming topics that one coworker just accused me of having "an encyclopedic understanding of just about every topic."

A lot of people have their curiosity tortured out of them by their experiences in school. Anyone reading HN likely is at least on the road to lifelong learning, so anyone reading this is likely on a path that could result in a strong salary. To those who complain that reading about every latest new technology is boring, I say: Find your childlike curiosity and reclaim it.

This is one of my fave posts ever on HN. Nicely done, Tim

"There are two problems with hitting a plateau @ 300K"

Luckily, since you're making $300K you have essentially no problems outside of this. Aside from your sourpuss attitude.

Agreed. I am a solid developer with ten years experience living in Spain. 1/5th of that salary is good money here.

>There are two problems with hitting a plateau @ 300K: Housing costs and College Tuition.

I moved out of the Bay Area and own my home outright. The offer lets me work from home where ever I want (with some restrictions). So home cost isn't relevant to me.

And on the college tuition front: While I wouldn't necessarily advise it of today's high school graduates, by the time my kids are ready for college I don't expect college to look like it does today.

Or rather, I expect companies to be more concerned with what you know instead of how you learned it, and with the huge movement toward making effectively entire college educations free online, I think that the face of college will be transformed -- and made correspondingly less expensive -- by then.

It's already true to some extent, and if the question is between going into serious debt or getting a college degree, I think the prudent choice might be to use free or inexpensive online courses to get a degree rather than piling up serious debt for a questionable advantage in getting a job. It seems like "free internships" are already the way to get on-the-job experience, and that's a lot harder to accomplish if you've got a huge debt that's demanding to be paid.

In addition, politically speaking I think we're at the extreme right end of the pendulum swing right now, and once things swing back a bit to the left, state schools will become more affordable again. A lot of the rise in costs has been correlated with the fall in state funding. Though the rest of the rise in costs can be attributed to the rise in administration salaries; almost a half million/year for a UC Regent? [1] How much value can that regent possibly be bringing to the UC system? How many others like him are burning up the money that people are paying to get a good education?

[1] http://www.sfgate.com/education/article/Brown-slams-regents-...

According to globalrichlist.com, if you earn $300,000/yr, you earn more than 99.97% of people in the world. If you were to walk past a random sampling of 10,000 people on the street - only three of them would earn more than you.

It also happens that the same basic financial strategy one might employ whilst making $30,000/yr applies whilst making $300,000/yr. That is, spend less than you earn.

Or to put it a little more brazenly:

Debt to gross income metric? You fucking make $300,000/yr! Why on Earth do you need to be borrowing money? So you can afford to live in the bay area? So you can "put it all on black" investing in something-or-other? I'm not saying you're wrong to do it, but for Christ's sake don't complain about not having enough opportunity. Your problem isn't your leverage, it's your stupidity.

Spend less than you earn!

Most of the $300K/yr jobs are in locations where housing is expensive. SF, NYC, etc. It's not like there are tons of $300K/yr work-from-home-in-Indiana jobs out there.

If your $300K/yr job is in the Bay area, and you like the job and area, it seems eminently reasonable to borrow money to buy a house there.

Unless you want to be increasing your net worth. It's certainly a matter of opinion, but I think if money is your priority, you're much better off in the wop wops making $120k/yr with little to no debt.

Your net worth difference between those two scenarios hinges almost entirely on how your real estate purchase in the Bay area changes value. (You are highly leveraged and concentrated in the Bay area home ownership case. That can cut both ways.)

Over 25 years on both coasts, I have yet to see someone strictly coding (no exec or mgmt duties) break $200K.

All the families I know in SV are either lawyer/finance/medical, 2-income households, or cashed out.

It's dangerous to extrapolate from there to "nobody makes that much". It's only a short leap to "I'll never make that much" and eventually, "$70k/year isn't so bad".

There are in fact lots of developers doing nothing but development making well north of $200k. That's less than a $100/hour bill rate, which is not at all uncommon as a contractor. If that's something you want, know that it absolutely is attainable.

I think you'll find that, in all walks of life, people who make lots of money tend not to post on internet message boards (or salary surveys) about how they make lots of money. Definitely don't take the lack of people spouting off here about their 1%'er incomes as a sign that those people don't exist (or aren't, in fact, here reading this thread).

Most devs with ~10yrs experience at a B2C software company you've heard of earns >$200k total comp.

> Most devs with ~10yrs experience at a B2C software company you've heard of earns >$200k total comp.

I don't think that's accurate. Most? Really? Maybe the top 5 or 10%, and in most cases I suspect they are team leads with 3+ devs either reporting or defacto following their lead.

It's absolutely not the case outside of USA coasts.

Only a problem if you curiously believe that you must buy a home in such an outlandishly expensive place. If you make $300k and have money problems, it's 100% by your own choice barring unavoidable emergency medical costs, etc.

Aren't you forgetting your spouse's salary?

Given that each educational cashflow is 0-22 years in the future, carrying at a discounted NPV would be more appropriate. Whatever the assumption, carrying at the multi-decade-forward FV is a bit punitive.

> At the traditional 3x debt to gross income metric

Can someone give more information/source on this?

Traditionally, a mortgage would be 10% deposit + 3x your salary. That's what I did. In retrospect I should have done what everyone else did, 0% deposit and 5 or 6x salary, then let the govt bail me out by artificially holding interest rates so low. People who behaved irresponsibly made out like bandits, and honest folk are seeing their savings destroyed.

+1 What's the point in saving money when it gets eroded by near 0% interest saving returns combined with continuing inflation?

Traditionally a mortgage would be 20% down.

Did some research. To answer my own question: DTI is a debt-to-income ratio that is considered during mortgage negotiations. It's desirable to have less than a 36% DTI such that your monthly debts (CC payments, mortgage, car payment, etc.) do not exceed your monthly income.

Congrats on the pay grade! but you need to look at averages not anomalies like yourself

300k is definitely not the tract most programmers are on

Actually, I hear LOTS of reports of people with $100-$140k salaries who receive signing bonuses close to their salaries. To the point where it seems like the "new standard."

No, you don't see this in start-ups. I think HN may skew toward people who usually work in start-ups, so the perceived average will be lower as a result. Until this recent offer, it was my perception as well.

And no, that's not quite my pay grade, but a lot higher than the plateau that I think people are imagining. I think some developers do get sick of the programming, or they stop learning and go stale, before they get to be an anomaly like me. ;)

Where exactly are developers reporting six-figure signing bonuses? Google, Amazon, FB, etc I assume?

Also, making $150k with a $150k signing bonus is not anywhere close to 'making $300k'. What do you earn in year 2? $150k (plus whatever raise and annual bonus, but annual bonuses don't typically make up a huge part of your annual income in software, as they do in finance).

>What do you earn in year 2?

Almost the same in cash, but a little more in stock grants.

Years 3 and 4 have a lower salary but much larger stock grant vesting, that at today's stock price mean that I'd be making roughly the same amount in each year. If their stock crashes, then I might leave, though they mentioned that after the second year they may up the stock grants for the following years.

And if their stock keeps going up (as it has been), then I would be getting a de facto raise in years 3-4. But I'm fine with the first 2 years; my personal burn rate is low, and it would let me work on personal projects full time again after the two years are up.

I kick ass. Where do I sign?

On the dotted line, of course.

>not anomalies like yourself

Several people I know are in that range. But they all specialize in one thing or another.

Could you share some examples?

I'm a senior software engineer in the Bay Area and spend most of my days writing Javascript/Ruby. I don't manage anyone directly, but have technical/product leadership responsibility on my team.

My gross comp is ~$350k, 60% cash.

The 3 main learnings that I've leveraged to get that high are:

0) be the top performer on your team, no excuses

1) ask very explicitly for the things you want [0]

2) negotiate from a position of power (have a BATNA [1])


[0] "I'd like a raise" != "I'd like my salary to be $X"

[1] http://en.wikipedia.org/wiki/Best_alternative_to_a_negotiate...

Would also be interested in some examples, just for curiosity sake. COBOL maybe? Wild guess at something specialized/scarce.

Personally, the only people I know in the 200+ club are in some form of management and rarely, if ever, code anymore. But then we are back into the anecdotal realm..

Example specialties of people I know in the $250k+ range:

* Machine learning + finance * iOS (I know several examples here) * Android * Enterprise Java * Embedded development * Specific scientific expertise (a friend is into optics and diffraction and makes $250/hour freelance, with some coding and some design)

I don't know any COBOL programmers. Or at least if I do, they're in the closet. :)

This is universally from big companies like Google, Apple, Amazon, Facebook, Microsoft, Ball Aerospace, etc.

In the Bay Area or New York?

Agreed - Around here @100K is higher than most. It all depends on your geography. I would live like a king with 300K!

I wouldn't... I would live like a miser for 2-3 years and retire to do whatever I wanted. Maybe 4 if I felt like travelling the world for a decade. :)

You sir, are smart.

It would be relative. The ideal is to work somewhere that pays top whack, save, then move to somewhere with lower average incomes. Tricky to do though.

Ok, let me change 'would' to 'could'. I'm way too frugal (my kids call it cheap) to waste.

Thank you! Reading some of these posts, I was worried that it was some law of providence that when you've been writing software for some number of years (15-20?) you magically stop wanting to learn about new tools. As a new tools junky, I was worried. I'm glad to see someone who's been doing this since I was 1 year old still loves learning new tools.

Making an annual salary + bonus of $300K at a mobile games studio, in Boulder CO is pretty impressive. Counting stock though is always a bit dicey, especially if you coded through the 90's :-).

On counting stock: It's a big public company I'm talking about, a modern blue chip, so the stock will be worth something.

But I'm not counting it right now, regardless. The cash part of the offer is entirely enough to keep me happy for each of the first two years, and the stock is a bonus.

Starting in year three, though, compensation is nearly half stock. I did code through the 90's, so I'm going to take any stock valuation with a grain of salt. I'll reevaluate my options at that time, if I decide to stick with them for that long.

that reminds me of a quote in J. G. Ballard's 2003 "Millenium People"... "anyone making less than 300.000£ does not count. You're just a prole in a three button suit." a statement which might not be that off the mark

Too true. Too true.

I think that if salary levels hadn't been effectively frozen starting from the '70s until now, $300k would be about "normal" for a middle class income.

It's not that $300k is a lot of money, it's that the people of the US (and the world in general) have been cheated out of their share of productivity improvements. There's a great video that talks about stagnant wages and the problems that are the underlying cause of the recent collapse(s) of the economy. [1]

[1] https://www.youtube.com/watch?v=_-KqeU8nzn4

Great post -- I want to throw out another option though, which I am exploring myself. Your post seems to, like most posts on HN, be a very "web application" centric view of things.

There are obviously vast worlds of software engineering outside of web applications. Embedded/real-time systems, programming languages & tools, robotics, graphics, bioinformatics/computational biology, machine learning, machine vision, the list goes on. Why not "pivot" your career into a completely new subfield? The downsides: you will likely need to take a year off for self study and to build up a body of work to land you a job, and you will have to take a pay cut. But you will be able to build stuff, will remain excited on the edge of your field, and might be able to have a fresh slate and replicate those feelings you had when you started off in the first place.

Richard Hammings has a similar advice regarding scientific research: "Somewhere around every seven years make a significant, if not complete, shift in your field. Thus, I shifted from numerical analysis, to hardware, to software, and so on, periodically, because you tend to use up your ideas. When you go to a new field, you have to start over as a baby. You are no longer the big mukity muk and you can start back there and you can start planting those acorns which will become the giant oaks."


Hamming is great. I try to re-read his "The Art of Doing Science and Engineering" once every year or so.

Sounds like what I want to be doing. I'm curious if you have additional insight on taking on this path, I want to keep all of my options open and instead of say just pursue embedded/real-time systems and find out that the field is too narrow. What do you recommend to study as opposed to CRUD web-apps,

C/C++, ML, data analysis with Python/R or learn more domain specific knowledge such as Bioinformatics or graphics or quant finance? Much appreciated, thanks.

It depends a lot. This is opinion, but I would say that there are three big categories of software development skills. Of course most jobs are a mixture of these.

1. Web development (transport-level and higher networking, HTML/JS/CSS, PHP/Perl/Python/Ruby, using databases, etc.)

2. Enterprise software design (domain modeling, OO programming, system architecture, scaling, security)

3. High performance (algorithms, advanced data structures, C/C++, memory management, DB internals, internet-layer and below networking, cryptography)

It sounds like you want to get into 3. A good way to start is algos/data structures. Almost all the fields the parent listed benefit from a very strong foundation in computer science: discrete math, linear algebra, algorithms, advanced data structures, etc.

Data analysis with python/R is more for scientists and mathematicians, not software developers. If you are being paid to analyze data as a programmer, usually you are analyzing very large data sets and you will be using a much more performant language or possibly even a highly parallelizable paradigm like MapReduce.

The easiest path into a nr 3 job here is to find a job with an engineering product company, ie a company that sells a high-tech product that is not software.

My current job mixes those three categories nicely and I love it :)

I'm not clear if you're saying you do or don't want to be in embedded, if you do then try hanging out in:

for a few weeks, find mags related to embedded.

I am a database developer in a sequencing center. I would not recommend bioinformatics if you have any passion for good quality code.

There are some decent bioinformaticians out there, but most of them write crap 100 line scripts, and have very little desire to learn more than the basics. I am getting increasingly frustrated, as I can see I am clearly writing significantly smarter software then these people (most of them are just counting things and plotting the counts on a graph). I am seen by management as being the same kind of skill level / skill set.

If of course you are really interested in the research, then you may like it, but do not expect your coding skills to be valued.

hi collyw, thanks for your message. I'm indeed really interested in Bioinformatics. I've had experiences in undergrad similar to what you described (e.g., a folder with 50 Perl scripts that does a variation of the same thing).

I don't really mind the management slights as it's an occupational hazard of a programmer. What bothered me about academic research was how the doors were shut for you if you did not pursue the traditional PhD/post-doc path of life sciences research. Also that pure Bioinformaticians even with academic pedigree was considered lower in the pecking order in comparison to "wet-lab" folks.

As crazy as it sounds, I really miss the days of writing Perl scripts (Python probably now); running BLAST and plotting Information Theory graphs. How do you like your current gig and what do you recommend for someone who is looking to jump back into it?

My current gig has ups and downs. I like getting to code things from scratch in the technology of my choice, but too often we are using the quickest crappiest solution to get things done (uploading database data using excel - supposed to be a temporary solution, but has been going on for two and a half years).

Apparently most labs have a shortage of bioinformaticians (at least that's what I hear here in Europe).

Yes, having a PhD will be helpful if you are looking towards a more research oriented side of things. If not you are more likely to be more of a technician, and your work will be a bit more production like.

My advice would just be to look at institutes that you would be interested in working at - their job pages. I am sure you could start with more production style things and move into a more research oriented role.

Here is the jobs page for science park I work in in Barcelona (pay doesn't sound much compared to the US). Not much up there just now, but I know we are hiring more people soon.


>> The downsides: you will likely need to take a year off for self study and to build up a body of work to land you a job

I am doing this myself. It's a risk but I think the rewards are worth it!

This is a great response. As someone who's approaching my mid-30s, I can identify with a lot of it.

I'm at an inflection point these days on whether I want to push forward on the management path or go for the third path, as you mentioned above.

The management path seems to be the path of least resistance, but getting into the politics of management is unappealing. Also the level of competition for management jobs is at another level. As an engineer, I'm used to having jobs thrown at me left and right, but it seems like engineering managers compete for jobs quite a bit more. It feels risky to go from something with high demand to something with clearly much lower demand.

The third path is very appealing from a satisfaction standpoint, but clearly a lot riskier, especially for someone US-based who needs better healthcare as they get older. Also the feast or famine nature of consulting can be a little brutal. I think a combination of consulting plus products is the best bet, but it can take a while to get that going.

> I'm at an inflection point these days on whether I want to push forward on the management path or go for the third path, as you mentioned above.

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.

Also, don't make the mistake of thinking going into management will give you more agency as an employee. From a non-management position it feels like those "higher" than you get to call the shots, but quite often a good manager is creating space for you to get to run your day-to-day and is boxed around almost daily by those higher than they are.

> FWIW, the few folks I know who tried to stay on purely technical paths ended up regretting it many years later.


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.

I've gone the 'third' path as described here over a year ago, and in my late 30s. I can't recommend it enough to you since you said "but getting into the politics of management is unappealing".

You're contradicting yourself when you say on one hand you're used to having jobs thrown at you and then saying it's clearly a lot riskier. From my point of view there's way too many management/analyst types trying to get those management positions. The politics is no joke. You have to be really good at it and in some ways you have to have no soul.. just kidding! ok maybe a little ;-)

anyway, going solo and starting your own thing, if done right, is more rewarding on all levels. less politics, more tech stuff you love, better pay (that totally outweighs the cost of having to pay for your own insurance), better hours (however you define better hours for yourself), not having to do any "company contribution" for someone else's company, the clients treat you better because they know you're the expert, etc etc.

Granted, it took me almost 15 years working at bigger consulting firms before I wised up and went independent. And maybe I could have done it sooner, who knows. But I highly recommend it since you don't like "the politics of management". The trick is to find one good solid gig. Just one. And there are enough of those going around.

I don't think this life is for everyone though. One thing people often don't consider when going freelance is that your job shifts. Instead of just being a developer, you are now a developer, marketer, business owner, accountant, project manager, office manager and more.

Some people don't mind that, or even enjoy it. For others, having to deal with all the tasks that go along with running a business, in addition to being the sole developer, can make life much less enjoyable. Especially if you're not fairly well set financially and would have a hard time enduring lean periods.

Not to say it's bad, it's certainly rewarding to run your own business and you gain a lot of freedom. But it's a tradeoff, and one that might not suit everyone.

that also really depends on what kind of gigs you get.

for example here in the DC area there are lots of independent contractors that have steady multi-year contracts. as long as you're not total dead weight you do the hourly thing for a long time. many years. It's more rare to find those folks that go from solo gigs to having other subcontractors going through them too. That's when all your points become really important. But you can be solo and not have to deal with a lot of that stuff you mention.

Folks keeping score at home should note the successful DC area contractors in this thread. DC is full to the gills with easy, good-paying software work from budgets that need spending. But I don't think that it is a good place to be for your career if you are interested in the technology, unless you are able and willing to get a TSC, and to perform the sort of work that requires one. I recently relocated from the DC area to California for this reason.

The tradeoff to that is that DC has a horrible commute and exceptionally high cost of living. How many of these contracts would allow primarily working from home?

What is a TSC and how do I get one?

It's a "Top Secret Clearance," a certificate saying that you are trustworthy to perform top secret government work. Based on what I've heard from others, getting one includes taking a lie detector test, having family members, neighbors, and colleagues interviewed, and hopefully not too many other probing things. My impression is that any warm-bodied US citizen who doesn't have much of a record, and who knows the right things to say, can get a TSC unless their nationality gets in the way.

personally I haven't seen nationality get in the way. Actually, I've seen many folks that are either 1st or 2nd generation US citizens. But the rest of what you say is right, though not all clearances require a polygraph. Relatively few people get those if you include regular Secret and Public Trust positions.

Wikipedia has a decent breakdown of the various clearances btw: http://en.wikipedia.org/wiki/Security_clearance

Cool, thanks.

You get a clearance by having your employer or client sponsor you. It inactivates when you switch jobs, but can be reactivated fairly easily within 24 months. Beyond that, you need to be re-investigated. Standard Form 86 [1] lays out the information you need to provide.

[1] https://www.opm.gov/forms/pdf_fill/sf86.pdf

I would be worried that the "politics of management" would be substituted by the "politics of marketing." Did you not find this to be the case?

> The management path seems to be the path of least resistance, but getting into the politics of management is unappealing.

From a non-management type, I have loved working for managers who can play the politics part, in a level headed way that keeps awareness of and effects from politics out of my individual contributor's life, and at the same time understands what I do and what can reasonably be done.

I've been working for more than 20 years (still an individual contributor), and I can think of two managers in my history that fit that description. If you think you can do it, you'll improve the lives of a lot of developers.

+1. You're lucky you've had 2. In my 20 years, I've had one. I was about to start making the transition to manager via tech lead, but after working with my most recent manager...ugh...I felt dirty after going to meetings with him. I spent more time parsing his double speak than concentrating on what really needed to be done.

I have a huge problem with this, because what should be obvious is, the number of people who can be in management/architecture roles is necessarily much smaller than the number of people who are in basic development roles. Assuming the majority of aging programmers don't die of unnatural causes, the only way all of them continue to be employed is if the total size of the software industry is growing at a significant rate (as it has been for the last few decades) but there's really no guarantee this will continue forever and not only that, basic math tells us there is no way this can continue forever. I am starting to think that similar to models and athletes, whose careers start fizzling out in their 30s and 40s, our careers start fizzling out in our 40s and 50s.

Models and athletes can't do their jobs anymore as they age; modelling is all about the beauty of youth and most sports with pro atheletes do a lot of physical damage that adds up over time.

Our jobs aren't like that at all. We may not be able to handle 48-hr caffeine-fueled marathons anymore, but our experience tells us that those are a bad idea anyway, and we wouldn't do them even if we could. That experience is valuable, giving us insight and true productivity, and lets face it the job is sitting at a desk... we can do that well past retirement age, since we'll be doing a lot of sitting around anyway.

That's the theory. In practice, ageism is rife.


The difference between a programmer and an athlete is that the programmer is better at math and can save and invest and not piss away money, and enjoy an early retirement without lifelong body damage.

> maintaining half a million lines of code

10 young guys? Sheesh, back in my day it was just two of us, and that's how you started. Learned a lot about systems, architecture and most of all, how NOT to code. It really is a crime youts of today don't have to slog through legacy for a year or two before being given the keys to the sexy projects.

I wonder what all that google legacy code looks like, and how often the n00b says "I can't understand all this, I'm going to rewrite it all from scratch."

+1 My Cousin Vinnie reference.

An impressive example of the senior developer route is David Maynard of Box.com:

"Sometimes I have to leave a company when I get promoted to the stage when I can’t code anymore"


Cool, he cites Kelly Johnson as one of the two 'visionary's' he's worked with other than Englebert. Johnson is known in aerospace as the guy at Lockheed behind the SR-71 Blackbird.

He's somewhat more important than just the SR-71. He's the father of the entire Skunk Works project, and is also responsible for the P-38, U-2, and F-104, and had hands in at least another dozen important aircraft... and bundling them all up.. Area 51.

So yeah, he's one of the most important figures in aerospace of the last century. Billing him as 'merely' the guy behind the SR-71 is actually selling him short.

I agree 100% about Kelly Johnson. People who think of Doug Engelbart as only "The Inventor of the Mouse" sell him extremely short also. Google "The Mother of All Demos" and be amazed about how much he demonstrated and how much more he envisioned in 1969.

Thanks for the education, I had no idea.

This pretty much defines why I slowly drifted out of programming altogether and into management, after a few years of being a self-employed consultant.

Not so much a career choice, but simply finding the next relevant challenge. Still in software development, but I can see myself shifting out of software altogether.

It still surprises me that from starting out as a shy, introverted computer geek one of my primary responsibilities is now people management. But like programming used the be, the fact that it's hard is an important part of the challenge.

This is a great post. Another path is into sales. If you have a deep understanding of technology, are able to help people use it to solve their problems, and you can communicate the value to buyers, then you can do quite well in sales. (It's also helpful if you know a thing or two about how to dress and you like to drink.)

Another friend started out in programming and IT, but he migrated to a sales engineer job where he works for [big infrastructure vendor] to design solutions for their clients.

+1 this. One of the most solid technical leaders I know now is doing lots of sales. It's one thing to be able to build a product for a client, yet another to be able to sell to clients.

Do you know of any how-to guides for this transition?

I'm going for the fifth option. Build a software-as-a-service business that pays the bills and allows me to keep working on my own projects. No one can fire me (except my customers) and I still can code and noodle around with interesting stuff.

Well, then you're running a business, and you're wearing a manager's hat more often than not. And also a sysadmin hat, a DBA hat, a customer support hat, a marketing hat (a fancy white Stetson to go with your alligator shit-kickers), a janitor's hat, and an accountant's hat.

It's the ultimate generalization: being able to run a complete business.

Thats my route too. I figure that eventually in the next 30 years I'll be able to build some kind of technology company.

First off, brilliantly cogent post. I am getting to the stage where the latest fancy framework doesn't really seem as much of a win but more meta-bullshit to deal with.

> The problem for some people is that these kinds of more generalized roles put you in charge of systems that do not have the sort of clear-cut deterministic behavior you remember from your programming days.

Can you expand a bit on this? What do you mean by "clear-cut deterministic behaviour" ?

In the more generalized roles, you deal with parallel systems made up of unreliable carbon-based computing elements. You can't just feed them electricity and order them to execute programs. You have to charm, cajole, and/or threaten them at the right time in order to get them to produce the desired outputs. This requires some amount of patience and wisdom to do well.

They're also harder to debug because you can't inspect their call stack and they might even block their I/O ports if you send the wrong command, which varies between systems.

Hahaha. I guess I assumed this to be the norm in any system that contains more than one person building a product. :) I was more asking where on earth these deterministic systems existed and where I can get some. :)

I was going to reply, but I think this captures the essence much more beautifully.

This has given me a new appreciation for (competent) managers. A good manager that's put time in as a programmer can truly be a master metaprogrammer, with people as their tool, not programming languages.

"to cut through trendy BS to build solid performant stuff."

This is really the gem for those who don't want to take the MGMT route. But the tough thing is advancing in your pay-scale, etc., and really showing that your skills are really that much better than the young people who cost less.

The people you really want to work with/for already already know the value of experienced/senior developers.

I think you forgot a common career-path for the middling developer who has dropped off the back of the skills-wave - becoming a QA/Test engineer. It's not for everyone but I have met a lot of these guys over the years. They're always keen to tell you 'I used to be a developer'. I assume there is a pay-cut involved, but you do get to stay employed.

I think the best thing to me about the third path is you get an opportunity to directly help people. I didn't have that opportunity in programming roles and various companies, and it's really the best part of my day. I feel it gives my work life more meaning.

> I didn't have that opportunity in programming roles and various companies, [..]

You can get this in a straight-up programming job, too, if you take on in-house development for a big company, eg a bank. I am doing that right now, and while there's lots to complain about banks, the immediate contact with the users is a great change from making shrink wrap software.

There is another path, in the UK at least, which is to join the public sector, become employed by the state.

The UK public sector outsourced most technical work years ago to the likes of EDS, IBM and BT, transferring over existing employees. There's very little internal expertise left. Most contracts seem to be negotiated in a way that allows the big firms make huge amounts of money on the inevitable change requests.

Ah, yes, that whole gov.uk thing.

I must have dreamed it then.

And so must have the 180+ people hired to work on various parts of it who are not part of EDS, IBM and BT.

Add up Accidenture, EDS, CSC et al and the number is probably 180,000.

Path 1, 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.

2. 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.

3. 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.

4. 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.

One of the best replies I've ever seen on HN. Kudos for that.

This was a great question, plus a great answer from @bane. New technologies and new languages pop up overnight, it's overwhelming to keep up - so the next best thing for us to do was to 'hire our weaknesses' = management.

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.

I'm aging in reverse. I was a cripple in my early-mid 20s (cyclothymia) and at 30, I'm probably healthier and more energetic than average for my age. I still have cyclo, but it's managed and I lose less time/health/energy to it than the average "bro" loses to alcoholism/hangovers. Because of the cyclo, I can achieve an incredible amount in a short-term job (say, 2 months) but the superficial reliability that most organizations care about is not my strong suit. So I've seen a lot. No one would call me "old" but I definitely know what it feels like to be "overexperienced". It sucks.

You do not have to become an "X who programs" when you hit 40. I've worked with plenty of talented developers over 40, all whom see themselves as developers, not as "VPs who happen to develop".

I think you're getting confused by the other phenomenon involving roles, which is that once you accept the management track, you start losing dev mojo; cf. the CTO who loses their commit bit.

I should have mentioned that there is an alternative to "X Who Programs," which is an elevated title at a known company, e.g. Distinguished or Principal Engineer at Google or Amazon. People know that Google Fellows are rare and that it's hard to get there. There the X is "really good engineer". It's harder to get that, for most people, than to get another X.

Software as practiced today, as the province of firms who do nothing but software engineering rather than a back-office function of giant enterprises, is only ~25 years old. The software industry of the 1980s was led by companies whose flagship products wouldn't attract much attention as open source today.

It's not surprising that there aren't that many "distinguished engineers". If you'd entered the modern field at its inception at the start of your career, you're only in your early 40s now. As an employer of several people in their early 40s: they're not particularly distinctive looking. Maybe you know more than you think you do. Anyhow, look at the demographics and wait a bit.

> As an employer of several people in their early 40s: they're not particularly distinctive looking.

I can't tell, is this humour?

Hey. Watch it.

I'm late thirties, and I'm writing code every day and fully intend to keep doing so until someone pries my ergonomic keyboard from my cold dead hands.

Something to keep in mind is that this industry is aging and maturing alongside us. You can't use historical precedent for understanding unprecedented events.

My personal hope is that the software developer monoculture (young dudes with ancestors in Europe or some parts of Asia) will mature into the kind of diverse profession where people aren't any more surprised by a female coder than they would be by a female orthodontist.

until someone pries my ergonomic keyboard from my cold dead hands

+1 for this nice phrase :P and, out of interest: what keyboard might that be?

I was using a a 15 year old original Microsoft Natural Keyboard until recently, but PS/2 ports are getting more and more rare and PS/2 to USB adapters haven't worked reliably for me.

I just bought a Microsoft Natural Keyboard 4000 which is nearly as good, even though the keys feel more "mushy" than I would like.

I use the 4000 and have for the last 8-9 years. They break or otherwise fail to wear or spillage but I've had 4 of them and my hands and wrists don't hurt. If Microsoft ever stops making them I fear for my wrists. Every time I get a new job I bring in my own keyboard or have them get me a 4000 for work and leave mine at home. Best keyboard I've used.

Agreed, great keyboard.

Try the sculpt wireless. No mushy spacebar. I just don't like the esc key - small and different switch style - since I'm a vim user, but its not a blocker. I couldn't stand the 4000.

Yea, I too like the old good "click". Had to spend over $100 for Razer - the loudest keyboard ever!

Hey, thanks ruling out the 60s as too old even to consider. :)

I think anyone who is a seat-filler has a problem. But if one codes for fun, if one sees new technology and just DLs a tutorial and starts using it, if one is always thinking about how ones code can be tighter, such that every time one looks at ones code one rewrites it, one will be OK.

No need to stop coding to make money. Top coders do fine, and then one gets to code.

I am consulting for a company where I gave up a top spot so I would have more time to work on my startup: http://tiltontec.com/

I am sixty-two, have been coding head down on hard problems since 1978, on the Apple II.

Good news, grasshopper: it never gets old.

Now if you'll excuse me, it's time for my nap.

I'm 41, but I don't consider myself old.

Either way, I'm semi-retired. I do client work (iOS and experiential retailing installs) for about half the year, then I do my own projects for the other half.

I live in Vietnam but commute to NYC for certain client projects, so maybe 25% of the year there, the rest in Vietnam.

Prior to the move, I did 20 years focused mostly on new media/creative tech so my skill range crosses through design to code. This is pretty rare in NYC, so it's never been a struggle finding work, age has never come into the equation.

It's probably an arrogant assertion, but if you are exceptional at what you do, none of this nonsense about age will matter at all, so one should always strive to be exceptional in their careers. For me, that's involved 18 hour days, 7 days a week of working, learning, exploring, making mistakes and maintaining a healthy curiosity about how things work. Every piece of software I see, or motion graphic I see, I am constantly deconstructing in my head.

But I've worked with a lot of dudes that treat this as their jobs, and those guys are on a trajectory I don't understand, so maybe I'm not qualified to comment. I suspect if you're mid-level or worst, or that is the most you've aspired to contrary to talent or skills, you'll be set to pasture at some point.

The great thing about this move to Vietnam is that a single day at my day rate pretty much pays for an entire month of living here. So those months I'm not doing client work, that's a shit ton of free time to throw myself into technical and creative challenges that you wouldn't normally encounter working on projects for others.

As an example, I've always been fascinated with the tablet as a publishing platform but have always felt the current toolset a (adobe dps and magplus specifically) are glorified PDF generators that completely ignore the unique user experience properties of the device. So I spent a good six months in Vietnam working on the problem. And now I have publishing platform that eclipses Adobe DPS on a lot of different levels. I also publish a digital only fashion magazine here in Saigon (eating your own dog food). So life is kind of random.

You sound like your killing it, just wanted to say that. Romantically though, how is that?

I am in my 40s, and this is my experience:

I work as an independent contractor, and my pay has gone up

I still code every day, but my understanding of what is important has changed a lot.

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.

Nobody can guarantee you any pay scale, you make your own profession.

Family becomes a big factor, so job jumping is not something to be proud of, even as a young professional, it can be easily read as lack of maturity, and it plays against you in your resume.

Specialist vs. Generalist. There is room for both, but just be careful that you don't become specialist in a passing fad. Is better to accumulate specializations, so you become a well rounded generalist

Today I am coding in 3 different (but business process related) projects. I am part of the "think tank" that design the mathematical models behind the different products; and also work with the rest of the senior team on how to bring the energy of the younger people to a more self disciplined and productive place. We are finding that too many people think that "loud and opinionated" makes them noticeable, but the truth is that we cannot put high value products in the hands of the frat house king (to put it in stereotype terms: the bullied geek in the school probably has many more chances than the high school quarter back)

48, working at HP. I code every day and also get to tinker with embedded systems, optics, lasers, sensors, etc. Every day I can't believe I'm getting paid so well to have so much fun. I do keep up with the latest technology in my field.

> Do you have to go into management to continue progressing upwards in pay and influence?

No, like many corporations we have a dual path system although one level up from my senior engineering position I would have to do some visionary stuff, which I'm not good at so I'll probably stay at this level. Pay is not directly linked to position here.

> Is there a plateau in pay? Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?

Doesn't seem to be the case here. I could imagine switching jobs gets trickier in your 50s because hiring someone new at high pay appears riskier.

> Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?

Yes, major issue with two kids in middle school and good benefits at current job. Planning on being more flexible in a few years...

> Is becoming a specialist rather than a generalist the answer?

I don't think so. As an engineer I think it's always good to have a balance between a specialty and a broad base. I've benefitted more from learning new skills but having a specialty is often good to get a start somewhere.

> And lastly: if you're in your late 30s, 40s, 50s, what are you doing at your job? What are the older people in your workplace doing?

Fun stuff: writing code, building SW/FW/EE test systems, building production lines, running product tests, doing failure analysis.

Boring stuff: working with outsource vendors and CMs, working through regulatory issues.

Surprisingly, there's almost no corporate training and bureaucracy left. I think first all that stuff was outsourced and then we decided that our vendors were too expensive and just got rid of everything. Win!

Software is a craft. Why would we stop practicing our craft as we get older? Do cabinetmakers stop making cabinets? Not as long as their hands can hold the tools. I'm 53 and still a working developer. Over my career I've worked with languages from 8086 assembler and Pascal to C++, C#, and now primarily Python. I am called on now to do more leadership, and my judgement is sought on architectural matters more than when I was in my 20's and 30's, but the primary skill remains my ability to comprehend a set of requirements, and from the infinity of potential implementations distill one that will satisfy those requirements in a robust and maintainable way. It's a valuable skill, and since it has been feeding my family for a couple of decades now I see no reason to let it wither.

It seems hard to believe that I will be turning 50 soon, but I am still doing what I have done for the past 30 years or so. Every day I walk to work, get a coffee, fire up emacs, and start working.

Is there a plateau in pay? Sure, but programmers make okay money, so I cannot complain. If I want to work more I can sometimes do consulting work or teach a bit, but generally life is getting too busy for too much of either. I stay where I am because I love running up the steps every day to work, but really I've been happy in almost every job I have ever had.

My career has basically taught me that being a generalist in an age of hyper-specialization makes me very useful. Being able to code in many different languages and environments helps, but so does having domain knowledge in related fields (economics and statistics in my case). Softer skills like writing and public speaking pay for themselves 1,000 times over, as does having a sense of humor and a willingness to share credit and help out when the chips are down.

The older people in my place are doing pretty much the same things that I am doing, but a few a starting to wind down and think about where they want to spend the final days of their careers.

It seems way too early to start looking at my career in retrospect, but really I cannot imagine anything more interesting or worthwhile than the past 30 years have been in programming. It has been an amazing ride with more cool stuff then I ever imagined back when I was typing programs out of Creative Computing on my Apple ][+.

39.5 here, have been a 1 man shop for 12 years. At this point, someone would have to be insane to hire me as FTE, and I would have to be insane to take it.

The money is better than ever, and I'm getting more and more interesting things to do.

One factor over the last 10 years or so (I've been in the game for 20 years now (yikes!)) has been having the experience to know which technologies to even bother messing with.

Far more important than the above, is to mentor other people, help people, and befriend everyone you can. It pays off in spades down the road when some C*O calls you up to lend a hand because he remembers when you helped him out a thousand years ago, trusts your judgement and skills.

Likewise, payback can be a bitch, so making "enemies" is not a great idea. Life is too short.

>having the experience to know which technologies to even bother messing with.

Amen. This is, perhaps, the best productivity enhancement experience gives you.

I'm 40 and still actively developing software; I work with another developer who is in his early 50s and a bunch of people in their late 20s or early 30s.

I've not seen a hard plateau in pay but there's definitely a certain amount of soft leveling off in terms of percentages -- early in your career it is way easier to find a new job with a 50% pay increase, once you get into 6 figures that obviously becomes increasingly harder to repeat.

The only pay drop I've had was voluntary, to work at a startup I wanted to work at more than I wanted to maintain the pay I was making previously.

I think you can remain a generalist if you "specialize in being a generalist". My current job is doing Android client software development, but at home I code mostly in Go (servers, camera control systems, embedded Linux GUIs, etc) and I am still constantly learning new tech, new languages, etc, and still enjoy playing with technology in general seemingly much more so than even my late-20s/early-30s coworkers. Just built a RepRap 3d printer at home, have been learning about camera lens design and creating some custom lenses for my cameras (relatively basic Double Gauss designs with 4-6 elements at this point), etc.

I was doing dev at a large utility company in my early 20s. I was only doing it a few years (~4 or 5) when the tech stack was completely overhauled and it required me to re-learn the new stack. I started to transition across (in my own time, at my own expense) and then the company decided to outsource the majority of the work and take on the outsourcer's stack. This left me with the choice to re-learn again within a very short time frame, or make a change.

I figured it was a sector in constant skills cycle and decided to get out of the rat race.

By my late 20s I was a business analyst - having the tech/dev background really helped.

Now, I work in security. the tech/dev/business background is invaluable.

In short, generalism seems to be the path (in terms of skillset), whereas you can specialise in terms of career direction).


I'm sorry, I don't know what that means.

My mistake. Your story is very similar to a former coworker of mine. Left a utility for a security gig. Those were his initials.

I can't speak for the community at large but I can tell you my path, my plan and my worries about that plan.

I just turned 36. I had been a manager for seven years across a few companies, managing teams ranging in size from 4 engineers to 35 (five teams underneath me). I reached a point in my last job where I was spending 80% of my week in meetings and the other 20% trying to stay on top of what my team was doing technically. I found myself becoming less and less useful in the technical discussions as the team was building up skills in new technologies that I didn't have time to learn.

I felt like I was losing my ability to be an engineer and therefore my ability to be a good engineering manager. I was not enjoying any part of my job at all. The rare opportunities to write code and learn new things were my only time where I felt good about the work I was doing.

So, I quit and got a different position as a senior developer. I told my new employer up front that I had been a manager for a long time and I wanted to be more technical again and focus my career on technical expertise. I my new position I am able to lead and set technical direction without being a "manager" in the traditional sense, people don't report to me but I help define what we're building and how we're building it. I am able to write code, learn, teach and explore ideas without feeling bogged down by management. My goal is to grow technically as much as I can and avoid becoming a manager that spends all my time in meetings again.

However, I am not sure how long this can last. At some point career growth seems to always steer towards doing less hands on and more managing of others, so perhaps i'll just need to find a way to enjoy that.

Thanks for sharing. I have done something similar as well - getting out of a role that demanded more management from me and into a role that is more hands-on.

Go to management and learn to play politics. Sooner or later you'll have to. There will always be someone younger and cheaper that will be good enough for the not so challenging lob you have. You just can't compete with them. Yes, there are places where one can advance much longer on a pure technical path, but there are so few these jobs and places that it's just no realistical if you are not in top 1% both in technical or luck skills.

If you want more money, sooner or later you'll have to "take more responsibility" and "lead the team". While being on the management level just above the programmers, you'll still have some contact with the technical part, but when you progress further, you'll loose it and become the pure bean counter and look at other programmers as resources.

And you will hate that, but you still have this mortgage you have to pay, and to save for your kids colledge, maybe go few times a year on vacation, or you need to do that latest gadget as an impulse buy.

And with the time, you will hate your job, as much as anyone else at that position. You will start to question whether it was the right choice to become software engineer. But it was. You had some ten years when you liked your job and found it both well paid and satisfying, which is much more average person, even with a degree, can realistically hope to have.


Being in a similar situation, I had to vent a bit. I made my choice to switch to the dark side and go the management route. I know I'll hate it, but that's the reality where I live. I know I could get a few more years as a software engineer in Silicon Valley, but USA is among the last places on earth where I would like to raise my family. So, management, here I come.

I'd like to link to the top HN story now: http://math-blog.com/2014/03/10/stem-shortage-claims-and-fac...

The WhatsApp guys are experienced engineers who were rejected from FB and Twitter. Prepare yourself for ageism. Your path is to create a $19B company.

Yeah, that advice has been bubbling around since the deal was announced. It just strikes me as "instead of being a unicorn, create one," though.

I'm 37 in May. I have been:

A marquee erector

A chemical toilette attendant

A barman

A bouncer (prefer the term doorman)

A commando

A telecoms engineer

A programmer of various different languages

Now I'm the CTO of a start up and we don't have any older people (apart from the founders by a few months). About the only thing I can think of to say is to keep learning forever, as many different things as you can think of. With a background in development and that kind of mentality you'll always be useful to someone! :-)

Clean Room Technician: You know what they do with engineers when they turn forty? [to Aaron, who shakes his head] Clean Room Technician: They take them out and shoot them.


I love primer. This quote made me smile.

beat me to it :)

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.

I'm in my early 30's, developed professionally for over 15 years.

The one thing I see over and over now is how secondary development starts appearing the more I interface with upper level management directly. There is a major starvation for developers who can learn to understand a problem and leveraging a solution to magnify competitive advantage.

I spend more time thinking and analyzing the problems (way more) before ever daring to trivialize something to whip up some code.

This ends up with my development work being tremendously more valued, instead of just being a means to an ends. As I get older, the value I add is not just coding, but being able to architect a solution that

I'm in my mid 40's, still programming away but basically have been building and leading teams for a while. As it turns out I really like working on improving process. I've watched friends my age burn out and leave the industry. A lot of the guys that dropped out were people that weren't really obsessed with computers, but rather just chose that as their major - possibly for financial reasons. I can see how all of the minutia could get annoying, but I just see it as part of the business.

For me it's not just about building things anymore. It's more about what I consider - building things and doing it with style. Give me the time to plan an app, put together a team, predict our finish date and then build our system. My goal is to do it with the team feeling happy and proud of their work the whole way. No horrible crunch mode or last-minute heroics. At this point in my career that's what I aim for more so than just getting an app built.

I also like helping young people become proficient, reliable developers who know how to plan and maintain large systems. Young developers tend to have a lot of clever ideas and know the latest tools - but I have various skills that they lack or find uninteresting. So I don't see them as competition. I think young and old developers can really compliment each other.

As for salary, it's hard for me to say since I'm in year 5 of a startup venture that just hit the black last year and is looking towards being a profitable company. So whether or not I will ever be looking for another job is something that I'm unsure about. I've pretty much decided that I would like to manage larger teams - not because I have to but because I enjoy it.

My story is, I think, atypical. I have no college experience, have been in IT for 19 years, and am now 42.

I was hired to my current gig 11 years ago to fill an emergency need for someone with perl and B2B experience, where I showed myself to be competent and approachable, and received a token promotion and consistent merit raises.

I have made all my IT hires in a similar way. In 1995 CompuServe had an immediate need for anyone who could tell a mouse from a keyboard, and due to my experience troubleshooting modem connections to play better dial-up Doom, I was put right into tech support in the ailing company. Before they imploded, I was hired at an ecommerce VAN to troubleshoot comm problems and write comm scripts for some of their software packages when they were very short on good comm help.

At each of the companies I've worked for over the last 19 years, I've dodged layoffs, demonstrated competence and agility, been given a single token promotion, and have been paid below the market average for my position due to not having a college degree.

Pluses: Haven't been fired, laid off, aged out, or put out to pasture. I have had consistent employment, taking only two contracting gigs over the years, both while still employed full time. Plus no one gripes that I wear jeans in a business casual environment, or that I look like a hippy with my 21" hair.

Minuses: Fewer promotions, lower average pay.

If I did the math of some of my peers who negotiated more pay from employers, but were then laid off during low profit years, I would either break even or end up in the black by comparison.

By showing competence, a sense of urgency, and willingness to keep an enterprise system healthy for the long game, I've done pretty well, plus no pesky student loans to pay off.

...but on the other hand, I haven't written that killer app, founded my own tech firm, or otherwise found my way to riches. As 50 gets nearer, and as I cost my company more, any of that may change. I fully expect within the next re-org or two to be handed a severance package, and then see if my secret project-x is a gold mine waiting to happen, or if I've been kidding myself all these years.

Why wait? You should see if your project-x is a goldmine now, when you have some leeway to iterate pivot if it turns out its not the gold rush you expected.

44, and yes, it's a concern on the horizon that there might be ageism - but so far I'm not seeing it.

> Do you have to go into management to continue progressing upwards in pay and influence

That depends on how much pay and influence you want. At some point, influence means managing. If not in title, certainly in actions.

> Is there a plateau in pay? Yes and no. If you stay in the same qualification range at a given company, your pay will stagnate modulo annual increases. Move up or out to improve.

> Is there a drop in pay switching jobs after a certain number of years experience because places are looking for 5+ instead of 20+?

There can be. If you can, trade the drop for something you care about that advances your career. E.g. 2 jobs ago I took a pay-cut, but that translated into being given the responsibility to build a new team from scratch. It was something I wanted enough to take the cut, and it was a great learning experience. I subsequently traded back for money ;)

> Are older devs not looking for new jobs because they have families and want more stability/are focussed elsewhere?

Can't speak for all - I usually pick jobs I like, at companies I like, for pay I'm OK with. As long as the job comes with growth opportunities, I don't look for new jobs because I'm enjoying what I do.

If I don't, I'll probably switch.

But yes, I've also settled down a bit more. I wouldn't root up my family on a whim and move to a different continent any more, unless it was a stellar opportunity. Or maybe I'm not settled down, just pickier.

> And lastly: if you're in your late 30s, 40s, 50s, what are you doing at your job? What are the older people in your workplace doing?

I write code, and am trying to move into a bit more of a lead position, because that's what I care about. In general, the ones who want to write code do so. The ones who want to manage do so. And we've got people that are significantly older than I am.

In short, I wouldn't worry too much about being too old just yet :) Just make sure you keep your skills sharp.

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.

Few weeks ago I got an email by a person who wrote a famous piece of software in 1971. He was given some software I had written and was asking me questions because he intended to make a few additions. My software was written in C#. I don't know what he used in 1971 but most probably it wasn't C. I have to admit that his questions made my day (or week). I learned that he is over 70 years old and programs every day. I hope I will be doing the same at his age.

Can you tell us his name, please?

Would love to, but I think I would look like I am namedropping. Also I probably would need his permission to mention his name.

My father's in his 60s. Formerly a Pascal/VBA programmer, he's found it very tough going over the last decade. 20 years ago, he was working for the London Stock Exchange but now scrapes by making (actually very impressive) complex Excel macros for local small businesses.

It makes me really sad. I've tried retraining him in web development, and he actually picks it up really quickly, but I doubt there'd be any work for him out there given his age.

I'm in my 50's and still do what I've done since my 20's then as a hobby and since 30's for pay.

The older people where I work? Yeah not sure, management mostly I think. Some older people still program where I'm at.

My dad taught himself programming as a hobby in his 60's.

Why is this ever even a question anyway, no one asks what happens to people in their 50's who craft furniture, drive trucks, carry on scientific experiments, climb mountains, etc. Do what you like.

Older developers get garbage collected

There's an easy solution to that problem: have two older developers take each other as references....

That's what's known as "forming a consultancy".

Don't most garbage collectors use tracing?

Only the younger ones...

Actually, tracing GC is older than reference counting.

Only when their reference count reaches 0.

young generation garbage gets collected more often :)

They do better with generational collectors

then they cast to void()

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact