Prologue

Having made multiple career switches over the last ten years, — not just going from one employer to another, but rather moving to a completely different technology stack — I sometimes look back on my decisions and wander what my life would have looked like right now if I just stuck to a single job for all this time.

There is something really appealing in the idea of honing your craft and polishing a skill for tens of years until you become the very best, and in some areas — say, sports, this really is the only way to go for success. IT, though, as I’ve come to think recently, is not one of these areas, and in this post I’m going to give you some reasons why.

Employer perspective

What every employer wants of any professional is the ability to deliver predictable results in a timely manner. The difficult part of this is that the inputs are usually nothing close to predictable: today you might be working on an ML-based recommendation system, and the very next day you might find yourself debugging some video encoding issue with FFmpeg. In such conditions, chances are extremely low that whatever you are deeply specialized in is going to be the next thing you’ll need to be working on. So rather than looking for a specific skillset, it makes a lot more sense for the employer to hire someone that can adapt quickly and deal with whatever comes next.

First, having a separate specialization for every kind of task comes with big costs due to human resources not being interchangeable (and that looks even worse if you remember that people tend to take sick leaves, switch jobs, etc.) When it comes to cost effectiveness, resource pooling is always the way to go.

Second, for most jobs it is highly unlikely that any particular task will even require some in-depth understanding — the bitter truth is that code lifecycle is becoming increasingly short, and 80% of what you created today isn’t even going to exist next year. Imagine having to hire frontend and backend engineers, a QA, a DevOps, and a project manager, just to build a prototype.

Most businesses do not need perfect (or even good) solutions. What they need instead is fast results that can be quickly adapted to market changes, for cheap. In this kind of economy, most companies look for people willing to partake in different activities and try themselves in new areas.

Nota bene: that doesn’t mean that you shouldn’t try to do your task as well as possible. Please do not ship crappy unreadable code without tests. Just don’t get caught up in trying to reach perfection and be open to something new.

Employee perspective

The obvious reason is purely economical. A higher demand for cross-functional jobs creates both higher salaries (not so much short-term, but long-term — most certainly) and better job security. If you consider your job an investment (and you should, since you spend most of your time doing it), then switching between roles is a great way to diversify your assets and lower the risk of staying with nothing when your particular technology of expertise becomes obsolete.

The job security might not sound like a big deal, but do not underestimate its impact — sometimes it might affect your quality of life even more than your salary or even other benefits. It’s the so called “fuck you factor” that comes into play: if at any point of your life you are unable to say “fuck you” due to the fear of losing a job and being unable to feed your family, then it might become a huge source of stress: people might (and will) take advantage of you.

Nota bene: most people are still good, and there is usually no reason to throw “fuck you”-s all around. We’re just conducting a thought experiment, so please be nice.

The second big reason is the sheer enjoyment that comes with being able to do many things all by yourself. While not being able (not necessarily though) to do something requiring very specific knowledge, you will gain a very different kind of understanding: the way the pieces fit together. You will be able to look at your task from different angles and handle the aspects that you would miss otherwise. Say, an SRE with previous software engineer experience might fix a production issue all by themselves just by reading the code, or an ex-product-manager QA engineer might spot a weird feature before any user sees it.

And the synergy doesn’t stop there. The examples that I highlighted are limited to typical, purely IT jobs. But what you can do is to combine your IT expertise with some other field — say, Math, Biology, Physics, or even Philosophy and Art. By bringing technology into other, more “real-world” fields, you can sometimes yield some amazing and unexpected results.

Epilogue

Going cross-functional is a great way to improve your work in a lot of aspects. Don’t be afraid of new and unknown things and just have fun exploring. Success will surely follow.