Ask HN: I feel my career is at a dead end. Any advice on what could I do?
I'm 35, working for an IT consultancy company and I feel my career is going at a dead end.
I did well with my career (maybe too much?) and after 10 years I'm far away from coding activities, more involved in project management and I'm not sure that this is what I want.
I like coding (that's why I started this job, I also consider myself good at coding) I like to learn and explore new things.
The problem is that, at same time I feel that coding can't be a lifetime career: what will happen in 10 years from now? Maybe company will prefer younger coders to hire and I will not be able to find a job anymore? (I have family, I can't risk to lose my job) Shall I find now another role or company that may be can offer me a job where I can cover for both roles (Coding and project management)?
I'd like to hear your point of view, maybe I'm missing something here. Thanks in advance for any advice.
148 comments
[ 1.2 ms ] story [ 179 ms ] threadAre you worried you're not going to be skilled enough in management - and therefore you're trying to get "ahead of the game"?
If not then what's your fear - code until you can no longer, and then take a few months off, re-train and go into management (as a skilled coder you'll already have a big advantage if you want to manage teams in tech). Life is too short to work a job you don't like.
Might be worth it for some people out there
I don’t get this “won’t even try” attitude for a job interview - what is the worst thing that could happen?
Make sure to keep up with technologies as part of your day job. It's amazing how fast things, even SQL change. You don't need to own it all, just build situational awareness with an occasional deep dive.
Read other people's code. Look for projects that interest you and always be learning from them. Build things. Build your writing and presentation skills. You can always learn by helping to document the projects you use.
Look for industries that fit your interests. Programming is a dual-class: your domain of expertise and your technical chops. As you progress in your career, deliberately choose your domain. Immerse yourself that sub-field, identify high-value problems, and how computing techniques are used to solve them. Your success in later phases of your career is measured by how you are able to help a given community with problems that matter to them.
Critically, seek low stress: it's a long haul. Save. Avoid abusive employers and clients. Keep professional boundaries. Build and maintain a robust circle of friends. Finally, if you have children, focus on them now -- you won't get another chance later.
It does take a certain amount of agility to keep up with what's popular, but sometimes you get lucky with the skills you pick. Python, for me, has lasted quite a while. I picked that up later in my career after starting out with C and Perl.
Perhaps you're just burned out? 9 years at one place could easily leave you in a rut. Or have you looked around to see if there is a company that might inspire you again?
I'm about a year into working with AWS stacks, so maybe I can switch when I get more familiar with that. But there aren't many good IT jobs in the area and my wife won't move.
Basically, I can't even imagine a future. I can't see myself tolerating this job for 9 more years. I don't see any jobs in the area that I would be interested in, or would pay as much (I support my family).
But most IT jobs are remote now anyway. Look for those opportunities. Don't be scare.
What I have seen happen in the last year is the following:
1. Covid forced most people to work remotely, at least at tech companies. 2. The world didn't end for those companies, so now many more are amenable to remote workers. 3. Even the ones who aren't happy can't really force everyone to come back to the office, so they're still remote friendly.
I don't know how long this situation will last, but for now it's a good time to be a remote worker.
This is not a bad attitude. It's perfectly rational not to waste time on the framework or tool of the month.
It's the industry's fault for generating endless unnecessary churn.
We can fight it by focusing on understanding core principles and concepts (that changed very little since 1970) and ignoring the noise.
I'm in my 40's and also going through a number of interviews. It's been a lot of hackerrank/leetcode type stuff mixed with some practical problems and behavioral questions. Also stuff about times I've demonstrated technical leadership...
In my mid 30s I had a couple years where I kind of re-invented myself. I had been doing your typical C# backend stuff for like 10 years, just going to work, doing the thing, going home. Then for 2 years I spent some time learning other languages (F#, Nim, Rust,Go) doing coding challenge type things (Codingame, Advent of Code) and doing some open source work and game dev on the side etc.
Anyway it all kinda made coding fun again but when I next had a job search it opened a lot of doors. Knowing Rust and F# got me in the door at some very interesting places, and all the "leetcode" challenges made me able to interview very confidently.
Was proposed a management role about 3 times. Somehow it felt like the end in general.
For my coworkers age isn't as relevant as simply coding skills. They want to be able to give me any task and be technically lead, if they don't know the technology themselves.
I've set a goal for myself: be able to do most of the coding related tasks - including devops, testing, deployment, monitoring - using up-to-date tech stacks.
During this weekend I've played around with self hosting and ended up replicating my company's development pipeline. It's quite barebone, but includes a git server (with working ssh clone urls), simple docker based CI pipeline, nexus repo and some management apps. All apps are proxied behind let's encrypt's SSL certificate.
I also added a simple google oauth integration so that anybody with google account could quickly set-up their own repos.
I don't remember last time I had so much fun to be honest. Also, as a byproduct, I hope, I gained the "hard to get unless you're in trenches" knowledge that is so valuable, when opportunity comes. It does come often in the place I work.
This is an example of the general approach I take: make sure to keep technical skills up to date using free time, by setting up goals, which are easy (for me) and fun - the end result should give the "I'm so happy with, what I made" feeling. It shouldn't be forced, because that would make me hate it in the long term.
I have a long list of things to try out sometime (computer vision, home automation, simple raspberry pi project, webapp to manage a game we play) and just pick something in free time.
I don’t get the satisfaction of being happy with what I made, but the quarterly bonuses and stock grants make me ok with that :) Management is a great 9-5 job if you do it right, and if you’re a people person it’s super easy. Lots of potential career growth if you’re willing to put in the face time and play politics; your knowledge is less important than your style the further up you go.
I would be embarrassed to write that.
It's a rare occurrence that developers on their own can communicate well with any kind of stakeholder. It might be anecdotal, but I find a high correlation between best technical and worse communication skills. I've seen people, who might be seen as typical 10x developers, cause they were so productive, be extremely bad with speaking about development in general. I've seen product owners literally gnashing their teeth in anger, but holding it up, since the guy really delivers - despite the bad "style".
Also, seeing already quite a fair share of stakeholder meetings... The part about style couldn't be closer to the truth. The non-technical people act, as if they didn't hear "99% percentile uptime is so so" or anything similar - at all! What they do hear instead are the speaker's emotions. They want to feel secure and good about going forward.
I've seen big budget moves based mostly on that: how well the project was sold to them. Technical merits were irrelevant. Whole teams disbanded, despite being quite productive, because someone got management excited about the new thing (also completely inapplicable to the problem at hand, but with good marketing: e.g. AI, cloud)
I find the grandparent just frank. It aligns pretty well with my anecdotal experience. I also think managers should be well compensated, since so much is at stakes (whole team, departments).
And working twice as long for half as much
Personally, I think it’s a suckers game to look for meaning or purpose at work. I’m there to do a job, get paid, then use that money to find my own purpose. If you want to use work as your creative outlet, great — but you’ll probably be frustrated.
I have some tangential questions for you and maybe others.
---
As a programmer, how can I avoid the pressure towards management?
What is that pressure and why do people succumb to the pressure?
How much is that pressure external and how much is internal?
What form does the pressure take? What advice can help withstand the pressure?
---
I work in a medium sized silicon valley tech company.
The ultimate control against the pressure is “no, I don’t want a management role” or “I don’t want a management role higher than team lead” or whatever. No one will fire a good engineer because they don’t want to go into management.
Part of the pressure is on pay; part is on control; part is on boredom/frustration with doing the same thing, especially if you’re doing the same thing and think there are bozos higher up in the company making bad calls.
I’ve often said that once I have a totally secure retirement, that the ideal job from a happiness standpoint for me is a principal (or maybe even one step lower) software engineer role somewhere. I don’t want to just travel and certainly not just golf and watch TV.
Multiple times in my coding career I have felt stalled and/or like I was regressing.
Early on, I worked on a programming language, gosu (https://gosu-lang.github.io/) which ended up not really going anywhere. Once the work on it was done, I returned to more mundane web programming for a while (over half a decade.)
A long while after that, and unexpectedly, I turned a jQuery function I was noodling on into intercooler.js (https://intercoolerjs.org/). After a year of that I returned to mundane web programming for quite a while (over half a decade.)
Unexpectedly, a year ago, the country shut down. I was at home and decided to see if I could remove the jQuery dependency in intercooler.js, and so created htmx (https://htmx.org/).
When creating htmx and removing some attribute/functionality that was in intercooler.js, I realized that a small programming language would be the ideal replacement, so I created hyperscript (https://hyperscript.org/) I had not expected to work on a programming language again, but now I am.
So my career has been some very exciting technical projects punctuating long stretches of pretty basic, boring web development, where the most exciting thing is me wondering if I can figure out what the deuce is wrong with my CSS.
My takeaway, at least in my career, is that patience is a virtue, and the interesting stuff tends to come up at irregular intervals and in unexpected moments and ways.
I don't quit to work on these projects, I usually work on them sporadically during work hours or, during intense periods that rarely last more than a week or two early on, full time. htmx was done during the first few weeks of the covid shutdown, for example.
It's easy to brush aside a monumental amount of effort and thought that gets poured into projects like these, marking them internally as fruitless, when
1) we're not the ones that spent the long nights and weekends obsessing over the nuances of the specific problem OP was trying to solve.
2) any of us on HN are usually here shit posting because we're avoiding putting in the same effort for our own projects.
hyperscript will most likely meet a similar fate
that's life
Hopefully you are already aware of the name clash.
I am definitely interested in your hypescript more than the old one but the name clash is unfortunate.
Is this actually true?? I’m concerned because I read that you’re making decisions based on this assumption and I’m not necessarily true this assumption is inline with reality.
I’m 36, and have been moving away from coding for the last couple years too, I’m deeply concerned because engineering seems to earn more across the board than project management.
My strat is doubling back down on coding, by starting to read engineering and algorithm blogs and books in my free time, and finding little toy projects and scripts to do.
Where I live (Sydney, Australia), front-end contractors earn (in AUD) $800/day, back-end $900/day and project managers $1000/day. There’s a range, of course, but that’s the gist of it.
This I feel gives me the most flexibility for the future. I’m not necessarily concerned about not finding a job in programming until I retire, but I like to make life decisions (e.g. where and how to life) first and job decisions second.
I haven’t done a whole lot of programming in the last 1.5 years or so, but so far I’m not feeling that I’m falling much behind given that I’m doing around 15 hours of mentoring, code reviews and problem solving sessions with programmers per week.
You'll need to code, probably to improve your knowledge and skills, but also to manage projects.
I think the usual distinction programming vs management is harmful and is only relevant because big companies need the specialization of middle-managers.
This is not the only way.
1. Get a role inside a large org. Like Fortune 50 large. They are starved for talent and generally love people that can code but also have a broader view of things. You will see many 50+ year old people in these orgs still contributing technically. And you can have many job titles during your career there.
2. Look at setting up an income generating portfolio. There are many stocks and ETFs that pay a monthly dividend. If you can save up a modest amount (for an engineers salary) over the next 10 years you could see your portfolio paying you 2k or more per month. This can give you a backstop and some confidence to put yourself out there as you age in your career.
Like the other commenter suggested, it really is best to seek a more leadership role within technical work: architect, tech lead, product owner.
Does your company provide training opportunities? Find skills gaps that your team has and volunteer to fill them. Find gaps of responsibility that you can help with and eventually take over.
If money is the core of your issue, communicate to your manager your career path and back them up by identifying those gaps you see. It helps to frame your problem in a way that you're solving for your company and get buy-in from someone who should be supporting your success - your manager.
If your company doesn't support your transition, well get whatever training you can get on technical skills and leave.
I think that people vastly overestimate ageism in the software industry. And experienced engineers are far more valuable than someone who is just starting out. In the worst case, if the industry looks very different in 10 years and your prospect aren't that great, you can move to project management or some other management position at that point instead of settling for it now.
Get a developer job if that's what you prefer to do; I think that you're overestimating the downsides of choosing that option.
> I have family, I can't risk to lose my job
Maybe building FAANG CRUD apps can offer something here
So be a bad PM if you want to remain a developer. Manage your tasks and nobody else’s, and intentionally so. It kind of sucks, but the primadonna attitude a lot of senior developers take is basically because it lets you escape the PM responsibilities that get you sidetracked from an engineering career track.