(before you read, no need to panic. I write the entire page with a smile on my face because I supply antidote in the end 😛)
This has been bothering me ever since I picked my computer science major. The fear evolved significantly through my last job: I observed the conservative elders' trying everything to secure a safe retirement.
I have empathy for them: we humans eventually will all be at the stage where we can not think as fast nor produce as much such that we simply want to stay in comfort.
Admit it or not, being a software engineer, the fear of becoming insufficient is especially severe. The question is: when?
(part of the fear is caused by the jump from $100k/year to $0, but let's save that topic)
If I were a sufficient 25-year-old software engineer in 1995 working on
Windows 95 applications: by the age of 50 (the year 2020), none of my skills in the early days are relevant today and I am perhaps out of job by now.
You may argue that a software engineer should have adapted to the changes, or he may have already switched to a management role.
However, embracing changes is a bit against human nature. I believe humans naturally want to be part of a stable environment (i.e. home). Frankly, most jobs do not demand such quality, unlike software engineering.
If you are not adaptive and still choose to stay as a software engineer, you are doomed to face a career crisis but unfortunately much earlier than anticipated.
By design, software engineering is ever-changing. It is a sophisticated line of career since its creation, demanding a dedicated mind to solve programming puzzles.
Despite our pride in being an engineer, software engineering has only 70-80 years of history since the first digital computer appeared in the early 1940s. Personally, my narrow definition of modern software (that I ever touched first as a child) has only 25 years of history since the
Microsoft Windows 95.
Regardless of perspectives, none of the software created in the 40's or 90's matters anymore today. Software development boosts throughout human history and we, software engineers, are on the edge of being the history.
10 years ago in 2009,
AngularJS was just appearing alone with
React was not even a thing. Now
React has already taken over the world, while the sexy
graphql is trending over
Take a breath if you are a backend software engineer who loves working in the comfort backyard supporting Java/Tomcat web apps: the last 10 years must be a roller coaster for you.
Take another breath if you are a new grad. The familiar tech stack that led you into computer science may no longer be trending in the industry. Surprise!? Welcome to the golden era of software engineering.
The career crisis will happen much earlier than your age agrees, if you: 1) stay as a software engineer, 2) stop learning new tricks.
My grandmother worked for many years as a mechanical engineer at a car factory until she retired. Fortunately, she didn't face drastic technology turbulence in her career. My parents has been in construction engineering business through their career. Their tools have been getting better, fortunately, they didn't need to adapt to drastic product change neither. Oddly, despite how much more prepared academically, I am the first generation in the family to experience a career full of changes.
My generation of (software) engineers are facing extraordinary challenges: when we stop changing, unlike our predecessors we will fail miserably.
It will take 6-12 months to be completely left-behind by front-end tech stack, and perhaps 12-24 months to be out of sync with what modern backend tech stack offers.
It is trivial but time-consuming to do. It does not matter how hard we try, our current skills inevitably are becoming irrelevant.
How to keep up? Beat the cycle as much as possible:
- frontend engineer: perhaps try to set up personal retrospective sessions to go over front-end technology on monthly basis. Check out what's new out there and do a POC once a while.
- backend engineer: in my opinion, the changes in backend technology is relatively less, but when it happens it's usually evolutionary. Think out of the box for once: look into
Nodeif you are
Javaonly before; look into
serverlessif you are
With regular retrospectives, I sometimes find myself appreciating new stuff much easier than if I were forced to learn new tricks for a job.
There is always a PlanB.
A dramatic twist in the career may not be all that bad. You can switch to non-tech roles: people manager, product manager or some role completely different. Hopefully, you will finally realize how much you love the new role over software engineering :)
I have not switched roles before so I can't comment on how great any direction might be. One thing that I believe: do it if you genuinely like it, but don't do it because you are just running away from other problems. (same applies to a new relationship)
If you can, experience a career crisis early on, hopefully, a small piece at a time so that you can calibrate your life around it.
Don't wait till 2020 to find out you and
Window 95 are both histories.