loading...

When Will I Suffer Career Crisis as a Software Engineer?

tuwang profile image TuWang Updated on ・4 min read

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

Posted on by:

tuwang profile

TuWang

@tuwang

work is spaghetti and i am the meat ball

Discussion

pic
Editor guide
 

Great article! I definitely understand the fear of obsolescence and think its entirely valid. Some people definitely experience ageism in the industry. For many folks out there, I personally believe its more of a fear than a reality, though. I'm closing in on 40 and back in the day I built applications on the LAMP stack, ASP.Net 2.0, and old-school J2EE. More recently, I've worked with React, RxJs, Spring Boot, Docker, AWS, and all kinds of buzzwordy modern software ingredients. Tomorrow, I expect to work with entirely different technologies. If you build good habits, then you won't have to worry about your skills rotting.

I really feel that the key is to build good habits. Do code katas often. Practice Project Euler problems. Learn new languages. Build side projects on different pieces of technology to see what they're like. Put things in different clouds (I've tried out Heroku, Azure, and AWS). Target different devices (web, mobile, desktop). These are the muscles that you can exercise to stay fresh. Good luck!

 

Definitely! Thanks for expanding the solution. I grow up in a school system that you can be absolutely A+ on all subjects (and those subjects does not change). I almost took it for granted that, what I learned before is all that I needed.

With this mindset into my 1st job as a software engineer, I came to realize what’s missing among the co-workers (mechanical and electrical engineers, since things stay relatively stable for them). I had to run away from that environment and dive into somewhere people practice the ‘habits’ you mentioned.

I didn’t waste too much time (about a year or so, fresh out of collage), but I wish someone would have commented early on. Thanks!

 

A specific way that I've overcome this, is try to find situations where you can use a new technology side-by-side with one that I know. Jobs that trap you working on a single technology that you already know well without the chance to rotate, can make life difficult. If you can find a role that's 50% something you're used to and 50% new, that's the sweet spot. If you keep monkey-bar-ing into those situations it keeps you going.

I think there's also something in here to be said about identity. We often get fixated on labelling ourselves, but there comes a time that you have to re-invent yourself. And this typically comes with pushback. "What you're giving up on X?", or "Oh, I thought you'd do X forever". Sometimes the social pressure to stay the same keeps us from re-inventing ourselves and our skillsets often enough.

 

Good strategy :)

 

IT Industry is a dynamic sector and I feel that people with real passion and dedication are really able to do well in it.

BUT I am not discouraging anyone to join.

 

I think a lot people are dedicated into computer science nowadays because they have observed the success of others, but they may be missing the passion ;)

 

Here where I live. IT is a cashcow and there are many institutions which fool people to study more for getting a good college which just has high reputation and the teaching are old because they can't keep up. Thats why Software Engineers don't get jobs here.

 

Nicely put and I feel its much needed for the fresh/junior devs.