The usual trade-off of a well paid software development job is lack of job security and always learning - the skill set is always changing in contrast with other jobs.
My suggestion, stop chase trends and start to hear from mature software developers to get better perspective on what's best to invest on.
And why the mantra is always true?
You can find stable job (slow moving company) doing basic software development and just learn something new every 4 years and then change companies.
Or never change company and be the default expert, because everyone else is changing jobs, get job security, work less hours and have time within your job to uplift your skills.
Keep chasing latest high paid jobs/trends by sacrificing off time.
What's the best option for you? Only you know, it's depends on your own goals.
If you didn't like working with computers, then you (and another gazillion people who choose it for the $$$) probably made the wrong choice.
But totally depends on what you wanted to get out of it. If you wanted to make $$$ and you are making it, what is the problem? That is assuming you have fun outside of work.
But if you wanted to be the best at what you do, then you gotta love what you are doing. May be there are people who have super human discipline. But for normal people, loving what they goes a long way towards that end.
This type of argument can hold for any profession and yet we aren't seeing this pattern much in other white-collar professions. Professors, doctors, economists, mechanical engineers, ... it seems like pretty much everybody made the wrong choice then?
I think this is a wrong way to look at it. OP says that he invested a lot of time into becoming proficient in something that today appears to be very close to part extinction.
I think that the question is legit, and he's likely not the only person asking oneself this question.
My take on the question is ability to adapt and learn new skills. Some will succeed some will fail but staying in status-quo position will certainly more likely lead to a failure rather than the success.
There are plenty of such examples but both of these imply that you're ready to devote a lot of your extra time, before or after the job, only that you can show you're relevant in the eyes of those who are the decision makers. This normally means that you're single, that you have no kids, family, no other hobbies but programming etc. This works when you're in your 20's and only up to the certain point unless you become a weirdo in your 30's and 40's etc. without any of these.
However, in the age where we are met with the uncertainty, it may become a new normal to devote extra effort in order to be able to remain not competitive but a mere candidate for the job. Some will find the incentive for this extra pain, some will not but I think it won't be easy. Perhaps in 5 years time we will only have "AI applied" engineers developing or specializing their own models for given domains. Writing code as we have it today I think it's already a thing of a past.
I think the reason is quite simple. Software is endlessly configurable. And thus a lot higher chance to get the configuration wrong.
This is what makes it attractive, and makes it hard to get right.
You cannot get good at it without making a ton of mistakes. When companies look for people with a lot of side projects, they are looking at people who already have made such mistakes and learned from them, preferably on their own time and not on paid, companies time.
I ll list some attributes of software development that makes it unique.
* No hard rules, textbooks to follow, industry as a whole still make costly mistakes and recovery cycles.
* No easy way to gauge the requirement-fit of the thing you made. Only time will tell.
* Cheap (financially) to practice, make mistakes and learn.
Actually that applies to doctors. A doctor who is not curious and is not willing to do learn/research on their own initiative is only a marketing hand of pharma.
But it is quite hard for doctors to do any real research independently. They can't really do experiments on real people...
Software is really special.
Don't get me wrong. I am that guy, who probably over-invested into the development of his skills but I don't think it's a normal thing to expect.
That does not apply here. Because more often than not, we don't prescribe products/services that our clients must go out and buy, without exception.
>it's a normal thing to expect.
It is not a normal thing to expect because in other fields there are few people who can afford to do that. So an employer cannot really pick someone from that pool.
But in software, it is possible if one choose to do it. So the pool is a lot bigger, so it becomes feasible for an employer to pick someone from there, instead of picking from I-am-only-as-good-as-I-am-paid-to-be pool..
You know that treating patients is not only about picking the right medicament and writing prescriptions? It's about diagnosing, testing the hypotheses, optimizing for the particular patient case, learning about all the specific factors of their environment including the genetics, then we have surgeons, etc.
And yet I don't quite see doctors being on a time spending spree to become exquisite in all of those things. Nor do I see hospitals or clinics doing such knowledge and ability harness tests over their potential employees. Stakes are much higher in medicine than they are in software so it makes no sense at all to make an argument that doctors cannot "afford" it. They can, they have books and practice the same way we do. I don't get to modify the production system every day but yet I am learning constantly of how not to make those same production system go down when I do.
> It is not a normal thing to expect because in other fields there are few people who can afford to do that.
It's not a normal thing in software too, you know? Let's please stop normalizing things which are not normal. If there is one thing that makes me happy in this new era of AI-assisted development is that all this bs is coming to its end.
I am just describing the logical behavior of an employer who wants to get the best person for the job.
About the other thing, I think I will let you have the last word since I feel that we are speaking past each other.
It never had time to develop into a truly professional field like medicine, law or engineering.
This doesn't match what I have seen in other industries. Many auto mechanics I know drive old Buicks or Ford's with the 4.6l v8 because the cars are reliable and the last thing they want to do on a day off is have to work on their own car. I know a few people in other trades like plumbers, electricians, and chefs and the pattern holds pretty well for them as well.
You can enjoy working with computers and also enjoy not working in your personal time.
The problem is the field is changing, fast. I love writing code... I'm not so sure I love prompting Claude, coordinating agents and reviewing +30k vibe-coded PRs.
As AI allows more and more people to accomplish tasks without a deep understanding of computers, “working with computers“ will be as much of a marketable job skill as “working with pencils” 50 or 100 years ago.
Given how quickly models, tools and frameworks rise and fall, betting your career on a single technology stack is risky.
This was something I dealt with a lot when JS frameworks became the newest shiny thing and suddenly the entire industry shifted in a few years from being a front-end developer to being a full stack developer.
This happened to a lot of my friends who went all in on Angular. Then everybody switched to React.
The issue then became, "What should I learn?" because at my company (a large fortune 200 company) they were all in on Angular, and weren't looking for React developers, but I knew companies were moving away from Angular. So do I work to get better and more indispensable with Angular, and risk not knowing React? Or do I learn the new shiny framework betting at some point my company will adopt it or I will be laid off and need to know it?
It feels like half my life as a dev was spent being a degenerate gambler, always trying to hedge my bets in one way or another, constantly thinking about where everything was going. It was the same thing with dozens of other tools as well. It just became so exhausting trying to figure out where to put your effort into to make sure you always knew enough to get that next job.
As senior, if you choose, you can coast. By coast I mean you do justice to your job and the salary you are paid. Its a perfectly acceptable choice for someone to be senior for as long as they want.
The biggest bottleneck is going to be what other seniors and higher think of you.
I wonder what the best decision would have been. What job is AI immune and has a stable 40 hour week, no overtime, with decent pay. Teacher? Nursing?
Definitely something that requires social/interpersonal skills though will be the thing that winds up being AI immune. Humans are social creatures so I assume there will always be some need for it.
I feel you. It's a societal question you're posing. Your employer (most employers) deal in dollars. A business is evaluated by its ability to generate revenue. That is the purpose of a business and the fiduciary duty of the CEO's in charge.
> Am I supposed to want to code all the time?
Yes.
> When can I pursue hobbies,
Your hobby should be coding fun apps for yourself
> a social life, etc.
You social life should be hanging out with other engineers talking about engineering things.
And the most successful people I know basically did exactly that.
I'm not saying y'all should be doing that now, I'm just saying, that is in fact how it used to be.
Fuck. That.
I worked at a faang, successful people weren't people that did engineering, it was people who did politics.
The most successful people were the ones that joined at the same time as the current VP.
Your hobbies need to be fun, to you. Not support your career. If its just there to support your career, its unpaid career development, not a hobby. Should people not code in their free time? thats not for me to decide. If they enjoy it, and its not hurting anyone, then be my guest.
Engineers are generally useless at understanding whats going on in the real world, they are also quite bad at communicating.
do. fun. things.
I'm sorry for you as well.
I’m more concerned that it is the highlight of someone’s life being in front of a computer all day.
My career has been fun, thats why I still do the thing I'm doing. I've worked with the very best in their respective fields for ~20 years.
I have done many and varied fun things through work, and continue to do so.
But.
Work stops at contracted time. After that it's me time.
If all they did was code all the time, write code for fun and interacted mostly with other similar people, they probably wouldn't be the first choice for these projects.
The ones who ace their careers are for the most people that are fun, driven, or psychos, all social traits that make you good in a political game.
Spending lots of time with other socially awkward types talking about hard math problems or whatever will get you nowhere outside of some SF fantasy startup movie.
I'd say it's especially important for the more nerdy (myself included) to be more outgoing, and do other stuff like sales or presentations, design/marketing og workshops - that will make you exceptional because you then got the "whole package" and undestand the process and other people.
Well that depends heavily on how you define successful. Successful in life? I would tend to disagree, unless you believe that career is the only thing that counts. But even when career is concerned: the most successful people I know went on from being developer to some high end management role. The skills that brought them there definitely did not come from hanging out with other engineers talking about engineering things.
I did not do side projects. I really enjoyed most of my 20s as a single person. I was a part time fitness instructor, I dated, hung out with friends, did some traveling.
The other developers at my job also had plenty of outside hobbies.