When Will I Suffer Career Crisis as a Software Engineer?
Tags: challenge, beginners, jokes, career
Published: 2019-10-10 06:32:36

(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?


# Problem

*(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**.

# History
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 `NodeJS`, when `React` was not even a thing. Now `React` has already taken over the world, while the sexy `graphql` is trending over `rest`. 

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.


# When and How?

**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.

# Action?

#### A. Being adaptive

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 `Node` if you are `Java` only before; look into `serverless` if you are `server` only previously.

With regular retrospectives, I sometimes find myself appreciating new stuff much easier than if I were forced to learn new tricks for a job.

#### B. Drop it

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)


# Last Two Cents

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.