Specialist vs Generalist ⚒️
Tags: career, motivation, beginners, developer
Published: 2023-06-04 11:35:06

This question comes up a lot when people are deciding which path to take in their careers.

**"Should I become a specialist or a generalist?"**

Throughout school, we seemed to be conditioned to take the specialist path. At each level of our education, we are asked to narrow the fields we study. 

I am not sure what this looks like in other areas of the world but in the UK, at least when I was younger, this consisted of picking 8 - 10 GCSEs which are then narrowed down to 3 - 4 A-Levels before finally picking 1 subject to study at University.

> You learn more and more about less and less until you know absolutely everything about nothing. - Nicholas Butler

This pattern tends to continue into our careers as well. You pick a programming language and stick with it, you learn a tech stack and use it everywhere.

This is why posts on "the best programming language to learn" are so popular because people think they need to become a master of just one language. They don't want to waste time learning the wrong thing. 

You need to be careful with this approach. There are benefits to becoming an expert in your field but it is also very easy for everything to look like a nail if you only have a hammer.

Becoming a specialist or a generalist is mostly down to personal preference and is possible to find success with both methods.

## Specialist
For the specialists, the path is already laid out for you. Just follow the same approach that served you well in your schooling years and you will be well on your way to becoming an expert.

At first, the approach for generalists and specialists is very similar. You need to try out lots of different things before you can decide what you want to focus your efforts on.

The hard part is working out what to become a specialist in. 

My advice is to focus on what gives you the most enjoyment while avoiding the latest fad. 

Last year quite a few people quit their web2 jobs to go work on web3. There was a lot of hype around web3 and as a result, a lot of money could be made. The dust however has settled and I suspect many have gone back to web2 roles.

I personally would like web3 to succeed, as I think companies have too much power over our data and money. However, any paradigm that aims to shift power from those with control is going to receive a lot of opposition.

Provided you specialise in an in-demand technology with a long shelf life, you can be very successful as a specialist. It can even be easier to get to the higher levels of software engineering this way, as you can prove that you can solve problems that no one else can.

The caveat is that all technology becomes obsolete at some point. Pick the wrong one and your future doesn't look so bright. 

## Generalist
If you love learning and become easily bored then the path of the generalist might be for you.

Just because you are not an expert at one particular thing doesn't mean that you can't be successful. It may be harder to get to the higher levels of software engineering such as a principal engineer but there are many more doors open to you as a generalist.

Most engineering managers, VPs of engineering and CTOs are generalists. At these levels, having the majority of your knowledge siloed in one topic isn't helpful. You need to have a general decent knowledge of the whole business and the technologies used.

If you dream of breaking away from the 9-5 then being a generalist is the best option. Entrepreneurs need to wear many hats and often it's the technical skills that are least important. On the technical side, being average at multiple skills such as frontend, backend and DevOps will be more beneficial for getting your product out the door than being an expert in just one of them.

## Expert-Generalist
Of course, there are always outliers. If you are exceptionally good at learning then you could become what they call an Expert-Generalist.

They say it takes 10,000 hours to become an expert at something. If you were doing something for 8 hours a day, 5 days a week that is about 5 years. Over a 40-year career, you could therefore become an expert in 8 different subjects. If you are faster at learning then you could achieve much more than this.

When I think of Expert-Generalists the obvious choice is Elon Musk. He has managed to become an expert in many different areas such as finance, electric vehicles, aerospace engineering, solar power and many more.

Even though we may not have the same brain power as Elon Musk it is possible to "have your cake and eat it too" and combine the benefits of both Specialists and Generalists.

For example, my main expertise is in backend development but I also have enough database and DevOps knowledge to almost reach expert levels in those as well. Outside of my technical skills, there are many other areas where I know considerably more than the average person and I am sure it is the same for you too.

It is this multidisciplinary approach that sets people like Elon Musk apart from others. By taking in knowledge from lots of different areas you can come up with unique insights that the specialists would struggle with.

## Working preferences
No matter which path you take it is possible to be successful in both areas. There are ways that you can stack the deck in your favour though.

If you consider yourself a generalist then you will likely find the most success working for startups with few employees. Your ability to wear many hats and get the job done is just what startups need. If you are lucky you may even receive a large payout for being one of the first hires should the company go public. 

The other option is to work for yourself either as a freelancer or as an indie developer. Your general knowledge across multiple areas is critical to get your product live and in front of customers.

Specialists on the other hand tend to thrive in larger companies where the roles are highly separated. There is space for you to become an expert in one particular skill and be able to command a high salary as a result.

## ❤️ Picks of the Week

**📝 Article** - [An educational side project](https://blog.pragmaticengineer.com/an-educational-side-project/). Watching and following tutorials will only get you so far when learning to code. The best way is to work on your own projects. However, just building your projects isn't going to help you get a job unless you are good at showcasing what you know. Juraj has done a fantastic job in this [Uber clone project](https://rides.jurajmajerik.com/map) outlining his thought processes throughout the build as well including monitoring and system diagrams.

**📝 Article** - [Notes apps are where ideas go to die. And that’s good.](https://www.reproof.app/blog/notes-apps-help-us-forget) This week's YouTube video was on Knowledge Management. Writing things down can help you remember what you learn but the real benefit comes from letting you forget them.

**📝 Article** - [Creator Flywheels – The Operating System for Your Business](https://nathanbarry.com/creator-flywheels/). For those of you interested in the creator economy this is a great article from the creator of ConvertKit covering how the creator flywheel works.

## 👨‍💻 Latest from me

**🎬 YouTube** - [Knowledge Management for Software Developers](https://www.youtube.com/watch?v=AMxrjL0UpeE). As developers, we constantly need to be learning to stay relevant. One of the best ways to remember what you are learning is to write it down. In this video, I cover the best note-taking tools for developers.

## 💬 Quote of the Week

> The people who have the ability to fail in public under their own names actually gain a lot of power.

From [The Almanack of Naval Ravikant](https://geni.us/S4qWWz) (affiliate link) by Eric Jorgenson. Resurfaced with [Readwise](https://readwise.io/i/alex3139).

---

## 📨 Are you looking to level up your skills in the tech industry?
My weekly newsletter is written for engineers like you, providing you with the tools you need to excel in your career. [Join here for free →](https://newsletter.alexhyett.com)