The answer is pretty reasonable in the Quora post (Answer: no). In my experience, people who get something more out writing software than a salary tend to stay in software development, at some level, for their entire career.
That said, if you're a software developer and you're also good at communicating and managing people, seriously consider moving into management. While I think the stories of the '10x' developer are true, I also think a good manager can double or quadruple the effectiveness of their entire team. That has a huge impact both on the careers of the people being managed, and at the company.
I also think a good manager can double or quadruple the effectiveness of their entire team
Another way of thinking about this: Managing people really well is really hard. Most managers are not the best managers. Average managers often end up doing things that reduce the output of their group in the interest of things not going horribly wrong. The Pareto distribution rears its ugly head, once again.
I wish I had more than one upvote. If you have no management experience, and no mentorship in managing, you have no business managing people. Managing requires empathy and a desire to help your subordinates level up, not SWE skills. Your job is to deliver value to the org and to your individual contributors in equal parts.
At least as a software developer, you're only breaking code. But you start affecting people's lives, emotional well being, and career paths when you're a manager, and I find it rare where a manager understands this.
This is a big problem in startups. Developers with very little to nothing of not only management experience but even development experience become VPofE/Directors/CTOs and wreak psychological havoc on people they are supposed to manage. Sometimes they do it on purpose because of insecurities or many times just unintentionally.
Usually the bigger problem there isn't as much the individuals, but why the startup needed that role to begin with.
A lot of times early companies will go through the motions of, "needing" a VP of Engineering, or CTO, or whatever. In reality their process does not need that, and those roles are either meaningless titles at best or cause unnecessary process to crop up and hinder productivity.
Team lead is acceptable as it's more of a servant leadership relationship, and under the right circumstances, a team lead should be able to grow into a full blown manager role.
This perfectly articulates something I tried to get across to upper management last time we hired a manager for our team. It seems so obvious and reasonable, but they wouldn't hear it. So, we ended up hiring someone who not only had no real management experience but who also didn't particularly _want_ to be a manager, instead preferring to write code.
This created conflict exactly as you'd expect and team morale fell apart, projects slipped, etc. Of course, management takes no responsibility for this, instead diffusing blame to employees via suck-it-up type platitudes (couched in "nicer" language but with that essential meaning).
Why, though? I mean, you’re looking at the best case scenario: developer turning manager boosts productivity of company X.
But what’s in it for the developer? If the developers is happy and well-compensated bad has no managerial/executive ambitions/fantasies, why ruin a good thing (with a gamble, at that)?
Personally, I loved to code, but management has been much more fulfilling for me. Helping my team grow, professionally and personally, is a hugely rewarding experience. I still get to exercise some problem solving skills (though I let my developers make the technical decisions) and I still help craft a great user experience, which were my favorite parts of being a developer anyway.
Once you know how to code really well shouldn't you be in a position to manage developers and ensure that they're doing a really good job at writing code? You'll be able to help them tackle bigger problems, work on more ambitious solutions, than they could if you're stuck cranking out code with no time to assist.
If it's your job to magnify the output of your developers, when you know intimately how to do their job, you can get spectacular results.
Non-technical managers can't do this, they don't have the depth and insight to help shape their team the same way a developer does.
In my experience it depends on what you love about coding. I happen to really like systems, and building a good team is much like building a resilient system in code. Each piece supports the others.
But it is not a good idea if you really are passionate about the writing. For example, my daughter majored in English because she wants to write novels, not because she wants to teach English. So in her case I certainly wouldn't tell her to go get a job as an English teacher.
In my opinion, the second worst kind of manager is one that doesn't want to be a manager and would rather stay an individual contributor. Their inner conflict is harmful to the group.
I would agree with that, particularly if you totally abandon programming. But management skills are useful as you continue your programming career and development.
When I worked at Microsoft, I asked my dev manager why he took such a boring (as perceived by me) job. He said that he'd peaked at how productive he could be personally, and the only way he could improve was to scale out...
A good manager is really, really hard to find. Good developers are easy to find (relative to good managers). So, while I don't want to get into management, I also recommend it to anyone who might have potential in that regard.
Senior developers don't just write code. They know how to get other people to write code and frame problems in a way that they can be implemented within whatever organization employs them. Many companies value these talents quite highly. They are not that different from the skills that characterize great managers.
I don't know man. Middle management is a really shitty job. You have to do stuff that you don't believe in (because upper management says so, and they _might_ be right, even if every fiber in your body tells you they're wrong). As a dev, even as a very senior dev - I find that it's ok to be true to yourself, and say that you don't believe in it even if you have to do it. You can also easily switch teams. As a manager - you _have to_ be positive and sell it to your subordinates, who may be (should be!) your friends too. If you don't sell the vision well, there's no real way to know whether it failed because it really was a bad idea, or it failed because you didn't motivate your team to work on it.
This, I found, is too much for me. I have no remorse if I demotivate my managers; and I can keep my mouth shut and not say anything, to avoid demotivating my junior-dev colleagues. But as a manager, "keeping my mouth shut" is not an option.
If you decide to stop learning new technologies - yes.
If you want to continue learning new tech and position yourself as a truly experienced engineer, there is plenty of headroom for developers willing to continue to grow.
I'm 40 years old and I just had my best year yet - by far. Obviously a big part of that was the decision to move into contracting, but I'm not particularly worried about getting put out to pasture just yet...
I am 50 and I do OK. I also see people around my age and older who do well too. It seems to me that a lot of people who get filtered out in their 30s should never have been in the profession either for lack of motivation, interest or talent. If you are not self motivated to constantly evolve you have a problem. Moreso than in a lot of other professions.
i did just that, but kept programming as a 'hobby' (a real engaging one, time-wise and all). I feel, as older I get (turned 37 a week ago) that more power I wield. Tasks that were daunting when I was younger now seem trivial, new technologies are understood with more in-depth views and I grasp them faster than ever. Focus is much more intense too. I feel it's not even my proverbial final form. Age is an advantage as much as youth is regarding energy (although I still haven't noticed a drop in work stamina yet).
"If you are not self motivated to constantly evolve you have a problem. Moreso than in a lot of other professions."
I was self-motivated to constantly learn, and had no trouble doing it... when I was young. It was the right profession for me then, when I had the interest and passion.
After a while, though, much of it starts to seem the same. The towering vistas that were once full of mystery, adventure, and discovery turned in to endless plateaus of rinse and repeat learning of technical minutia and buzzword tech of the day. I also developed lots of new interests, and started to want to have an actual life outside of work.
So then I very consciously decided not to strive to excel in my field anymore, because it would just take way too much of my time, which I'd rather spend doing other things. Then, before too long, I burnt out, and took a long break, eventually coming back to the field because I burnt through all my savings and needed money. This happened a bunch of times, with ever longer breaks in between.
Every time, I was able to brush up on the technology knowledge and skills that I needed to get a job, but I was never as excited about it as I was when I was young, and actually started to dread working with it, as I found it mind-numbingly boring.
I should have definitely completely switched careers after my first major burnout, but I didn't, and I've come back to the field again and again instead. This has definitely been a mistake, but here I am. I'm good enough at what I do to get work, and to even impress my managers... while I still haven't burnt out this time around and am still capable of putting in the overtime to get a lot done. But it's just a matter of time until I burn out again, and this pattern of not working for extended periods of time looks horrible on my resume, I haven't learned nearly as much as I would have had I stayed employed the whole time, and my career is nowhere near as advanced as that of people who can hack full-time employment long-term.
I don't think my case is typical, as most people seem to stay employed continuously in the long run. But I can't, and I feel I'm way too old for a career change now... and, anyway, I suspect whatever it is that I'd switch careers to would get boring before long and I'd burn out again. My interests are far too varied and I can't stick to doing any one thing for long before getting bored.
This is not to mention all of the endless corporate bullshit one has to put up with at work. Some people are really career-oriented and can deal with it. I'm not.
This is me exactly. Started in the tech field, burnt out and became a teacher, returned to tech for the money, and I'm currently in another burnout period. I agree with everything you said about learning being exciting when you're new, but not after you've been doing it for a while. Also agree with the bit about corporate bullshit and just not being a career-oriented person.
I really think this time I'm out for good. I'm approaching that age where it's hard to get programming jobs anyway. I've got some side businesses doing OK; I'm working on ramping them up, and trying to get some teaching gigs to fill the gap in the meantime. And if all that fails I'm considering getting back into the lawn care business like I did when I was a student.
I used to be very passionate about programming: I started in 4th grade, started my first software business in college, and was always doing side projects.
That describes me exactly. Coincidentally, I turned 40 a few months ago.
I took my current job with the goal of transitioning into a leadership role, either product or management. I was walking into a situation where I knew people already here and was hoping to leverage that. Those people left a few months after I started, and now I'm kind of stuck on an island. I've approached my current boss but he's completely uninterested in promoting any sort of career development.
Bottom line is I'm burnt out, depressed, and bored out of my mind. The idea of learning Yet Another Web Framework fills me with dread (I'm currently doing Node/React stuff and hating it), not because I don't think I can learn the tech, but because it's no longer fulfilling in any kind of personal or professional sense.
So, I really don't know where I'm going, or what I'm going to be when I grow up.
A lot of times I feel like there is not career track after you hit "Senior Software Engineer", especially outside of super specialty tech. It feels like the only real track is management, and most places don't want to promote or change the management structure at all.
It's honestly very hard to get excited about going from Senior Engineer to Staff or Principal or whatever the text title is. Nothing will change in terms of the job. Pay is pretty well pegged to what you started at with single-digit percentage increases every year or so.
Skill wise? Learning new frameworks is just not as exciting as it used to be. Even then - the reality is that whether you're the most skilled dev in the world or a mediocre dev with only a 9 week bootcamp of experience, you're going to not understand the new environment you're dropped into when you start. It's full of weird quirks and historical oddities. It'll take time to understand those and get productive in whatever the particular stack is.
All of which feels like... every time you start a new job, you're starting over. With a little more insight and vision, but fundamentally, doing the same thing over and over.
I look around at my bigN and I see all these 20something people who just love what they're working on and are passionate about it, and I get it. I was the same way at that age.
I just don't care anymore, tbh. I want to work on something fun, and things that are fun don't usually provide a paycheck. So I grind away, and the years waste away, and I don't know what to do about it. I'm smart enough to get by without investing a lot of effort, but I'm really just wasting my life.
I have already felt the way you do and I'm only 31. I think 90% of that feeling comes from the type of problems your job is asking you to solve. It's definitely tough to keep the interesting work flowing in, and avoid the tedious "hey build yet another crud app!"
My strategy for my career is to try and position myself into a position of enough authority to decide priorities around software engineering, and what my team is working on. Then I can delegate all of the boilerplate to the younger engineers, and spend more time collaborating on much more interesting and difficult problems.
Shit, you are my long-lost brother, apparently! I tried to get out earlier this year and it didn't take. I have means, I just have no idea about what else to do.
You need to start consulting, or body shop contracting. Working six months of the year as a warm body is doable, ditto for consulting but you need to do all your own marketing and sales, and that’s not really compatible with completely dropping off the face of the earth. You can do it in five to ten hours a week but you need to be disciplined and consistent about it.
I think I escaped this because I got into tech fairly late. I dropped out of school, did windows desktop support, got tired of that, worked for a voip company, got tired of that, became a network engineer, got tired of that, went backpacking for three months, became a sysadmin, and almost immediately started shifting towards devops — at which point I hit the career lottery— something that I really enjoyed and also paid a lot of money. But I was already 36. So I’m 42 now and I absolutely love my job and have recruiters beating down my door. I imagine I won’t get burned out for five or six years and by then I’ll be ready for management.
The best software engineers I have ever worked with were all 30+ some 40+, some even 50+. It is simple, practice makes perfect. All of the old timers were perfect culture fit as well, if somebody curious about that. I know entire companies built by only 40+ software engineers too.
>If you are not self motivated to constantly evolve you have a problem.
Programmers to programmers: You must be a super agile ninja capable of teaching yourself everything at a moment's notice.
Businesses to programmers: Yeah, we still need people doing Java 6 and VB6. We're also going to disregard all of your security and technical debt concerns. We're also going to hire managers who suddenly change a bunch of tech, causing the rest of the team to re-train themselves, harming their career.
I still don't get where this need comes from. The world still needs LOB developers. The uber-ninjas haven't solved that problem yet. It isn't going to maximize your lifetime earnings, but you're not likely to retire under $100k either.
Programmers are extra-ordinarily hard on themselves and other programmers in industries where businesses still just don't give a fuck because they are making so much.
> Programmers to programmers: You must be a super agile ninja capable of teaching yourself everything at a moment's notice.
I'd be interested in a demographic breakdown of the people who say this. I'd be willing to bet that most of them are in their twenties, live in SF/SV or Seattle, and/or work at startups or insanely demanding trendsetting companies (e.g. Google, Amazon, Tesla, Apple). In other words, these claims are made by people who care about being "cool".
I don't think you'll hear this much from people who live in less trendy areas and work at less trendy companies. Older people and people who work at conservative companies in conservative areas of conservative states (Hi, I work at a B2B telecom in Plano, Texas, and I'm in my 30s) probably aren't going to be making those kinds of claims.
If you stop caring about being "cool", you'll find plenty of work that'll sustain you until you retire.
> > You must be a super agile ninja capable of teaching yourself everything at a moment's notice.
I imagine there's also a good helping of: "Hey, the MVP works and I won't be here in years 2-10 maintaining it, so everything I can see indicates I successfully learned X on my own in a month."
Not in my opinion. 51 here and doing better than ever. I don't know how long it will last, but the trend for me at least has been better every year for a decade or more.
The answer depends on location, company and job role. There are some companies (Big 4) where there is a path to growth as an individual contributor even after 35-40. Please remember though you tend to spend a lot of time in meetings in these companies as you grow. A lot of popular Open source projects have senior developers as contributors and these people are sought after by multiple companies.
I have also seen a lot of senior developers go into consulting although they have to do a lot of other stuff than coding. I think as a senior developer you do need to be good at little bit of project management (ex: guiding junior devs, de-risking a project completion, contributing to product management decisions). If that is the case and you have a leadership who can recognize the technical value you bring to table, you should be handsomely rewarded.
Depends. If you look up to - John Carmack, Jeff Dean, Jon Skeet (a lot of more names), and keep learning, growing and outpacing yourself from yday then sky is the limit.
Most of the recent psychologists who study expert performers all tend to agree that "genius level" just like "innate talent" is a cognitive distortion and discredits the amount of actual effort, practice, and honing of their craft these individuals put into it.
We are all born with the same brain* (edit: see the ted talk on the "After 83,000 brain scans"). Some of us just aren't born in the right environment to curate it and never learn the best ways to use it ("learning how to learn") given the current dominant socio-economic factors. It gets harder as you get older not because of age but because your anxieties, fears, and distortions become more reinforced, so breaking down those thought patterns becomes harder
*: I mean this more or less, not literal. To clarify, I am speaking more specifically to neuroplasticity and neurogenesis. Maybe some things come easier for other people out of the gate, but this wasn't because of some "innate" talent, but rather some factor of their development, both internal and external, provided the acuity and propensity towards excelling that specific thing, but if you molded another brain from scratch this same way, you would more or less get the same result.
edit: With the TED video,I was again referring to the take away: "You are not stuck with the brain you have, you can make it better." So if you were "never born with the ability to be good at math" this is a distortion, just as much as "I am only mediocre at math and will never be great at math" is https://www.youtube.com/watch?v=esPRsT-lmw8&t=599s
Besides this, I think, focus among other things also plays a big part in your abilities. If I am checking FB every 5 mins then I will never be able to match the learning abilities of someone who does not even care what is happening around him while he is learning.
> We are all born with the same brain (see the ted talk on the "After 83,000 brain scans"). Some of us just aren't born in the right environment to curate it and never learn the best ways to use it
That's blatantly untrue, and we have shitloads of twin and adoption studies to prove it.
I'm in my early 40s. One of the most difficult things I'm wrestling with is being typecast, people forming a rigid perception of what my interests and skillsets are. What I'm actually working on, interested in, and doing are often not inline with the schema people have in their head about "who I am." I feel this force of expectations pressing in, good and bad. To some extent, you can only make the best of the opportunities you have, and the opportunities that are thrown my way are all what people expect me to be doing, regardless of what I think of it. I have a job, but the politics and management are horrible, and I feel myself being boxed in by social dynamics and cultural factors. And then the effects of these politics are identified as being about me, rather than my situation, and it becomes kind of a vicious negative circle.
My broader point in response to what you're saying is that I've grown deeply suspicious of claims to genius. Sure, there are brilliant people out there, and hardworking people, but there's also a huge element of luck or circumstance. I've seen this firsthand with people at the top of my field I am close to, very famous people, who had huge changes of fortune due to circumstances changing. They sometimes could reverse course, but only because they had enjoyed good circumstances earlier, and people could say "oh, X was brilliant--they just went through a rough patch." The people who got those rough patches early in their careers aren't afforded the same second chances, and are written off.
There are far more brilliant, hardworking people than we give credit to. Most of the advances in our society are not due to single brilliant individuals, but due to incremental improvements day after day, by people who we never learn about. The politics of credit are soul-crushing when you see it up close.
To me the single most pernicious problem with ageism is the stereotype that you are incapable of changing or learning something else. We want to put people into boxes, boxes based on vocation, and ability, and personality, and the older someone gets the more of a box we want to put them in. For people who have happened to land in the right places at the right time, aging can be a wonderful accumulation of security. But for the rest of us, it feels like being punished for your environment, or punished for the stereotype others have of you--it's as if you're being held to account for others' perceptions of you. To some extent, that is a valid stereotype, but to some extent it is not.
I feel more vulnerable now than any point in my life, because I want more than anything to leave, to change, to improve my life and that of my family, but so far it seems impossible without making things worse. When I was 20, people seemed willing to believe I could do anything; now it seems people are skeptical of me doing anything different from what I've done.
I think the biggest reason this reputation exists is that the industry has grown so quickly and the industry itself is still so young relatively. This naturally causes the median age to skew younger, as there just hasn't been enough time for the larger, newer cohorts to age!
If you still have the passion for development and for learning/improving you should be able to keep going.
It seems no one is 100% safe from layoffs or companies making bad decisions.
I would encourage everyone to explore creating products/SaaS if those things are interesting to you. There no better job security than running your own business.
startupsfortherestofus.com is a great podcast to learn about this. Rob details his rise from consultant, to small successful sites to a $XXM exit. Amazing story.
Or just people with good business sense. We hired someone a while back that put on her CV/resume that she had experience working for companies. I forget how she phrased it, but "good business sense" catches the general idea.
It turns out she's amazing because she knows how business works and how to get things done efficiently and what the business really wants from her: Quick, stable code.
Others we've hired that didn't have this skill have not fared nearly so well. I'm definitely looking for that kind of thing in future hires now.
I'm 48 and I'm doing better than ever. The key is to do what you enjoy and to keep developing yourself.
And I happen to enjoy programming, I liked it 35 years ago when I learned how to program and I have a feeling that I will still like it 35 years from now when I'm 83.
Definitely not, but you should steer clear of the baseline jobs at large corporations. They usually have generic titles like "Software Developer" or "[Technology] Engineer" (iOS Engineer, Android Engineer, Front-End Engineer, Node.js Engineer, whatever). Those jobs are designed to be filled with recent graduates who will be doing rote implementation work using a specific technology. They'll give you a pointless whiteboard interview where you're quizzed on things that you learned at college but will have nothing to do with the actual work.
Don't be pegged down to a specific technology box, because at 40 you've probably already seen plenty of them come and go. Use that experience to an advantage. Either get into consulting or work with startups that need a wider perspective.
Depends where exactly you live and what kind of companies you work for. I see older programmers and developers around. It tends to be expected that you work more independently including communication with other departments/customers.
A lot of people leave on their own before they get old through. Some burn out due to bad luck or wrong choice of employer. If you buy into believe that development must be late night thing, then you are likely to burn out and then seek different profession instead of just different employer.
Many many guys actually seek non-development positions that are sort of "infected" with a bit of tech. So they become managers, analysts, those architects that do just documents etc. This is where most people seem to leave. That sort of work creeps into your job more and more regardless as you age, simply because less experienced people often can really do it and it tends to be critical.
Never stop learning, even tech you might dislike may provide a path to keep you relevant.
Also work on your soft skills.
A developer that can jump between technical meetings, discussing with users, other department, understands architecture and domain knowledge is much valuable than someone that just codes all day long.
When all else fails, you can always try to go consulting on the domains you love.
I've known a lot of people that don't mind that. They've got a good career and still have time to do other things, like, you know, live a little or raise a family.
In the general sense, this is the wrong place to ask. It's a self-selecting group in that most people over 40 here will be among the group that lasted in the career. It won't give a sense of how large that group is in the wider world, nor how many didn't stick with it.
On the other hand, if you want to hear how to make it past 40 in software, this is probably an excellent place to ask!
Then let me ask: how do you make it past 40 in software? Specifically, how do you position yourself so that you are actively sought after (rather than merely employable)?
Find a niche that rewards experience in something other than code. This could be non-technical (e.g. "business"), or it could be something more deeply technical (e.g. scaling, machine learning, search, etc.) To some extent, the older you get, the more this happens, naturally. But you can and should make strategic decisions about where you choose to devote your attention.
The important principle is that you should devote your learning time to things that are more likely to survive. A good way to do this is to pick something that has been around for a long time. Knowing how to write an optimized linux kernel driver is far more long-term-valuable than, say, a Javascript framework. Knowing how to do quantitative marketing is even more valuable than that.
The absolute worst thing you can do is to chase the new shiny every year. If you do that, you will never be more experienced than the most junior member of your team.
Why would JS be less long-term-valuable? It's only 4 years younger than linux, it's more common than linux and has a much larger community (especially compared to the linux kernel driver one). I don't see either going anywhere in the next 20 years.
I changed it to "Javascript framework" to stop triggering the JS devs here, while making the identical point: if you specialize in a technology that was invented last year, you are taking a big risk that it won't survive. If you pick a technology that has been in active use for over 20 years and is currently popular, you are taking less of a risk. This is harder to do, but like many things that are hard, the reward is higher.
I really wish it were possible to make reference to JS in a less-than-glowing light without being downvoted, but alas. Substitute any other brand-new technology for "Javascript framework" if you're having difficulty seeing the argument.
I did not downvote, but I do think JS is a bad example. JS has been active for over 20 years and is currently popular. Sure, new frameworks are popping up and everybody rallies around "the latest", but come on, it's not like Java and C# are written in stone.
I wouldn't use Java or C# for that comparison, either (though
yes, it's a safer bet that Java will be popular 20 years from now -- Javascript has only become popular as a language in the last 5-10 years, whereas Java has been popular since the 90s.)
But would I bet on Javascript over (for example) C? No way. Any new developer would be wise to learn C, even if they completely ignored Javascript. And I don't need any technical details about the language to make that call.
It was born as a 'just good enough' hack, jammed into a static document presentation system into which interactive application functionality was shoehorned with pain points at every turn. It currently writhes in a morass of dependency hell, sprouting a hundred duplicate efforts of trying to soften those pain points every day. And it managed to get so big because the W3C continued, year after year, to obstinately refuse to acknowledge the web as an application platform until very recently.
But, they did acknowledge it. And they're now making design decisions to facilitate the web as an application platform, rather than intentionally trying to make application development as difficult as possible to dissuade it. So now we've got WebAssembly and tomorrow or the day after we will have any language anyone wants to use being used. In that arena, Javascript will get pantsed and laughed out of the room. It will probably happen with pretty amazing speed, as there are legions of developers who have been holding their breath for this for 20 years.
Although you've been downvoted, I think your question is fair, so I'll try to give it a fair answer.
In this discussion, when we talk about value, I think it makes sense to look at value in the sense of how valuable a skill is to the longevity of your career.
In that sense, JavaScript has some upsides - it's everywhere, and will likely continue to be everywhere. There will be lots of demand for JavaScript development.
But because JavaScript is everywhere, tons of people know it, and tons of people are learning it. So although there will be lots of demand for JS development, if you're a JS developer, there will also be a ton of people offering a skillset that is broadly similar to yours.
As you mentioned, the demand for something like Linux driver developers is tiny in comparison to the demand for JS developers. But the talent pool is relatively tiny, too. So it might be easier for you to differentiate yourself because when an employer is looking for someone with your skillset, they're not going to have to wade through hundreds of resumes from people who look pretty qualified.
In general, I think it's most valuable to specialize in solving a certain type of problem, where programming just happens to usually be the best way of solving it. It's often easier to sell yourself as a solver of specific kinds of problems than it is to sell yourself as a generalist with experience in JS, HTML, CSS, etc.
It's true that differentiation is a factor in career longevity, but it's not the point I was trying to make, nor the one that I would emphasize. The true advantage of learning how to do kernel development (over, say, a Javascript framework) is mostly that you're learning a technology is likely to be in demand in 20 years.
Given how much JS development thrashes, it's a pretty reasonable bet that whatever you're learning this year will be out of fashion next year, and irrelevant in five years. That's the high-order bit, when you're thinking about your career.
Even for something as "narrow" as linux kernel development, I can pretty much guarantee that someone will want hire you in 20 years, so long as you are competent. I can't make that guarantee for most technologies.
Java and Spring, or C# and .net. Java is derided as the next cobol, but there is a lot of new development, lots of jobs, and strong demand for senior talent. Source; me, been doing java since 2003. Age 40+.
Can confirm. Also, I suspect a lot of this "there's no life after 40" stuff mainly relates to startups and certain small companies. It certainly doesn't apply to BigCorps.
I suspect this is true. I hear the "middle-aged programmers aren't employable" story a lot on the internet, but in the large organization where I work I, in my mid-20s, am conspicuously very junior. Most of my coworkers are middle-aged, most of the program management are getting into their '50s, as you might expect of someone in a role seen as senior.
but how many people who are middle age try to "enter" the industry and succeed? I can answer that for you: those who have close friends in power who wish to hire them. As you age yourself, you may see this if you are sensitive to it. We need to separate the two groups, because thrre are two issues here. 1.aging programmers already working in the industry and 2.those who are accomplished in another dying field who decided to/had the good fortune to be able to reeducate themselves in a new field for them--programming. It's the second group that have trouble even getting an interview, and when they do, are often passed up for a younger "junior dev" who is not as skilled. I realize I can only speak to what I've seen here in NYC, but I keep seeing it, and I see it a lot. So are we going to acknowledge it? i hope so. I hope we can find a way to allow people to change paths in life when their path ends, if they are humble and willing to work hard. That is the kind of society I'd like to foster.
Skepticism of bootcamps (and other non traditional paths) is not the same thing as agism. This industry is further along in figuring out the former than others, but you're right that it has further to go. It's just not the same as agism, though.
You are correct, of course. But when someone over 40 has a much deeper understanding of programming in several languages, a CS degree, AND experience from 2 bootcamps, AND at teaching (in 2 bootcamps, at a University, and with private clients) AND has coding experience at a school, with private clients, and one's own side projects in several languages- a linguistics blog, journalism and technical writing experience, and they are then turned down for a junior technical writing role at a company where the tech writers can't code at the same level, I don't know... it is hard to say what that is, isn't it? But yes, I completely understand skepticism of the breadth and depth of the skills of those whose ONLY experience of programming was at a bootcamp. And when that same company makes a mistake in their own assessment (which you politely point out after you are told you are incorrect in your technical writing), and when that same company hires someone with virtually no experience in any of these things as its next writer hire and also for its manager of technical writing, and while those two employees are in their 20s...what would you think? Am I excluding a possible interpretation? "Culture fit"? The candidate we speak of doesn't fit the expected cultural profile in several areas for a tech company. Might it be that in some other form? It is just really tough to say. I realize it stinks to see how blatant ageism can be. It makes all of us feel unsettled for our own futures-- it is also just stupid and embarrassing in an industry that prides itself on being so smart. But we have to get real about it. We also have to get real about sexism and racism. It seems to take more than a village (of women at Google, Uber, Tessla, etc.) shouting it out with lawsuits and news articles. We have not even begun to handle race issues in tech, perhaps because so few can break through. We need to face these things and stop trying to explain them away with coded words like "culture fit" or "updated skills" (when the skills are updated, of course). We need to look around our departments and seriously ask if there was ever a new hire over 40. Then, we can dig into these issues. We have to stop knee-jerk dismissing the stories of those who are shafted by these practices. Yes, it is uncomfortable.
I work at a mid-sized B2B telecom (just over 500 employees), and looking at the ages of my coworkers, we have more 30+ people than not, and there is a very large contingent of 40+ and even some 50+ people here.
It's definitely the kind of company you want to work at if you're middle-aged.
Actually, we all need to grapple with the fact that big corporations are behaving more and more like startups because they can. If Google has a higher standard (as has been reported by Google SWEs who perform interviews at Google right here on HN) for entering SWEs based on their age, then we need to take a hard look at that. Yeah, it's illegal and unfair, but no one over 40 and really over 35 is allowed to be a great "junior dev" - they are only comfortable w over 35 who have been in the industry. The ladder is pulled up at most places for even excellently skilled beginners after 35. One should be able to enter if one has skill at a higher level, but we all need to face that the level one must hit at 35+, as a woman, as a person in any underrepresented category in this industry is much higher than it is for those who are a good "culture fit".
Yes, you make good points. A distinction should be made between junior 35+ people and 35+ people with at least a decade of experience.
But I don't think that's exclusively a software engineering issue. If I tried to become an electrician at 40, my guess is I'd encounter some bias, though probably less than in software.
One other thing: by "BigCorps", I'm referring to things like banks, Wal-Mart and so forth, not technology companies like eg Google.
> One other thing: by "BigCorps", I'm referring to things like banks, Wal-Mart and so forth, not technology companies like eg Google.
Yeah, I'd much rather work at a traditional conservative BigCorp than a Silicon Valley company that never grew up from startup mentality.
If you do want to stay I tech, I'd recommend looking at the B2B telecom sector. It's far, far more conservative then any other part of the tech industry. They're the only tech companies that I've seen ban T-shirts in the office.
I'd say this is a great tip for a candidate who isn't underrepresented in tech. I just came from an interview at a conservative midwest company that isn't technically a "tech" company but has a huge tech dept. Got to the end of 5 interviews at breakneck speed and with lots of acclaim from the team about my speed and competence...that is until they saw me. Everyone, and I mean everyone in the engineering dept., save one woman (she must be a 20Xer) was firmly within the typical tech demographic. I felt I did quite well despite suddenly being asked CTO-type questions. I was told there would be whiteboard algorithms and questions about the company itself. They knew I'd never worked at a big company with a giant code base before, and yet they were enthusiastic about my ability to contribute-- it had come up and was not an issue. They wanted to fly me out and put me up in a hotel. It turned out I didn't need it because I happened to be there, but they offered. They even talked to me about salary numbers. When I got to the on-site, I got questions more fitting for a candidate with many years' experience with a giant code base at a big company. Still, I felt I answered well. In the end, they told me I didn't answer those questions quickly enough (not correctly enough-- just quickly enough). I'm fairly certain that If I were given the chance to actually work at a large company, I'd know the answers to these system design issues without having to think to arrive at the correct answer. I'd know from experience. If I'd looked like more of a "culture fit" let's say, but still over 40, I think it might have been fine. By the way, the city that this company is in is 82% African American. Its tech department was 0% African American.
I was under the impression that these sorts of BigCorps were actually a better place for the underrepresented and frequently have more diverse technical workforces (along race/age/gender lines).
I just got hired by one in Texas that reflects that impression, which I had before I ever interviewed there.
I'm working in a B2B telecom and I haven't seen that level of conservativeness, although in general I agree that they are conservative. But it's a wonderful place to work in many aspects: it's stable, pays well, and in general less clients means less headaches and a more focused development.
They don't immediately adopt new technologies, but frankly, nowadays I see that as more as a feature than a bug (although once in a blue moon I wish the delay in finally adopting them, when they have been successfully proven themselves, wasn't so long).
The most glaringly conservative aspect of my current job is its very rigid adherence to process. Again I must say that, having worked in places where it wasn't the case, I'm so glad that process is followed strictly.
The big problem with this job is that I've acquired a ton of domain knowledge that probably won't be useful in another job. This means that I need to keep other tech skills (algorithms, programming languages...) much more finely honed. On the other hand, I've acquired top notch documentation skills.
EDIT: I also can confirm that there is plenty of >40yo people here. Definitely a good place to be when you reach that age, although I'm only in my eearly thirties. I've found also a high level of diversity in general, which is very, very good.
Java is absolutely rightly derided as the next COBOL because it is. It is the abstract concept of bureaucracy incarnated in code. But that means it will likely follow COBOLs trajectory. A million legacy systems written in it will underpin the central core of a million businesses, being the (entirely unrecognized) most important component of the entire corporate structure bar none. And those systems will need care and feeding in their old age.
"I don't think Java is all that bad, and I can enjoy well-done object-oriented programming."
This is probably the most accurate opinion of Java the language I've seen, one that isn't tarnished by what anyone has seen in any proprietary codebase.
I would rather program in Java the programming language than Javascript any day of the year, even if I dislike the vast majority of popular Java frameworks like Spring, Hibernate, etc.
Yes, I should have made it clear that Java the language is not inherently terrible. And the JVM itself is really quite nifty. It is unfortunately the infection of Java codebases (literally all of them I have seen with the sole exception of short Processing sketches made for graphical effects) with a mindset of design patterns as lego bricks used to build applications. Java did have a rough start though, there was clearly an edict at Sun to invent a nomenclature which deviated from any terminology commonly used by Microsoft which operated only to its detriment.
I think the JVM itself will be Java's saving grace - languages like Scala and even Clojure now are gaining huge popularity that not only leverage the JVM and existing ecosystem but have the ability to rapidly advance and abandon Java's warts. So it's not like COBOL in that regard. Because of the power of the JVM ecosystem I think even Java's glacial pace of adopting new features will be enough to keep up for many years or even decades to come.
You are correct that I have never written COBOL (or JCL for that matter), though I'm not sure why what I said would indicate such a thing. I have seen COBOL and working COBOL systems. They are absurdly verbose. That feels like a hyperbolic understatement, really. Everything is very structured, in the nature of micromanagement in organizations, formed in that way in order to intentionally forbid flexibility. Is the COBOL I have seen 'old fashioned' perhaps? It was well over a decade ago, closer to 2, since I've looked at any. Perhaps there is a 'lightweight' COBOL?
I'm 50 and I've been a freelancer since 2006. I position myself either as developer (Rails and jQuery back then, still Ruby and Python and Elixir now, I'm starting to code with React) or architect and coordinator of developers. That works well with small companies. I attend to tech events in my city (Milan, Italy) and I organize an event myself. It's a good way to keep the word of mounth going on. I don't know if this is a feasible strategy for the next 10 years, but who knows what's going to happen by then anyway. I'll adapt.
Reasonably well. I made more money with my last job as employee, which was paid above the average of the market. However I own my timetable now and I work mostly from home. That is worth some money too and it improves the quality of life, which is hard to quantify but it's very important. I'll never be an employee again unless I absolutely have no alternatives.
I spend a lot of spare time doing work for previous customers while being on a full-time project at the same time. Keeping multiple customers warm is a must. All paid though. A few weeks of not having a full-time engagement means finally being able to clear out the backlog and enjoying long weekends.
Every year I take an unpaid break for over a month around the holiday season. I love it but it always is a bit scary to be away from customers at the same time.
Understand business needs. Be able to communicate. Be upstack: infrastructure, DNS, SSL, etc. Go deep on security: many concerns cut across many languages, but if you're a language/framework of the week developer, you're too busy learning the same thing over and over to have that depth, which businesses desperately need.
(I'm 40 and my current role is with a small company where I implement solutions rather than have a title)
Security is one of the few cross-discipline, cross-domain specialities where it is possible to be a reasonably good domain expert and still have a good coverage across other domains. The fundamentals don't change. (And I say this as someone who's been immersed in the field for 25 years, so of course I'm biased.)
There are few other domains that can offer the same level of constant demand.
The beauty - and the depressing aspect - of security is that maybe 10% of security is about software. The remaining 90% is all about what is between people's earlobes. To become good at security, you'll need to learn how to explain extremely difficult and often subtle concepts. And you'll have to do that for both technical and non-technical crowd. That's a fantastic and continuous trial by fire. It's also lots of fun!
Bonus: because everything is a tradeoff, you really can't avoid the engineering approach. Teaching the concepts and reasons for tradeoffs to less senior developers will be part of the job specification. Fun.
> language/framework of the week
To quote something I have often stated in our interviews - there are only four programming language families. Everything else is syntax.
To be perfectly honest, I don't know which bucket I should use for Prolog. It's supposedly logical, declarative and functional at the same time. I've never managed to understand it, despite trying.
And for the record: perl in basic form is imperative. With the introduction of "bless" keyword it crosses over to object-oriented domain but following the syntax is not necessarily straightforward. [I've spent a non-insignificant number of days auditing OO-perl. It's not a pleasant experience.]
Those are more dimensions than buckets, and not very orthogonal ones at that. In particular there is strong overlap between declarative and functional language features (you could argue functional is just a special case), and less strong overlap between imperative and OO languages, and OO and functional. OCaml fits pretty comfortably in all four of those categories, when you want it to.
If I wanted to jam languages into 4 categories, it would probably be the Algol, Lisp, and ML families, plus All Those Other Languages. :)
The ML family tend to come from a research background, have a more rigorous approach to typing, solid type inference, and very differently flavored syntax. MLs are functional (first-class functions, expression-orientation), whereas the Algol family in the shape of C, Java etc are mostly imperative. They tend to have nice pattern matching facilities. There's more, but that's a lot of it. A lot of these features have been transplanted into languages that are basically on the Algol tree, so it's often a bit fuzzy these days.
I reckon imperative and OO are almost identical; if you don't have objects, you use function pointers or discriminated unions instead and end up with something very similar. OO is a design pattern that often has language support. And I could make a similar argument that functional is mostly just a style of coding, where some more restrictive rules are followed - but it also depends on a few specific language features, e.g. garbage collection and possibly tail calls. You can get by without pattern matching and first class functions, but they make life much more pleasant.
Declarative vs imperative is more interesting: what vs how, building descriptions of problems rather than chains of calculations or lists of steps. I don't think functional style is strongly related to declarative, except in the very low level sense that a functional program doesn't necessarily have a sequential evaluation semantics. But that's increasingly true of seemingly imperative languages also.
You have to be better than you were at 25 (more productive, making fewer mistakes, able to take on greater responsibilities). You have to be better than you were at 30.
You don't have to be as actively sought after. You should be staying at positions longer - 5 years, maybe even 10. (Note well, however: By this point, you probably have seen several toxic environments. If you're in one, don't wait - get out. Life is too short to put up with it.)
I have a file where I keep track of headhunters that I think are worth their salt. I'll use it if and when I feel like it's time to move on.
One way to make it past 40 in software is continue demonstrating that you're learning, creating, releasing, and share it publicly like you may have in your 20's.
Apply to a government job. There is less ageism in the Gov than in the private sector. At least in my country were you must do pass a very difficult and competitive contest.
Unfortunately, at least in the US, pay is not very competitive. Even with upward adjustments for cost of living in more expensive markets, many of the people on here with SV or SV-like tech jobs would end up taking a pretty large pay cut to work for the US government. (But it's of course a great option if you're in a bind and your alternative is no job at all. Or if you're a civic-minded individual who does it out of a desire to improve the sad state of our public services.)
I started at 21 and somehow just kept getting older.
More seriously, having had a look around my cohort, there aren't that many people who've left programming altogether, and those that have have done so for personal reasons. Generally people have moved "upwards" and acquired management track positions. Small companies are good for this - because it's so flat you can easily get a high-ranking job title which you can then leverage into the next job.
Look "up". Look at the older and more senior people in your organisation. Maybe even directly ask them about careers. Recognise that if nobody around you is over 30, you're either in a very unusual place like an SV startup or you've wandered into Logan's Run.
My father-in-law is pushing 70 and still coding. He just semi-retired, but up until last year he was employed, despite having little in the way of social skills and living in a remote area, far from any coding hub. If he was just a bit more personable and willing to move within a couple hours drive of Boston he could have fielded multiple offers.
Pure anecdote, but if you're decent, have a little hustle, and don't mind working in a soulless office park, it seems like you'll never struggle to find a gig.
I'm not quite 40 yet (36), but part of what I've done is the specialization mentioned in other posts here (in my case, distributed systems with a focus on communications tech), and I've also cultivated my "product sense" to the point where (as an individual contributor) I'll often define and design a product and how customers will use it, in addition to doing the actual implementation. In that sense I have a little bit of breadth; I'm not "just" an engineer, I can also address the customer needs that lead to building a product, and then later refining it.
Understanding customer needs and translating that into product definitions is something that will likely never go out of demand, and is needed in industries outside tech. And if demand for distsys goes out of style I'll just learn something else. I've already kind of done that, having cut my teeth on embedded systems, followed by a short stint in mobile before getting to where I am now.
Judging by what I see around me, I don't see the strategy being any less effective in 10 or more years.
I’m 40 years old and I have recruiters coming after me non-stop.
1) Don’t include irrelevant experience on your resume. Nobody cares that you were writing php websites in 1997. Try not to put anything on linked in or you’re resume that would indicate your age unless you’re one of the top people in your field and your experience makes you stand out.
2) Keep up with new languages. Don’t be the guy that only knows perl when everyone else is using python. If you aren’t learning rust and go today, you’re going to be left behind five years from now. And once everyone is on go and rust, you should be learning the next thing.
3) Stay curious. I know you have a family and kids and other commitments, but you have to stay interested in the world. Keep up with business news, and science news and stay connected with pop culture as much as possible. If you’re applying for a startup with a bunch of 20 or 30 something’s you, you need to be able to meet them where they are.
4) Don’t get complacent. You’re always a bad quarter away from getting laid off, and that becomes more true the older and more higher paid you are. Keep your resume updated. If recruiters aren’t beating down your door, you need to ask yourself why. Because if people aren’t trying to hire you, your employer probably isn’t excited to keep paying you either. I was a junior guy on a team with all sysadmins 5 years ago. They were all the same age as me, but with many more years experience all at the same company, doing the same thing and really resistant to changing. I came in and really dove into the deep end with devops, despite having little programming or sysadmin experience (I had a networking background). Within 5 years I was a senior developer, making more money than any of the rest of the people on the team, and eventually got poached by a recruiter offering 40% more money. They’re all still there barely holding on to their jobs.
If you're coming up on 40 you should know a lot of people. You should have a work history so ridiculously long you need to omit 75% of it to fit it on a two page resume. You should know the business, which companies are succeeding, which are failing, and what problems are most interesting to you.
This is a huge advantage compared to some recent graduate that has no idea, knows nobody, and is still learning the geography of the industry.
Don't stop learning. Don't stop making contacts, friends, and other connections. At some point you won't need a resume to get a job, you'll just need to know who to call.
Thanks for the advice(and I mean that in all seriousness)! I need to start making some more friends it seems, and while I've been employed for 12+ years, my work history doesn't quite meet that standard yet.. looks like I have some more hustling to do..
I've been in "the business" since 1988, so maybe my experience is different. In that time I've met, worked with, worked for, and managed a number of great people.
It's not so much about hustling as it is developing meaningful professional relationships with people. You don't need to be a huge extrovert to make it work, you just need to engage with people. Solve problems together. Help each other out. If you get someone out of a jam they'll remember it, and when it comes time for a reference maybe they'll be there to back you up and vouch that you're the right material.
It's pretty easy to go about doing your job without really paying attention to anyone else on your team or at your company.
In a certain sense, if one has the talent, luck or planning to position one's self to make it in programming after 40, one may well survive to well over 40. One's position shifts from worker to expert.
But if the fact is that a large percentage of folks doing programming a 29 won't be doing it at 45 and aren't going to have a good exit plan (if they made a high salary in that time), then in a sense what's being said is:
"Programming is a dead-end job for those under forty" and about forty is the end-point for them.
not always. i'm about to retire at 65 and I've been a hands-on software engineer for 35 years.
Pro-tip : one type of work that can last is in the Defense industry. Projects in that industry can last 10-20 years or more, and experience seems to be valued much more there.
Worrying for most of us who saw the first computer at the age of 16, started coding at the age of 19, and still have to make it in the software engineering world.(26 y.o now).
I was born in 1977 and had a computer that plugged into the TV. I remember copying basic programs out of a book, but do not remember my age at the time. I had no way to save the programs, so it was pretty stressful when the power would get shut off. I continued to tinker with computers/tech (my Nintendo was in multiple pieces, yet still worked :) ) off and on, but didn't get serious about programming until 1995 and have been doing it ever since.
I'm sure some companies have an age bias, but I think it will be less and less as the generation who grew up with computers gets older.
I am your 1960 born example (my bday was yesterday!). I'm 57. I've been a professional programmer (read, I've been getting paid for it) for 30 years. I live in a small town in Northern Ontario. I'd like to be paid more, but I'm in the hunt on the payscale. My resume says I'm a full stack dev. You'd believe it if you saw it.
That being said, if you've been in the occupation long enough, you figured out that its a continuous learning occupation. The thing is, the fundamentals I learned in the 80's and 90's still do me in good stead to this day. I don't write in assembler or even C anymore, but concepts they taught are still deeply ingrained.
I've got another few years in me before I can retire, and when I do, I'll continue writing code for fun. Simply because I like it.
(Oh ya, first computer was 3.5Kb (3583 bytes!) VIC 20. The first computer I ever SAW was a neighbours PET 4040 he brought home from school over the weekend. I bought the VIC-20 the next day.
Southern Ontario here. 36. Programming professionally for 14 years or so. Picked it up as a hobby when I was 9 or 10.
The "fundamentals" predate you and I by quite a few decades. Alonzo Church, Turing, Gentzen, Liskov... their work really paved the way for us all. I suspect the lambda calculus will be as useful 30 years from now as it is today. As long as I'm working in a language with first-class functions as values I think I'll be okay.
It's funny that many people still hold the belief that even mathematics is a young person's game. There are plenty of examples of mathematicians making significant contributions after the age of 30.
For me I think the life of a programmer begins at thirty.
This. Exactly this. In five years time it'll be the 40-45 range, and in ten years 45-50. There is a point in time to where computers and software development really started to take off, becoming ingrained in every person's life from the start.
> There is a point in time to where computers and software development really started to take off, becoming ingrained in every person's life from the start.
Computers and software use, maybe; for software development it hasn't happened (it seemed to be heading that way in the mid-1980s, backed off starting around the beginning of the 1990s, and seems recently to have turned back around at least in terms of what lots of people are saying. We’ll see...)
No. I'm the happiest I've been in my career and I'm almost 50. I'm a programmer, not a manager, not a tech lead, not an architect. I still love programming and I love solving problems. I just recently made a huge change that decreased load on our systems by 90% and I'm still stoked 3 days later.
I'm not anywhere close to 35, but from being on this site (HN) for a few years, I can guarantee you that if you read this site on a daily basis and 3 times a year complete a project based on the "trends" reflected on here you will be fine. The people on here are pretty ruthless, IMO.
410 comments
[ 3.0 ms ] story [ 328 ms ] threadAll I meant is there are great devs out there who aren’t 21, Linus is one example.
Wow
That said, if you're a software developer and you're also good at communicating and managing people, seriously consider moving into management. While I think the stories of the '10x' developer are true, I also think a good manager can double or quadruple the effectiveness of their entire team. That has a huge impact both on the careers of the people being managed, and at the company.
Another way of thinking about this: Managing people really well is really hard. Most managers are not the best managers. Average managers often end up doing things that reduce the output of their group in the interest of things not going horribly wrong. The Pareto distribution rears its ugly head, once again.
At least as a software developer, you're only breaking code. But you start affecting people's lives, emotional well being, and career paths when you're a manager, and I find it rare where a manager understands this.
A lot of times early companies will go through the motions of, "needing" a VP of Engineering, or CTO, or whatever. In reality their process does not need that, and those roles are either meaningless titles at best or cause unnecessary process to crop up and hinder productivity.
This created conflict exactly as you'd expect and team morale fell apart, projects slipped, etc. Of course, management takes no responsibility for this, instead diffusing blame to employees via suck-it-up type platitudes (couched in "nicer" language but with that essential meaning).
But what’s in it for the developer? If the developers is happy and well-compensated bad has no managerial/executive ambitions/fantasies, why ruin a good thing (with a gamble, at that)?
If it's your job to magnify the output of your developers, when you know intimately how to do their job, you can get spectacular results.
Non-technical managers can't do this, they don't have the depth and insight to help shape their team the same way a developer does.
But it is not a good idea if you really are passionate about the writing. For example, my daughter majored in English because she wants to write novels, not because she wants to teach English. So in her case I certainly wouldn't tell her to go get a job as an English teacher.
In my opinion, the second worst kind of manager is one that doesn't want to be a manager and would rather stay an individual contributor. Their inner conflict is harmful to the group.
A good manager is really, really hard to find. Good developers are easy to find (relative to good managers). So, while I don't want to get into management, I also recommend it to anyone who might have potential in that regard.
This, I found, is too much for me. I have no remorse if I demotivate my managers; and I can keep my mouth shut and not say anything, to avoid demotivating my junior-dev colleagues. But as a manager, "keeping my mouth shut" is not an option.
If you want to continue learning new tech and position yourself as a truly experienced engineer, there is plenty of headroom for developers willing to continue to grow.
I'm 40 years old and I just had my best year yet - by far. Obviously a big part of that was the decision to move into contracting, but I'm not particularly worried about getting put out to pasture just yet...
I was self-motivated to constantly learn, and had no trouble doing it... when I was young. It was the right profession for me then, when I had the interest and passion.
After a while, though, much of it starts to seem the same. The towering vistas that were once full of mystery, adventure, and discovery turned in to endless plateaus of rinse and repeat learning of technical minutia and buzzword tech of the day. I also developed lots of new interests, and started to want to have an actual life outside of work.
So then I very consciously decided not to strive to excel in my field anymore, because it would just take way too much of my time, which I'd rather spend doing other things. Then, before too long, I burnt out, and took a long break, eventually coming back to the field because I burnt through all my savings and needed money. This happened a bunch of times, with ever longer breaks in between.
Every time, I was able to brush up on the technology knowledge and skills that I needed to get a job, but I was never as excited about it as I was when I was young, and actually started to dread working with it, as I found it mind-numbingly boring.
I should have definitely completely switched careers after my first major burnout, but I didn't, and I've come back to the field again and again instead. This has definitely been a mistake, but here I am. I'm good enough at what I do to get work, and to even impress my managers... while I still haven't burnt out this time around and am still capable of putting in the overtime to get a lot done. But it's just a matter of time until I burn out again, and this pattern of not working for extended periods of time looks horrible on my resume, I haven't learned nearly as much as I would have had I stayed employed the whole time, and my career is nowhere near as advanced as that of people who can hack full-time employment long-term.
I don't think my case is typical, as most people seem to stay employed continuously in the long run. But I can't, and I feel I'm way too old for a career change now... and, anyway, I suspect whatever it is that I'd switch careers to would get boring before long and I'd burn out again. My interests are far too varied and I can't stick to doing any one thing for long before getting bored.
This is not to mention all of the endless corporate bullshit one has to put up with at work. Some people are really career-oriented and can deal with it. I'm not.
I really think this time I'm out for good. I'm approaching that age where it's hard to get programming jobs anyway. I've got some side businesses doing OK; I'm working on ramping them up, and trying to get some teaching gigs to fill the gap in the meantime. And if all that fails I'm considering getting back into the lawn care business like I did when I was a student.
I used to be very passionate about programming: I started in 4th grade, started my first software business in college, and was always doing side projects.
I took my current job with the goal of transitioning into a leadership role, either product or management. I was walking into a situation where I knew people already here and was hoping to leverage that. Those people left a few months after I started, and now I'm kind of stuck on an island. I've approached my current boss but he's completely uninterested in promoting any sort of career development.
Bottom line is I'm burnt out, depressed, and bored out of my mind. The idea of learning Yet Another Web Framework fills me with dread (I'm currently doing Node/React stuff and hating it), not because I don't think I can learn the tech, but because it's no longer fulfilling in any kind of personal or professional sense.
So, I really don't know where I'm going, or what I'm going to be when I grow up.
A lot of times I feel like there is not career track after you hit "Senior Software Engineer", especially outside of super specialty tech. It feels like the only real track is management, and most places don't want to promote or change the management structure at all.
It's honestly very hard to get excited about going from Senior Engineer to Staff or Principal or whatever the text title is. Nothing will change in terms of the job. Pay is pretty well pegged to what you started at with single-digit percentage increases every year or so.
Skill wise? Learning new frameworks is just not as exciting as it used to be. Even then - the reality is that whether you're the most skilled dev in the world or a mediocre dev with only a 9 week bootcamp of experience, you're going to not understand the new environment you're dropped into when you start. It's full of weird quirks and historical oddities. It'll take time to understand those and get productive in whatever the particular stack is.
All of which feels like... every time you start a new job, you're starting over. With a little more insight and vision, but fundamentally, doing the same thing over and over.
I look around at my bigN and I see all these 20something people who just love what they're working on and are passionate about it, and I get it. I was the same way at that age.
I just don't care anymore, tbh. I want to work on something fun, and things that are fun don't usually provide a paycheck. So I grind away, and the years waste away, and I don't know what to do about it. I'm smart enough to get by without investing a lot of effort, but I'm really just wasting my life.
My strategy for my career is to try and position myself into a position of enough authority to decide priorities around software engineering, and what my team is working on. Then I can delegate all of the boilerplate to the younger engineers, and spend more time collaborating on much more interesting and difficult problems.
Programmers to programmers: You must be a super agile ninja capable of teaching yourself everything at a moment's notice.
Businesses to programmers: Yeah, we still need people doing Java 6 and VB6. We're also going to disregard all of your security and technical debt concerns. We're also going to hire managers who suddenly change a bunch of tech, causing the rest of the team to re-train themselves, harming their career.
I still don't get where this need comes from. The world still needs LOB developers. The uber-ninjas haven't solved that problem yet. It isn't going to maximize your lifetime earnings, but you're not likely to retire under $100k either.
Programmers are extra-ordinarily hard on themselves and other programmers in industries where businesses still just don't give a fuck because they are making so much.
I really wish I knew why you guys did this to us.
I'd be interested in a demographic breakdown of the people who say this. I'd be willing to bet that most of them are in their twenties, live in SF/SV or Seattle, and/or work at startups or insanely demanding trendsetting companies (e.g. Google, Amazon, Tesla, Apple). In other words, these claims are made by people who care about being "cool".
I don't think you'll hear this much from people who live in less trendy areas and work at less trendy companies. Older people and people who work at conservative companies in conservative areas of conservative states (Hi, I work at a B2B telecom in Plano, Texas, and I'm in my 30s) probably aren't going to be making those kinds of claims.
If you stop caring about being "cool", you'll find plenty of work that'll sustain you until you retire.
I imagine there's also a good helping of: "Hey, the MVP works and I won't be here in years 2-10 maintaining it, so everything I can see indicates I successfully learned X on my own in a month."
I have also seen a lot of senior developers go into consulting although they have to do a lot of other stuff than coding. I think as a senior developer you do need to be good at little bit of project management (ex: guiding junior devs, de-risking a project completion, contributing to product management decisions). If that is the case and you have a leadership who can recognize the technical value you bring to table, you should be handsomely rewarded.
We are all born with the same brain* (edit: see the ted talk on the "After 83,000 brain scans"). Some of us just aren't born in the right environment to curate it and never learn the best ways to use it ("learning how to learn") given the current dominant socio-economic factors. It gets harder as you get older not because of age but because your anxieties, fears, and distortions become more reinforced, so breaking down those thought patterns becomes harder
*: I mean this more or less, not literal. To clarify, I am speaking more specifically to neuroplasticity and neurogenesis. Maybe some things come easier for other people out of the gate, but this wasn't because of some "innate" talent, but rather some factor of their development, both internal and external, provided the acuity and propensity towards excelling that specific thing, but if you molded another brain from scratch this same way, you would more or less get the same result.
edit: With the TED video,I was again referring to the take away: "You are not stuck with the brain you have, you can make it better." So if you were "never born with the ability to be good at math" this is a distortion, just as much as "I am only mediocre at math and will never be great at math" is https://www.youtube.com/watch?v=esPRsT-lmw8&t=599s
Besides this, I think, focus among other things also plays a big part in your abilities. If I am checking FB every 5 mins then I will never be able to match the learning abilities of someone who does not even care what is happening around him while he is learning.
That's not what he says at all.
>https://singjupost.com/daniel-amen-on-the-most-important-les...
The "most important lesson" is about the importance of diagnosing brain injuries and pursuing neuro-rehabilitation.
That's blatantly untrue, and we have shitloads of twin and adoption studies to prove it.
My broader point in response to what you're saying is that I've grown deeply suspicious of claims to genius. Sure, there are brilliant people out there, and hardworking people, but there's also a huge element of luck or circumstance. I've seen this firsthand with people at the top of my field I am close to, very famous people, who had huge changes of fortune due to circumstances changing. They sometimes could reverse course, but only because they had enjoyed good circumstances earlier, and people could say "oh, X was brilliant--they just went through a rough patch." The people who got those rough patches early in their careers aren't afforded the same second chances, and are written off.
There are far more brilliant, hardworking people than we give credit to. Most of the advances in our society are not due to single brilliant individuals, but due to incremental improvements day after day, by people who we never learn about. The politics of credit are soul-crushing when you see it up close.
To me the single most pernicious problem with ageism is the stereotype that you are incapable of changing or learning something else. We want to put people into boxes, boxes based on vocation, and ability, and personality, and the older someone gets the more of a box we want to put them in. For people who have happened to land in the right places at the right time, aging can be a wonderful accumulation of security. But for the rest of us, it feels like being punished for your environment, or punished for the stereotype others have of you--it's as if you're being held to account for others' perceptions of you. To some extent, that is a valid stereotype, but to some extent it is not.
I feel more vulnerable now than any point in my life, because I want more than anything to leave, to change, to improve my life and that of my family, but so far it seems impossible without making things worse. When I was 20, people seemed willing to believe I could do anything; now it seems people are skeptical of me doing anything different from what I've done.
If you still have the passion for development and for learning/improving you should be able to keep going.
It seems no one is 100% safe from layoffs or companies making bad decisions.
I would encourage everyone to explore creating products/SaaS if those things are interesting to you. There no better job security than running your own business.
startupsfortherestofus.com is a great podcast to learn about this. Rob details his rise from consultant, to small successful sites to a $XXM exit. Amazing story.
And this is inspiring, still my favorite talk @DHH Startup School: https://www.youtube.com/watch?v=0CDXJ6bMkMY
"Calling your own shots, running at your own pace, that’s pretty great."
It's actually quite the opposite. Older software designer/developers can better support our needs on healthcare and mobility of an aging demographic.
It turns out she's amazing because she knows how business works and how to get things done efficiently and what the business really wants from her: Quick, stable code.
Others we've hired that didn't have this skill have not fared nearly so well. I'm definitely looking for that kind of thing in future hires now.
Don't be pegged down to a specific technology box, because at 40 you've probably already seen plenty of them come and go. Use that experience to an advantage. Either get into consulting or work with startups that need a wider perspective.
A lot of people leave on their own before they get old through. Some burn out due to bad luck or wrong choice of employer. If you buy into believe that development must be late night thing, then you are likely to burn out and then seek different profession instead of just different employer.
Many many guys actually seek non-development positions that are sort of "infected" with a bit of tech. So they become managers, analysts, those architects that do just documents etc. This is where most people seem to leave. That sort of work creeps into your job more and more regardless as you age, simply because less experienced people often can really do it and it tends to be critical.
Never stop learning, even tech you might dislike may provide a path to keep you relevant.
Also work on your soft skills.
A developer that can jump between technical meetings, discussing with users, other department, understands architecture and domain knowledge is much valuable than someone that just codes all day long.
When all else fails, you can always try to go consulting on the domains you love.
Most people move into independent consulting, remote work, their own business....
You really do live in a bubble, don't you..
On the other hand, if you want to hear how to make it past 40 in software, this is probably an excellent place to ask!
The important principle is that you should devote your learning time to things that are more likely to survive. A good way to do this is to pick something that has been around for a long time. Knowing how to write an optimized linux kernel driver is far more long-term-valuable than, say, a Javascript framework. Knowing how to do quantitative marketing is even more valuable than that.
The absolute worst thing you can do is to chase the new shiny every year. If you do that, you will never be more experienced than the most junior member of your team.
I really wish it were possible to make reference to JS in a less-than-glowing light without being downvoted, but alas. Substitute any other brand-new technology for "Javascript framework" if you're having difficulty seeing the argument.
But would I bet on Javascript over (for example) C? No way. Any new developer would be wise to learn C, even if they completely ignored Javascript. And I don't need any technical details about the language to make that call.
But, they did acknowledge it. And they're now making design decisions to facilitate the web as an application platform, rather than intentionally trying to make application development as difficult as possible to dissuade it. So now we've got WebAssembly and tomorrow or the day after we will have any language anyone wants to use being used. In that arena, Javascript will get pantsed and laughed out of the room. It will probably happen with pretty amazing speed, as there are legions of developers who have been holding their breath for this for 20 years.
In this discussion, when we talk about value, I think it makes sense to look at value in the sense of how valuable a skill is to the longevity of your career.
In that sense, JavaScript has some upsides - it's everywhere, and will likely continue to be everywhere. There will be lots of demand for JavaScript development.
But because JavaScript is everywhere, tons of people know it, and tons of people are learning it. So although there will be lots of demand for JS development, if you're a JS developer, there will also be a ton of people offering a skillset that is broadly similar to yours.
As you mentioned, the demand for something like Linux driver developers is tiny in comparison to the demand for JS developers. But the talent pool is relatively tiny, too. So it might be easier for you to differentiate yourself because when an employer is looking for someone with your skillset, they're not going to have to wade through hundreds of resumes from people who look pretty qualified.
In general, I think it's most valuable to specialize in solving a certain type of problem, where programming just happens to usually be the best way of solving it. It's often easier to sell yourself as a solver of specific kinds of problems than it is to sell yourself as a generalist with experience in JS, HTML, CSS, etc.
Given how much JS development thrashes, it's a pretty reasonable bet that whatever you're learning this year will be out of fashion next year, and irrelevant in five years. That's the high-order bit, when you're thinking about your career.
Even for something as "narrow" as linux kernel development, I can pretty much guarantee that someone will want hire you in 20 years, so long as you are competent. I can't make that guarantee for most technologies.
It's definitely the kind of company you want to work at if you're middle-aged.
List this firm please, it might help someone.
But I don't think that's exclusively a software engineering issue. If I tried to become an electrician at 40, my guess is I'd encounter some bias, though probably less than in software.
One other thing: by "BigCorps", I'm referring to things like banks, Wal-Mart and so forth, not technology companies like eg Google.
Yeah, I'd much rather work at a traditional conservative BigCorp than a Silicon Valley company that never grew up from startup mentality.
If you do want to stay I tech, I'd recommend looking at the B2B telecom sector. It's far, far more conservative then any other part of the tech industry. They're the only tech companies that I've seen ban T-shirts in the office.
I just got hired by one in Texas that reflects that impression, which I had before I ever interviewed there.
They don't immediately adopt new technologies, but frankly, nowadays I see that as more as a feature than a bug (although once in a blue moon I wish the delay in finally adopting them, when they have been successfully proven themselves, wasn't so long).
The most glaringly conservative aspect of my current job is its very rigid adherence to process. Again I must say that, having worked in places where it wasn't the case, I'm so glad that process is followed strictly.
The big problem with this job is that I've acquired a ton of domain knowledge that probably won't be useful in another job. This means that I need to keep other tech skills (algorithms, programming languages...) much more finely honed. On the other hand, I've acquired top notch documentation skills.
EDIT: I also can confirm that there is plenty of >40yo people here. Definitely a good place to be when you reach that age, although I'm only in my eearly thirties. I've found also a high level of diversity in general, which is very, very good.
"I don't think Java is all that bad, and I can enjoy well-done object-oriented programming."
This is probably the most accurate opinion of Java the language I've seen, one that isn't tarnished by what anyone has seen in any proprietary codebase.
I would rather program in Java the programming language than Javascript any day of the year, even if I dislike the vast majority of popular Java frameworks like Spring, Hibernate, etc.
Reasonably well. I made more money with my last job as employee, which was paid above the average of the market. However I own my timetable now and I work mostly from home. That is worth some money too and it improves the quality of life, which is hard to quantify but it's very important. I'll never be an employee again unless I absolutely have no alternatives.
Rule of thumb, your business should be viable at 50% billed time...
Every year I take an unpaid break for over a month around the holiday season. I love it but it always is a bit scary to be away from customers at the same time.
Think of it like being on a first date: your idealized self. You're real, but like 120% real.
(I'm 40 and my current role is with a small company where I implement solutions rather than have a title)
Bingo.
Security is one of the few cross-discipline, cross-domain specialities where it is possible to be a reasonably good domain expert and still have a good coverage across other domains. The fundamentals don't change. (And I say this as someone who's been immersed in the field for 25 years, so of course I'm biased.)
There are few other domains that can offer the same level of constant demand.
The beauty - and the depressing aspect - of security is that maybe 10% of security is about software. The remaining 90% is all about what is between people's earlobes. To become good at security, you'll need to learn how to explain extremely difficult and often subtle concepts. And you'll have to do that for both technical and non-technical crowd. That's a fantastic and continuous trial by fire. It's also lots of fun!
Bonus: because everything is a tradeoff, you really can't avoid the engineering approach. Teaching the concepts and reasons for tradeoffs to less senior developers will be part of the job specification. Fun.
> language/framework of the week
To quote something I have often stated in our interviews - there are only four programming language families. Everything else is syntax.
1: Imperative - C, Fortran, Pascal, ...
2: Object-oriented - C++, Java, Python, Ruby, (maybe Delphi's Object-Pascal), ...
3: Functional - OCaml, Erlang, Haskell, F#, ...
4: Declarative - Makefiles, QML, SQL, ....
To be perfectly honest, I don't know which bucket I should use for Prolog. It's supposedly logical, declarative and functional at the same time. I've never managed to understand it, despite trying.
And for the record: perl in basic form is imperative. With the introduction of "bless" keyword it crosses over to object-oriented domain but following the syntax is not necessarily straightforward. [I've spent a non-insignificant number of days auditing OO-perl. It's not a pleasant experience.]
If I wanted to jam languages into 4 categories, it would probably be the Algol, Lisp, and ML families, plus All Those Other Languages. :)
Declarative vs imperative is more interesting: what vs how, building descriptions of problems rather than chains of calculations or lists of steps. I don't think functional style is strongly related to declarative, except in the very low level sense that a functional program doesn't necessarily have a sequential evaluation semantics. But that's increasingly true of seemingly imperative languages also.
* Imperative languages describe how to perform the solution.
* Functional languages describe the solution.
* Logic languages describe the problem.
I'm not sure I actually agree with this categorisation, though.
You don't have to be as actively sought after. You should be staying at positions longer - 5 years, maybe even 10. (Note well, however: By this point, you probably have seen several toxic environments. If you're in one, don't wait - get out. Life is too short to put up with it.)
I have a file where I keep track of headhunters that I think are worth their salt. I'll use it if and when I feel like it's time to move on.
For the record, I'm 55.
Work on understanding the business needs and not just business requirements for your feature.
Learn how to foster team growth, not just your own personal growth.
Figure out processes to help the team and not just building your feature.
Don't be intimidated by younger engineers who are trying to climb the ladder. Help them succeed.
More seriously, having had a look around my cohort, there aren't that many people who've left programming altogether, and those that have have done so for personal reasons. Generally people have moved "upwards" and acquired management track positions. Small companies are good for this - because it's so flat you can easily get a high-ranking job title which you can then leverage into the next job.
Look "up". Look at the older and more senior people in your organisation. Maybe even directly ask them about careers. Recognise that if nobody around you is over 30, you're either in a very unusual place like an SV startup or you've wandered into Logan's Run.
Physically, I age linearly n.
Mentally, I age logarithmically 17 + ln(n).
Understanding customer needs and translating that into product definitions is something that will likely never go out of demand, and is needed in industries outside tech. And if demand for distsys goes out of style I'll just learn something else. I've already kind of done that, having cut my teeth on embedded systems, followed by a short stint in mobile before getting to where I am now.
Judging by what I see around me, I don't see the strategy being any less effective in 10 or more years.
1) Don’t include irrelevant experience on your resume. Nobody cares that you were writing php websites in 1997. Try not to put anything on linked in or you’re resume that would indicate your age unless you’re one of the top people in your field and your experience makes you stand out.
2) Keep up with new languages. Don’t be the guy that only knows perl when everyone else is using python. If you aren’t learning rust and go today, you’re going to be left behind five years from now. And once everyone is on go and rust, you should be learning the next thing.
3) Stay curious. I know you have a family and kids and other commitments, but you have to stay interested in the world. Keep up with business news, and science news and stay connected with pop culture as much as possible. If you’re applying for a startup with a bunch of 20 or 30 something’s you, you need to be able to meet them where they are.
4) Don’t get complacent. You’re always a bad quarter away from getting laid off, and that becomes more true the older and more higher paid you are. Keep your resume updated. If recruiters aren’t beating down your door, you need to ask yourself why. Because if people aren’t trying to hire you, your employer probably isn’t excited to keep paying you either. I was a junior guy on a team with all sysadmins 5 years ago. They were all the same age as me, but with many more years experience all at the same company, doing the same thing and really resistant to changing. I came in and really dove into the deep end with devops, despite having little programming or sysadmin experience (I had a networking background). Within 5 years I was a senior developer, making more money than any of the rest of the people on the team, and eventually got poached by a recruiter offering 40% more money. They’re all still there barely holding on to their jobs.
So far in this thread:
- continue to learn / evolve
- go into management(well, someone will mention it)
- Go into: consulting / start your own business / remote work
I'm not too far from 40 myself. Any advice?
This is a huge advantage compared to some recent graduate that has no idea, knows nobody, and is still learning the geography of the industry.
Don't stop learning. Don't stop making contacts, friends, and other connections. At some point you won't need a resume to get a job, you'll just need to know who to call.
It's not so much about hustling as it is developing meaningful professional relationships with people. You don't need to be a huge extrovert to make it work, you just need to engage with people. Solve problems together. Help each other out. If you get someone out of a jam they'll remember it, and when it comes time for a reference maybe they'll be there to back you up and vouch that you're the right material.
It's pretty easy to go about doing your job without really paying attention to anyone else on your team or at your company.
But if the fact is that a large percentage of folks doing programming a 29 won't be doing it at 45 and aren't going to have a good exit plan (if they made a high salary in that time), then in a sense what's being said is:
"Programming is a dead-end job for those under forty" and about forty is the end-point for them.
Pro-tip : one type of work that can last is in the Defense industry. Projects in that industry can last 10-20 years or more, and experience seems to be valued much more there.
In 2000, a 40 year old was born in 1960, when the home PC was nearly 20 years off.
A programmer who is 40 today was born in 1977, and they could learn to program while they were in diapers.
These are very different experiences, and the bar will move over time.
?SYNTAX ERROR
I'm sure some companies have an age bias, but I think it will be less and less as the generation who grew up with computers gets older.
That being said, if you've been in the occupation long enough, you figured out that its a continuous learning occupation. The thing is, the fundamentals I learned in the 80's and 90's still do me in good stead to this day. I don't write in assembler or even C anymore, but concepts they taught are still deeply ingrained.
I've got another few years in me before I can retire, and when I do, I'll continue writing code for fun. Simply because I like it.
(Oh ya, first computer was 3.5Kb (3583 bytes!) VIC 20. The first computer I ever SAW was a neighbours PET 4040 he brought home from school over the weekend. I bought the VIC-20 the next day.
The "fundamentals" predate you and I by quite a few decades. Alonzo Church, Turing, Gentzen, Liskov... their work really paved the way for us all. I suspect the lambda calculus will be as useful 30 years from now as it is today. As long as I'm working in a language with first-class functions as values I think I'll be okay.
It's funny that many people still hold the belief that even mathematics is a young person's game. There are plenty of examples of mathematicians making significant contributions after the age of 30.
For me I think the life of a programmer begins at thirty.
oh, those 1st world countries...
Computers and software use, maybe; for software development it hasn't happened (it seemed to be heading that way in the mid-1980s, backed off starting around the beginning of the 1990s, and seems recently to have turned back around at least in terms of what lots of people are saying. We’ll see...)