A generalist or a specialist - which is better?

Do you wonder whether you should specialize as a programmer? Who has a better career? What will maximize your earning potential and make you a happy person?

Person Silhouette at Dawn
Photo by pixabay (Canva photos)

Do you wonder whether you should specialize as a programmer? Who has a better career? A person who can do everything in Apache Spark or a backend developer who can also do large-scale data processing?

First, should we specialize?

Is it good to be a specialist?

Intuitively, we know that being the best in the world at something is a good career move. Suppose you want to become the best, the decision to specialize moves you in the right direction. So, as a consequence, specialization is a good career move. Isn't it?

Yes, at least, to some extent. But, it isn't as important as you think.

Every field has its top people. The awe-inspiring ones you listen to at conferences. The ones who write books or set trends. Are they specialists? I don't think so, but we'll talk about it later.

In the world right now, someone is the best at using Apache Spark. What does he or she do? They probably work on one project at some company, and nobody knows they're the best. Sure, they know a lot and can solve all problems. However, only the people who have direct contact with them know about their existence.

People may not know who is the Apache Spark champions even if that person is active on Twitter or write blog posts. How come?

They may not be a good communicator. They have learned a lot but can't tell others how much they know. They can't teach anyone.

If you have a degree, you remember a professor who was an expert in their field, but their lectures were terrible. Every university has at least one such professor. ;) They knew a lot, and they could bore you to death with their knowledge.

This is the problem with specialization. You may be the best, but you struggle to interest people in what you want to say. As a consequence, only a handful of people know you.

We need something better. Is being a generalist better?

A person standing on a hill
Photo by Pablo Heimplatz on Unsplash

Is it good to be a generalist?

If specialization isn't a perfect career move, maybe we should become generalists.

That's an even worse idea! The IT world is full of easily replaceable jacks of all trades and masters of none. It's prevalent among frontend developers.

After all, full-stack usually means you do everything with JavaScript.

Is it bad? Unfortunately, yes. If you're a generalist, you're similar to many other people. You don't stand out at all.

Can we do better?

Should you be a T-shape?

To me, the T-shape looks like an idea invented by a personal development coach.

It is better than being a jack of all trades, but usually, the specialization part gets neglected. Often, generalists who are slightly better than the average in only one area call themselves T-shaped. What's wrong with that?

The vertical bar in the T should be long! To become a T-shape, you should specialize and know a bit about many other areas. It's easier to get to this state as a specialist than a generalist.

A stack of rocks, sea in the background
Photo by Jeremy Thomas on Unsplash

Skill stacking is the best career move

If everything is bad, what should you do?

I suggest you choose a specialization and later expand it by skill stacking. How should you do it?

First, you pick your niche. In my case, it was data engineering on AWS. I didn't start my career with it, though. First, I was a Java backend engineer.

My backend background covers the generalist software development skills I may need. Even if you specialize, you should still learn the general principles around the software. Writing maintainable code looks the same in every branch of software engineering. (With a possible exception of branches I have no clue about. For example, 3D game engines, embedded software, etc. ).

How much should you specialize? I think you have learned enough if people want to pay you for teaching those skills. You don't have to be a good teacher. That's a different skill.

After some time, you choose the next skill to learn.

Learning the second skill

What should you choose? I recommend you choose something unrelated to what you're already doing.

Don't pick another programming language or a new cloud platform. Learning such a thing expands your primary skills, not something new. For example, I don't consider MLOps a new area. It was a natural extension of data engineering.

I picked teaching as the second skill. I started with organizing meetups. Lately, I have been teaching programming workshops for money. My skill got to the level when people wanted to pay me for teaching. So, I had to choose yet another area.

This time I picked copywriting. Two months ago, I started getting paid for writing content for a blog of a startup building an ML platform. It's my side hustle now.

How did it happen? I built on top of the existing skills. I can write for an ML startup because of my data engineering experience and because I know how to explain complex stuff.

Two sports cars racing on a track
Photo by Jeremy Thomas on Unsplash

Benefits of skill stacking

Skill stacking won't make me the best data engineer or copywriter globally.

But I can explain MLOps to people who don't have much experience in this area. I can be a data engineer who can write compelling texts about MLOps.

In the beginning, I mentioned the top people in IT. I think they are skill stackers. They aren't the best engineers. Perhaps, they're better than 90% of programmers, but not the best. However, they stacked other skills like public speaking or content creation.

Why should you stack your skills? We already know it makes you unique. It also makes you less replaceable. Can a company get rid of you if they need to hire three other people to replace you? Skill stacking fail-proofs your career.

Also, skill stacking builds your confidence. You don't fear new things because you always have some transferable knowledge you can apply to the new area.

Your existing skills are a good starting point when you want to expand. I could do email marketing for dentists, but such a choice would put me at the very bottom of the pack. By writing blog content for an ML startup, I use my data engineering experience and five years of blogging.

I didn't switch careers, though!

I'm still a data engineer, and I think my engineering skills improved because of writing. It turns out writing an easy-to-read article is like writing clean code.

Additionally, I don't suffer when I have to write documentation. I like it now. Imagine that...

A macbook on a desk. It has a black wallpaper with the words: "just start."
Photo by Jeremy Thomas on Unsplash

How to begin skill stacking?

First of all, don't ask for permission!

Pick a new skill and spend two or three hours every week practicing it. Over time, it'll get easier, and you'll do more during those short learning sessions. Also, incorporate your new skill in your daily job. If you picked the graphic design, start preparing graphics. If you learn project management, help the manager on your team.

Your first three skills should work well together. Don't learn electronics skills if you work as a frontend developer. But precision soldering may be perfect for a programmer working on embedded systems.

What skill will you choose?