But the more I look at the job market in software, the more I see advice for managing a software engineer's career like trying to "beat" the market. I don't know if I still like this approach. I'd rather not want to keep trying to predict when the high point of some skill or technology is approaching. I prefer to do what I personally like and only change/learn something new because I get bored, and not because the job market doesn't favor it.
Tech trends feel like moving targets, and I have a dilemma. I like working in tech but I also don't like being forced to hit moving targets.
To give you an example, I started my web development career in the late 2000's. I didn't "buy" into cloud computing when it went on the rise, and I didn't "sell" my PHP skills. That's making it tougher to get interviewed at jobs probably because my experience doesn't have enough of the right keywords. Trying to just keep up with new concepts just for the sake of the job market is stress-inducing and it's like constantly monitoring stocks to buy and sell. It's an emotional roller coaster.
Is it just possible to hold on to your initial "investment" of skills long-term, and regardless of what you started with continue to build returns from that? I know that the advice to just spend more time in the market is advice for the regular joe, but I actually do just want to be a regular joe programmer.
Many people go in at the peak of hype where it's "overpriced" and lose out. Even if it's a good stack, you won't be as good as the people who have years of experience in it now. It's too late.
Just go for things that actually excite you. For me, it's GPT-3 today. It's too early for job openings, but mature and impactful enough that it feels like a secret weapon. I adopted Kotlin before Google officially did, because it was cutting down lines of code by half.
No matter how boring you are, there should be things that actually excite you as an expert, and those are the only ones worth investing in early. Since you already browse HN, you shouldn't worry about missing out on them.
Keeping up with the latest tech is more properly compared to diversification. You are not abandoning your old skills, but you are adding some new ones that have a good chance of being valuable in the future. You may end up learning something worthless, but as long as what you learn is mainstream, there are probably jobs for it.
I do think there is wisdom in not immediately using every new thing in production, but that’s different from wanting to stick to one language and never try anything new.
The first is that you've already (accidentally) timed the market by "buying" PHP in the late 2000s when that was dominant. There's an illusion that everything that existed when you got into the industry is somehow dominant, fundamental, and long-lasting, and everything that comes after is a transitory fad. That might even be true for some things, but many things are transitory fads, and PHP was one of them - the problem is you didn't sell / rebalance as it was declining.
Secondly, getting into / out of a technology can be a gradual process, more akin to a dollar cost averaging strategy. If you start to learn Rust, your PHP skills won't vanish - some of them will even transfer, and others will fade, but still be there if you need them.
The core skills are those that have stood the test of time over multiple decades (OOP, FP, Operating Systems, Distributed Systems).
The "Explore" portfolio is essentially venture capital like bet on new tools/frameworks/languages. Most of the venture bets will fail, but few of them will have exponential returns where you will get ahead of the rest of the market or discover early that your side-project/prototype is very valuable in the market (e.g. ML, Cloud services, etc).
Front-end has more vertical tech e.g. mobile platforms and another framework flavour (Vue/React).
More advanced tools (NewSQL) and languages (F#, Elixir) would be great to use but don't often find opportunities.
Let's say you wanted to jump into golang. It is easy enough to learn but you are forced into structuring your app a certain way. You lose some joy you had with php. How do you deal with those feelings?
Historically it was widely believed on here that php lost the race to Ruby/rails but fast forward and Ruby has grown out of fashion and a php developer is more employable.
React has the most job postings but most of them are frontend jobs. Comparing php to node jobs is probably a better match for a backend developer.
Most jobs are trending for python this year. Different types of companies use python. Typical startups may use it as a replacement for php but others may be more interested in unlocking ml. That complicates that stack.
One thing is to consider is culture . Moving from php into a different stack usually means a different culture. Chances of bigger teams, daily standups.. bigger orgs.
Let's say you decide to switch to React how would you leverage 20 years of php experience into a React position?
"timing the market" would then be saving up for a long time, then dumping it all in when you think it has hit its low.
To transfer the analogy, it would be like shireboy describes. You would keep up with the news to see what technology is brewing. That does not mean that you have to be the industry expert on every single technology you decide to look into, but you are more aware.
I think your last paragraph can be compared to stopping investing into the market, and rely on interest to keep you growing.
I think it's worth keeping a loose working knowledge of all the mainstream software in your field, but don't really go deep until you need it.
There is good satire of the stone to Bronze Age transition. https://www.youtube.com/watch?v=ZHGafC7zOUE
e.g. if you can't find jobs as a PHP developer, but you see there are many jobs for (say) NodeJS web development, or Golang API development, you may need to learn some things, but that can build upon how you did things with PHP.
You still have a website still involves HTML, CSS, and JavaScript. A website will still send HTTP requests (and receive responses). The program will still need to be deployed so that it's reachable from the web. etc. etc. -- And there will always be adjacent things which you will either need (or benefit from) learning.
This leaves out that diversifying one’s tech skills isn’t as easy as diversifying a portfolio though. You could do a React side project, but it won’t be considered as highly as a full time job. I guess that’s the difference between adding a bit to your portfolio vs. going all in.