In periods of ones life other things matters - maybe it is taking an education, starting a family, etc.
Other periods work matter.
It should be entirely fine to switch it on and off and change tracks throughout life - and in my view it seems like it is!
To reach a peak it takes roughly 10 years, but these 10 years can be started at 40 when your kids does not wear diapers anymore.
But we will integrate with tech more, as a society.
I wonder where brick and mortar stores will be in 20 years.
While one can change tracks at any time, success is far from guaranteed. Being a distinguished engineer at 40, one cannot suddenly decide to enter the track for CFO or CEO. The track for that accepted entries 10 years back and is already over-subscribed. Only the CTO track is open at that point and only in certain companies.
At Stream a lead is 80% technical, a director roughly 50% sometimes more. And even VPs and up are still somewhat technical.
I think the idea of management without technical excellence track is just misguided. Small teams, technical excellence, and leaders who can do the work is the right way.
I‘ve seen bad companies where it is true, but in good companies typically not true. Look for example Peter Norvig, 100% hands on technical type, but in a high management position.
c-levels, VPs, and directors can be very technical, but rarely write code. team leads definitely do, though it may be only 3 days a week, and rest is org/planning/pr reviews.
only at small companies does the CTO write code. our cto has written plenty of deep code back in the day that enabled the business to scale to its current size.
There are some different aspects to this; The director will have many other responsibilities and may not be able to provide to provide the research/expertise required to produce a good code solution to the issue at hand and integrated with the rest of the system.
The rest of the project team may be delayed with waiting for the directors code and may well find it difficult to co-ordinate with the directors level of knowledge (which is perhaps out of date). In general, criticising the director for delay or bad code is not likely to be a career-enhancing path.
In small company/start-ups, this a common condition that does need to be remedied. Directors/managers have significant responsibilities that needs to come first rather than feed their own ego/desires. Hire good people and direct them to scale the business, your job is different now and you need all your skill/time/resources to do it well.
In short, personally been there a number of times and it wasn't good for anyone. But we struggled on.
It's different technical excellence.
What's not given proper weight is that it's different technical excellence. Roles seen as "more management" demand system-level understanding and technical knowledge. And a technical knowledge that includes what many see as not technical such as awareness of people or finance dynamics. They can, should be seen as technical aspects. A more senior, "more management" role has different levers to use to make projects come through. And these are different higher level projects. A more senior role is also free to juggle reports who specialize in this or that. If you hate or you are bad at task scheduling, have someone do that for you. If you are not great at writing speeches, etc, etc.
Among the ways you can prepare for that: (1) find at least one mentor (someone at least two steps more senior who can guide you on what to think about and on how things work. If the people two steps up in your company are bros... your mentors don't have to be in your same company.) (2) Consider what's missing to your skillset - and that's not planning software but maybe it is.
I have found utility in "overengineering" my life. Not just the tech I do, but in most things, and creating small, robust, high-Quality, and adaptable structures. Things that can be rearranged, and repurposed, when (not "if") the context/paradigm changes.
I started maxing out my retirement in 1990, and that's a good thing, because, in 2017, when I finally started looking for work, I was surprised (and disgusted) to find that no one wants to hire us olds. I wasn't planning to retire, but I wasn't consulted by Reality.
In my work, I have found utility in writing in modular fashion, and making every module as high-Quality as possible. I've had to toss quite a few, and had to do substantial refactoring on some, but, for the most part, they have served me very well, and continue to do so, to this day.
An extra log line here or there, or an e-mail sent to the admin in weird situations, goes a long way - provided that you don't generate many false positives, because no one pays attention to a program that cries "binary wolf" too often.
Perhaps there is something wrong with me but I always want to dot all the i's and cross all the t's.
Beyond that many of us have been running on fumes for years, I can't lose ten extra hours every week away from seeing my family, so I can up-skill for a new variation on the same career with ultimately the same bull.
Or meant to plant a seed of thought in someone’s mind ?
> I can’t lose ten extra hours every week away from seeing my family
I hope you find the time to make it work for you.
And , I don’t want to assume but so have found “I can’t” attitudes don’t work for effecting change in life.
Maybe work on that aspect of your personality.
I personally subscribe to framing “I can’t” as “I will not”. Then you can view such things as the conscious choices they are. You can also avoid feeling forced to do things just because they are expected of you.
E.g. “I can’t give up time with my kids” vs “I will not give up time with my kids”.
A sweeping statement indeed, but it does reflect my experience too.
Perhaps it's my ingrained deference to authority - when I start a new position I tend to believe that my manager has my best interests at heart. This is a mistake and I now believe it's better to maintain a kind of defensive attitude and to always be assertive in establishing, and if necessary negotiating, the responsibilities and expectations of your role and your relationship with the manager.
This may not necessarily be a personal failing on their part, this may just be a consequence of the operational management system you both work within.
You are a good IC? Sure let's promote you to management, but in 95% of cases, we're not even going to pair you with anyone or have a senior manager help you understand, build and grow - we're going to throw you in the deep end and have you sink or swim.
This often ends up with stressed out people used to doing well now approaching an entirely new problem with slow feedback loops and entirely different protocols than before, and the amount of burned out shitty middle managers I see is off the charts.
IMO - managers are terrible at the same rate as ICs. But the damage a terrible IC can do is limited in most companies because there's guardrails like automated testing, pull requests, no access to the production database, etc. At worst they end up being a big timesuck for other team members until they get let go.
A terrible manager will sink a project or team single-handedly, though.
I'm not a manager, and I don't want to be. But I'm quite happy with the manager training that my employer puts people through before giving them direct reports.
One should always be negotiating expectations, though, even when one considers management to have our best interests in mind. And also remember that your manager is learning how to manage from you. You get to shape their experience of being a manager, and you get (to an extent) to guide them in how they grow as a manager.
There are whole degree programs dedicated to managing and organizing people, but we’re like, “nah, Joe’s a good programmer so we should talk him into stopping that so he can supervise people instead”.
Fact is, there’s little relation between the two. A person may happen to be good at both, but expertise in one does not imply adequacy in the other.
If you can't work well with any manager the common denominator is you. It's also the only thing you can change.
There's also a lot of selection bias. What many people point out in these threads is that the sort of people who desire to be in management, and the sort of skills selected for in managers often don't align to what more ICs would actually want out of their managers. Managers are often hired by other managers and not by the managed, so the skills that get you the job often aren't aligned to what would make them good to work for.
They set clear goals and expectations, provided honest feedback, both positive and negative, and quickly jumped to help re-plan when things did not work out.
They were also asking what I am optimizing for (for me at different times it was more money; promotion; interesting problems to work on; time to explore other long-term products) and as far as I could tell worked with their managers to move me in that direction, sometimes successfully, sometimes not.
I did not assume any of my managers had my best interest in heart, but one of my first managers gave me some lessons on "how to manage your managers, myself included". It took a few iterations, but he convinced me that by far the #1 thing most managers want is for me to deliver things on time; not cut a few days off the project timeline. And if I learn to do that, they will advocate for my interests, shield me from corporate BS, etc.
Some specific advice from that manager was (in his words) "never promise something in 2 weeks unless you could demonstrate it today" and "do not sit quietly when you are given unrealistic timelines; counter with specific subtasks you see and how long you expect each will take". That general advice worked very well for me and helped build symbiosis with direct managers.
I did dislike a few managers, but those were generally good ICs stuck into a management role they did not like (or at least did not know how to do) and kept both sticking their fingers into what their team was doing and start timeline discussions with "it would take me one day to do this, I will give you two; go-build-this-now".
Again, just a personal data point; not claiming that most of the world works this way. I may have been just lucky.
Thanks these are good advice.
> most managers I had in my now 25-year career in tech were good.
I didn't have tons of managers, but my experience as well. Of course, they have their own interest in mind, rather than mine, but in my case at least, our interests were more or less aligned (completing projects, not burning out or leaving the team, working on things that matter to the company, avoid conflicts...).
I have worked at some great companies, and some not so great ones. A couple FAANGs as well as a 20-person startup and everything in between. I have been part of some fantastic product teams and a fair number of disasters. I have been a code monkey, an architect, a tech lead, a staff engineer, a manager, a director...and now know that none of these fancy titles really mean anything. And throughout all this I have managed to put a decent chunk of money in the bank.
Most would consider my career to be pretty successful. I like to say that I don't really have a career but simply jump from one project to the next and one opportunity to the next depending on how the wind is blowing. And despite what all the authority figures in your life will tell you, that is a perfectly fine way to live and be happy.
Our culture possesses this weird belief, that people always need to be transformed. This cuts across all ideologies, ranging from religion to Marxism and corporate culture. I think simply declaring "bullshit" to that belief can lead to a much happier life.
It's not entirely clear that much of this field will look the same in five years, but still, I think doing the thinking and the planning for the sake of mapping out the route is important.
If only to inform you that no, you don't want any of those routes.
(I did this planning and ended up in academia/microbiology, as a product designer, for better or worse but it's been fun)
It's a great question. It is also, I think, the right time frame, though one could argue for three years instead of five. Given the terrain I see now, I can plan for the next five years, and have those plans be mostly reasonable most of the time. Past that is harder.
I know it sounds preposterous, but ask anyone over the age of 55 or 60: except for folks who built their own companies or made truly exceptional contributions to their field, most will say that hobbies, friends, and family mattered a lot more.
So, there is this fundamental contradiction in this article: you can engineer a very neat career, but for most techies, the most useful goal is to make money fast in a way that doesn't drain your life energy. And most of the time, this means responding to opportunities, not sticking to your guns. For example, a lifetime IC job may be ultimately worth less than a management job that gets you to VP level in a decade. You don't need to dream about being a manager; you just need to be reasonably good at it.
You could say the same thing about ICs though -- "I refuse to believe there are people whose purpose in life is to spend 5 days a week for 3 years building an enterprise line-of-business app to automate an obscure legacy business process that will be used by 10 people in total, and all 10 of those people will complain about the new app and wish they could go back to doing things the old way"
That is a real meaning and sense of purpose for your earned money!
The world we live in still sucks away the best years of your life but at least you don't have to wait until your 60s to live the life you want. You can also work on side projects in your spare time that will hopefully accelerate this process.
This should be doable on a tech salary.
And that is true for all memory, I suppose. There is none. It's constant communication, down to the quantum level, a constant vortex of information, and if the vortex stops, all memory is gone.
You can have your cake and eat it, too: if your work is satisfying and seeing people use the things you built gives you joy, you can make good money doing something you life without optimizing your entire life solely around ladder climbing or bigger paychecks.
as an extreme example I'm aware of, the core AWS infrastructure is still heavily dependent on Perl scripts mashed together 15+ years ago.
What part of the infrastructure? The control-plane logic that triggers when the dashboard/CLI/CloudFormation request modifications to resources?
If you can switch to management without draining your life energy, go for it? I hope you're a good manager.
Personally, all of my experiences managing people have been very draining.
Now, did our presence impact the company? Did our code survive? Or documentation? Do people who work there today have any idea we ever existed? No, perhaps not. But really... who cares? The relationships we have with people in our lives matter, as do the impacts we have on each other, regardless of what our impact was on some rando corporation I earned a check from some number of years ago.
The exception is if you build a fundamental component of the system, and that component is so unique in what it does that nobody who comes after you will even consider the idea of ground-up reimplementing it, but instead just has to immerse themselves into your mindset, trust your docs, etc, whenever they're maintaining that component, forever.
---
The bad/painful version of this, is when the component relies on unique hardware (e.g. a mainframe's native IO-acceleration capabilities), and was designed by someone who was immersed in that ecosystem and understood how to write code to take advantage of it. So the code is incredibly non-portable, written in terms of the low-level abstractions of the hardware, that nobody else in the company will ever understand to the same level the original programmer did. This is e.g. flight booking.
You should hope to never encounter these, since they make the rest of your service that has to interact with this thing into a tar pit of low momentum, from your lack of ability to effect change on this component.
--
There is a good version of this, too, though: when the component relies on unique concepts and math (say, doing static analysis by generating constraint statements and solving/simplifying them using a prover) that are portable, and could in theory be reimplemented in a new codebase if desired... but which were literally invented by the programmer in the process of implementing the code, at the climax of months of lateral thinking about how to solve the problem. This is an engineering True Dweomer.
There's usually nothing wrong with codebases containing True Dweomer code; they're not any less maintainable than usual. And they solve a problem that isn't solvable with simpler solutions — that's why such a weird solution was arrived at in the first place. So they usually tend to stick around.
But everyone who arrives at the company will nevertheless be slightly afraid of touching the True Dweomer code. They don't understand it, even though they know they could understand it given enough time (and prerequisite textbook reading.) Unlike mainframe code, people might look fondly on the code, looking for opportunities to be assigned to a project that requires that they come to grips with it... but the project usually ticks along by itself, not requiring much maintenance.
(What you'll actually hope for, is that whoever writes the True Dweomer code requests to lift it out, out of whatever project it's a part of, out of the company itself, into an open-source project. Because that way, that person who does understand it, can keep maintaining it, even after they leave.)
E.g., tech suffers from the former, politics from the latter, and for both fields, the effect is a warping of the good that they could be doing for society. Society should be set up to encourage "correct" entries and exits and to discourage "incorrect" ones (with allowances, during the transition, to avoid having a "lost generation" that never gets to contribute).
Letting people hang on, with their outmoded ideas, into their 70s and 80s? Forcing breadwinners to take on maximum workplace responsibility at the same time that they are most able to contribute to raising their family or building and maintaining their community? There's something perverse about this set-up. To say nothing of the people forced to spin their wheels while the 10xers load their own plates with all the opportunities.
Every couple years since, I've gotten a bug in my butt and investigated how many sites still had pieces I'd clearly worked on. On this most recent occasion, I could no longer find anything. They've changed over to some open source CMS and I was unable to find anything I had built.
It's been 12 years in there since I left, but as far as I can see on the front side everything I'd written is gone. It's a strange feeling, like 5 years of my life just evaporated.
Very odd to look at it and know that I'm probably one of 2 or 3 people who know why that specific code is there, and also to know that the base of this is still running.
The goal of many software engineers is to build software / systems they can be proud of. They love software and the machines it runs on.
Many people here have Arduino projects, 3D printers, home servers, and similar hobbies.
A few weeks ago, I was looking for compression algorithms for a particular use case and came across Brotli[0]. I was surprised to learn it was developed by Google. That realization hit me hard. Google used to be a hub for this kind of innovation. Projects like Brotli aren't built to maximize personal profit; they're driven by passion and a genuine love for software engineering.
It's clear that the industry is shifting from being geeky and nerdy to being more business and management focused.
While planning might work for some people, having a more short term view can work for others. The only thing I could ever control was what I was able to do, and when I was ready to move on. There are many optimizations available to succeed in life; not all are obvious.
I know it’s a big ask.
I am just insanely curious to know.
One thing I noticed is that what I valued in my 20s wasn't what I valued in my 30s and 40s. It's difficult to anticipate who you will be in a few years from now. It may change drastically. Keep that in mind when planning!
Career progression should be dominated by FIRE...
I recently took a break from work with the intention of working on some side projects and also thinking about what it is I like to do (somewhat along the lines mentioned in the article - do I want to stay on my current trajectory and try to hit senior IC, management etc). I am only about 6 years into my career, perhaps a bit early for a sabbatical but I felt this was the right time for it. I had a pretty good reputation in my job and I could have done the thinking while on the job, yet I felt I couldn't. I am helped by not having any financial concerns or other responsibilities.
I am not sure what I expect to gain from this though most people assume that either I must be starting my own business or chilling at home although neither is true. I took care to put some structure into it so I don't while away the time scrolling HN. I don't think I will get a sudden epiphany but feel if I put in some hours without any external constraints, something might happen. The worst that could happen is that I have to write off this time and go back to running the race in my IC track.
My favorite career end that I'm naturally working towards to is the ability to jop hob to different roles without having prior experience. One way to do that is to be able to show in an interview that you have transferable skills and learn crazy fast. Another facet of that is that you need to identify companies that are open to this sort of thing.
Another career end is to become rich and not work. It's not achievable for everyone of course. But it is a type of career end.
Other career ends that one becomes disabled and live on disability checks or welfare. To me, it seems that this is a career end that people want to avoid.
I feel digital nomads aren't really represented in this career end. You could put it under independence, but the characterization of independence in this blog post was quite narrow which is why I feel the need to state it explicitly. Some people are in their career end when they can just work remote 4 days and have a decent salary.
There are many more career ends, what could you come up with?
I had luck and opportunity to ride the cloud computing wave and it carried me into software development and distributed analytics systems, from a B.A degree in business. 20 years of lateral moves up to Sr. Level, but never outside of IC, yet.
I daydream about turning my DIY skills into some type of construction trades business while I am physically able. Or testing the waters with software consulting.
Manager role is not appealing working for someone else's company although just like construction trades, being an apprentice in that role is probably going to be the best way to learn it. I dread the meetings and politics and employee reviews. But if I really want to run my own business, at some my point I may need to be a manager on someone else's payroll. Even if just for a year.
> the time I inadvertently shut down one of Britain’s nuclear power stations
There is a scram joke in there somewhere ;)