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.
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.
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.
Twice in my career, I've found myself in senior management roles (CTO in an EMEA organisation, and Software Eng Manager in a medium sized tech company).
In both cases, it's fair to say I wasn't having fun in those roles. I stayed in each for 4-5 years. And in both cases, I left the role to return to a pure coding role (I went freelancing, and eventually ended up as an employee in a company in both cases).
The adjustment was tough. Luckily, I'd been coding in my spare time, so the tech transition wasn't too hard.
But finding myself suddenly in a position of almost zero influence was tough.
I suddenly wasn't setting the agenda. I also found myself disagreeing with my supervisors' decisions but I had to temper my replies (I knew I had more management experience than some of them, but I needed to stay in my box, to a large extent).
In some aspects, it's an ego problem. As a senior manager, you're invariably in a highly visible role, and that brings a certain level of ego boosting.
Also, in my case, there was the various visible attributes that comes with a senior role - company car, personal assistant, international travel, visibility up the org tree, etc.
Luckily, I ended up in a financial trading company so my compenation now is probably where it would be if I had stayed on a management track in other companies.
Do I regret my decisions? At this stage, no (my most recent "reversion" was nearly 7 years ago). I'm happy writing code and not being involved in the politics and BS of management.
But there are times I also miss some aspects of management.
In terms of it being a long-term career choice? I feel it's easier to find roles as a freelance developer than as a freelance manager (or management consultant).
But in order to be a great engineer, you need have lots of curiosity and an affinity to tinkering, none of which you'll get higher up. And on top of that, engineering expertise has a half life of just a few years nowadays, so engineering managers without at least some hands-on exposure to recent technology get less valuable over time.
One of the better approaches I've seen is that some of the best people I've ever worked with, they've jumped back and forth between manager and engineer multiple times in their career (even Bill gates did, famously).
The key here is to step up while stepping down: Go to a lower level position — but in a smaller and better org with a better culture and build something up from scratch. That way of spiral learning lets you get better as a manager as well as an engineer, when you miss the benefits of the other side too much, just change it every few years. It's the path I've chosen myself as well.
The second path is side projects. I have kids and little time for that right now, but the other threads are covering that topic a whole lot better.
The third path to stay sharp is doing some prototypes, tracer bullets and related stuff yourself every once in a while. I enjoy that as well. Just don't do the mistake of putting yourself in the critical path ever or neglecting your core duties over tinkering.
Such companies will have a career ladder up to Principal or Distinguished engineer. You will have to share your knowledge, of course, but without having to give up coding and do people management, if you don't want that.
I'm 39, happy infrastructure engineer, individual contributor. I tried being team lead for some years, but didn't really enjoy people management. That's okay.
Charity Majors wrote some great posts about that:
- https://charity.wtf/2019/09/08/reasons-not-to-be-a-manager/
- https://charity.wtf/2019/11/23/questionable-advice-after-bei...
- https://charity.wtf/2020/09/01/the-official-authorized-list-...
- https://charity.wtf/2020/09/06/if-management-isnt-a-promotio...
32 here, but most of my professional circle is my age or older.
Programming is not Logan's Run and outside of maybe bold and snappy SV startups companies cannot afford to sneer at experienced professionals wanting to join - not in the current market at least.
My advice would be to talk to your superiors about this - perhaps they would be willing to put you into a coding role? If not, you can start sending out resumes and having interviews - it's not like you have to be jobless to make time for that.
Perhaps you have friends from previous college/pervious companies, who could help?
My experience is that switching roles is generally hard and will take time - you'll need to take that into account.
But it's not impossible and I have anecdata to support it.
First, think in terms of entire systems. Clients pay, and pay handsomely, for honest solutions to their (technical) problems. Don't think of the solution as a "coding" issue alone. There's design (of interfaces, of documentation), there is hardware (IoT, network), there are deployments with 24/7 operations, there are installations in unforgiving environments ( sensors in a corrosive humid tank) and so on. Each one of this is a technical challenge. At the end of the day, clients want a system that is a pleasure to use and is maintainable and extendable by someone else.
Second, get good at all aspects of delivering a system entirely on your own. That is, you don't have to do it by yourself, but you should be decent enough to pitch in as a replacement for any part. This provides opportunities for endless learning, and in my experience, breadth of experience is rewarded.
Third, many real-world problems are not shiny and cool, and younger people don't want to do them. HN is biased towards Open GPT more than say, wastewater management systems, so one could be forgiven for feeling uncool and out of date all the time. Nah, it is a big world out there. And there's plenty of opportunity to use Rust or Elixir or whatever tickles your fancy.
Fourth, if you go my way (not working one's tail off for the whole year), I'd advise you to downscale expectations in terms of money and lifestyle. Once you learn to make peace with making less money, you will find that you will have loads of work coming your way, enough time and plenty of money to enjoy life where it counts. Most good things in life (health, travel, books, sports, entertainment, vacations) are surprisingly affordable. And you need time to enjoy them with your loved ones.
Good luck.
Or rather, find a new job (could be internal, but often easier to make the move by finding a new employer).
I've been pulled away from coding activities before (into management). If you've done it for a few years and you don't like it, you should bail. You've leveled up your skills in terms of seeing the bigger picture, now find the right place to apply them. With your experience right now you'll be a valuable IC (see https://charity.wtf/2019/01/04/engineering-management-the-pe... for more; I think sibling comments have referenced this post too.)
I wrote a blog post about all the jobs ancillary to coding that a good software dev can move into: https://letterstoanewdeveloper.com/2020/10/05/how-to-make-a-...
If you want to talk about devrel, technical training or startup CTO, happy to chat (contact info in profile).
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 landed my highest profile job so far as a fresh graduate, but I quickly found out it was a miserable place to be in. I have made a healthy work environment my top priority ever since. In my opinion you should chase what makes you happy, which may or may not be what makes some random HN users happy.
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.
Like you, I wanna make stuff, not manage people, and I told my manager that as well so we could set progression expectations. What this has looked like for me is still that I'm not doing as much coding as I was as a junior, but I am documenting a lot of things, formalizing development processes, teaching peers about dev ops practices, and so on. I keep on top of new developments, understanding what's worthwhile for our team and why, and disseminating that information to the rest of the team.
My feeling is that you can be safe from younger coders if you continue to learn from your work and show the expertise you've gained from your years. On the other hand, I have also seen senior-titled engineers whose code was indistinguishable from fresh graduates, and that's a bad place to be.
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.
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.
The message was “expect to retrain and switch careers every 8-10 years”
BTW: Dad was wrong - 34 years later I still write code at work... But I’m a Solution Architect - technical leader in a $50m govt IT project.
If the only option for ‘advancement’ is project Mgmt and you’re sure you’re a died in the wool tech-type then it’s time to find an employer that has a technical career track that goes right to Principal Architect Developer
But last few years been horrible as a manager. Now in my forties, I realized I am not a good manager. Programming is my hobby and I get to do that as a developer. But as a middle manager, I have no real power, but I am responsible for delivery of product. Moving higher up also seems like too much work and politics. I tried to get a job as developer but I got rejected multiple times mostly due to the fact I am rusty as coder. But I still want to go back to programming. So now I am studying LeetCode in my evenings.
My current plan is:
* Study LeetCode and get a job in FANNG\ * Always be preparing for interviews\ * Switch jobs often, I spent too much time at my current company to climb the ladder\ * Specialize in something such as Java or Python\ * Find a way into consulting firm. I could start focusing on this now, but I want to build up some cash reserves with FAANG salary\ * Become independent consultant\
Once independent consultant, I am hoping I won't have a real boss, I can work with clients and if they are abusive, I can fire them. The hard part is specializing in the right thing and then building reputation and network.
Are 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.
I moved to Silicon Valley and have never looked back.
I've been programming since I was in high school (started on TI-81 in 1996), I'll be 40 this year and I still LOVE LOVE programming. BUT the only reason I do love it is because I've reached a level of mastery where I pretty much get to choose what projects I work on and the _people_ I work with. Steve Jobs said something back in the 90's that Ive heard other say about the variance in skills of developers vs other jobs[1].
You're burned out because you're working with low quality people and it's way easier to move yourself to an ecosystem where people are more excited about the future than it is to change your peers. (P. T. Barnum also says something similar to this in Art Of Money Getting, published in 1880 [2])
Also, contrarian advice — almost every one of my friends has switched to a manager track. I'm currently in the process of building my own company and most of them can't provide any value at this early stage. They don't read anything on how to become effective managers, they aren't socializing in any communities, they aren't attending any conferences on people management, not reading any books as life long learners, they say things like "I'm technical" and "I know enough to be dangerous", but they can't materially contribute to helping me build my product outside of testing and light UI feedback.
So my two things would be:
1. Move to a better environment (Doesn't have to be SV but some place where there is a community passionate about things you are).
2. If you're going to eject out of coding, eject to an owner, not to an employee.
[1] - http://www.geekmind.net/2012/07/steve-jobs-on-average-vs-bes...[2] - https://www.gutenberg.org/files/8581/8581-h/8581-h.htm#link2...
Choosing managerial track is far more dangerous than being developer in the context of job secruity. Managerial roles vary from company to company and you can not show what you learned as a manager, since its mostly depends on the team members which you do not have much control. Once you leave the organization or if the company goes down, managers go down with it and very hard to find jobs because most people who don't like coding are competing for the manager jobs. There are lots of people in that category.
On the other hand Managers are paid much more than developers i hear, but i doubt its not more than 1.5x of a senior developer salary. In my opinion is not worth the risk. If you are a developer you can constantly learn and stay relevant.
I might be totally wrong, willing to hear the other perspective. If you feel i am being not polite to managers please understand i am not good with managing people and hence probably i downplay managers role to feel superior. Its possible this is the case.
10 years from now, you might not be coding; but, right now, do you want to? If you want to, if you like it more, maybe you could do that instead.
Senior and Principal software engineers at some companies manage projects (so you'll still get some managerial experience if you want to go back to it), and they still code.
And there are a lot more software engineers now than there were back when age-ism was a bigger thing. More software engineers getting older means a larger pool of old software engineers, means there's more good, older software engineers and they'll fight back or destroy some of the old age-ism stuff.
For what it's worth, I've worked at companies where there were definitely older gentlemen in engineering roles, a network engineer who was a genius and very well respected. It all depends on where you work.
Do what you like, you've only got one life :)
My only advice there is if you’ve successfully managed for a few years and you make the switch back to coding, to go back to management will not be hard, at your company or at another. Good luck
I’ll be honest , you’re analysis is perfectly right.
This is just my opinion , but I think the industry has evolved from what is was 20 years ago.
With the rise of social platform , access to knowledge has become universal.
Today anyone can proclaim themself an « expert » on any topic. Trust me on this , I have seen people telling me they knew about something and when you scratch the surface you realize they know very little... Add to this the widespread of IT Trainings everywhere and you have made « IT consulting / Software Dev » become something trivial...
While someone who was a consultant 20 years ago was worth a lot for his own company and valued by his own peers/superior/customer his now considered as not much than a cell inside a spreadsheet or a unit of work for a given task...
There is no surprise there and I think it’s not even specific to you or consulting. It’s the same everywhere if you are working in large business ( Fortune 500 / SV Unicorn / Big Fours ...)
What will happen in 10 years? Who knows? Things change a lot in 10 years and your perspective on things will change too. I think you may be overly stressed about ageism (keyword being "overly"). All of these young engineers will hit their 30s/40s/50s/60s too and the age group distribution will reflect that in the years to come. I'm in my 40s and most engineers I socialize with are my age or older. None have any intentions of becoming managers. Keep a level head on HN, the attitude here is very SV focused and doesn't necessarily provide an accurate depiction of the overall industry.
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.
i think concern about age is very warranted.
i think you should try to casually talk to your manager(s) about going back/down to a role where you can do more of what you want. give back some salary if you need to.
if that fails, then start looking around.
then raise the issue again with your manager(s) as a more serious issue -- i.e. you really want this.
being burned out is affecting your home life, too, so your wife/kids get to experience your depression.
my new pet cause is a 4-day work week.
don't know if i'll be able to achieve it this time around, but i feel like it would offer some protection against the dread of a boring 'dead-end' job.
one company i just talked to has 'mental health fridays' -- one friday off a month. seemed like some kind of important admission (of guilt) -- or a commentary on the state of work in 2021.
Another primary driver for my starting side-projects, which I swore I wouldn't do because "I already program enough at work" (I think this is fair when I'm burned out from it but I feel that less and less often as I improve), is that I want to be more creative and less consumptive in my free time, with something I would value.
2. It's incredible hard to predict an accurate version of the future. A better alternative might be to set yourself to quickly adapt to changing scenarios and being strong on timeless foundations.
3. Align your strengths with the output of the company: Find your strengths are and what you enjoy and figure out how to align it with the outputs of the company and serving humanity. I find that having a goal bigger than ourselves tends to energise us.
4. If you need to move to something different, it might require you paying a price; I think of it as paying a premium on your first deal.
5. Have a personal motto:I have observed that organisations tend to become the motto they ascribe to themselves. Maybe individuals can leverage this?
Some posts from leverage thoughts that my help below:
https://leveragethoughts.substack.com/p/do-not-engage-the-mi...
https://leveragethoughts.substack.com/p/early-career-tactics...
https://leveragethoughts.substack.com/p/paying-a-premium-on-...
https://leveragethoughts.substack.com/p/humans-and-work-thre...
I hope this helps and I wish you the best.
What you worry about is what will happen in 10 years...
Thinking that choosing a path now may lead to a dead end in 10 years is overthinking it to me.
You can always switch back to engineering management if/when you need it.
Ageism is likely going to be less pronounced in the future than it has been in the 2000s as well. New companies were created by young people, but all these companies are still there, managed by people who also get old.
The way I see it is that we’re in an industry with no shortage of jobs, and that’ll likely be the same for the foreseeable future. We are so lucky that is is the case. So maybe try and stop worrying, you’ll be fine coding...
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’m in my 40s and still coding. I wish I had your problem, which I’d solve by scratching my coding itch out of hours.
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.
These are all just thoughts you have which very well may not be true. Why don't you dig into those thoughts, why you have them, and see if you can think about them differently.
Just don't be one of those older engineer codger that still pushes for subversion instead of git and prefers php instead of something modern. That's a fast track to becoming irrelevant and unhireable. Keep up to date and SHARP.
Focus on what makes you happy and start working on it. Good to work on stuffs that you may not have tried out before.
I agree that going up the ranks is not as nice ( i did not make it that high yet). Also dont put all your eggs in the same project. make sure u are also doing something u enjoy
Spend some months researching spaces. There's opportunity everywhere and I think anyone smart enough to do programming is smart enough to dive into other spaces too. Short list some ideas and put some stakes in one or two.
With evolving technology, Industry will require knowledgable managers who are familiar with latest tech and trends. You will fit there with your experience even after a decade.
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.
That said, I am planning, when I can (Sept 2022), to go back to SW development. It might be a bit of a pay cut, but the job satisfaction will be worth it.
Good luck!
Being a coder makes you a cost centre, whereas being a PM gives you some degree of charge over a budget, which means you can more directly quantify your $ contribution to the business. The upper end of your salary expectations will therefore likely be higher in the PM role. It sounds like you don't want to do PM, but sort of realise this.
There are a handful of exceptions to this, where you become such a domain expert that people will write blank cheques for you do still do the technical stuff, but you will find overwhelmingly that your experience level is one where companies see your best value in providing you the responsibility to guide the high level and leave the detail up to juniors below you.
Of course, you may choose that you want to become that greybeard IC, and that's totally ok, but expect it to put some degree of limit on your salary's upward trajectory. I don't think that they will kick you out just because you're old, but they certainly see you as being able to deliver more value in some degree of management. As an IC, you simply can't provide that much more value back to the company compared to juniors in similar roles, because your true value lies in being leverage to multiple juniors through your experience and mentorship. If you're paid well enough, satisfied with having that for the rest of your working life, then it's an increasingly stress-free way to pay the bills because your mastery of the role will mean it's easy to deliver.
It's worth noting, that some of the other ways around this (starting your own company, freelancing, consultancy) will inherently include a degree of management of some description. Whether it's the right balance for you is again something only you can gauge.
So if you truly want to stay as an IC, how do you do that? Talk to your supervisors about your career goals and highlight that. Have that discussion, explain to them that you're happy to take on a mentorship role but still want to be in the weeds at the end of the day, and hopefully your company is flexible enough to work with you there.
Context: I'm also 35 but in a mech engineer career, and in exactly the same career stage as you. I now have 3 people reporting to me, but more informally play a strategy/mentorship/leadership role to a team of about 10 more junior engineers.
I have thought a lot through this, and my team has multiple of those old greybeards who stayed in the technical expert IC role. I wrestled with the same issue (I used to love doing technical design, FEA, CAD, etc., and can still probably run rings around the juniors in it) but ultimately realised that I want the career growth and that I can deliver substantially more value by moving into a leadership position.
I am also desperately in need of advice, for last 2 hours can't do anything at work, feeling worried about what to do next.
I mean, long ago you would work in farming or as a blacksmith all your life and that would be it.
With such constant change nowadays, you can't help but feel that you are always on a tightrope. Late capitalism has made everyone expendable; you have to prove yourself constantly.
Also, inequality takes away some of your freedom. Sometimes I wish I could take some time off from IT and do something simpler like wait tables or walk dogs. But it just is not possible to take such a huge pay cut.