I would rather be a generalist–someone who knows a little about a broad variety of topics–rather than a specialist.
Why? A jack-of-all-trades has more options than a guru. Even if a master of computer architecture is extremely smart and well-respected, they’ll face problems when no hardware companies are hiring architects. Meanwhile, the generalist might not be paid as highly as the specialist, but they have the flexibility of moving between roles and companies as they wish.
Though Renaissance men have more optionality than gurus, you can still dive deep into a topic. Everyone is a specialist to some degree! But if you’re contemplating whether to go deep or broad, consider the following three points:
First, you don’t need to be an expert to have a great career. Expert status is nice, but it’s not the only way to the top. The generalist is more antifragile than the specialist and can take advantage of a wider range of opportunities.
Second, it’s useful to learn about topics outside your field (especially outside the subset of the field you specialize in). No one knows what you’ll need to know in ten years, so the ability to learn quickly is a great help. In addition, knowing a small amount on an array of topics could help you see or take advantage of unexpected events.
Last, remember the Earth is huge. Software developers are only a small subset of the world. When we operate inside the realm of computer science, we sometimes forget that most people don’t spend the majority of their day thinking about technology.
What do you think: would you rather be a generalist or a specialist?