Git Gud: Specialization is (Sometimes) Overrated

Specialization gets a good rap. For doctors, it’s the key to making the really big bucks. Who gets paid more, your GP, or a cardiologist? Heck, advances in agriculture that allowed early humans to specialize are why we have a society at all.

In the software engineering world, specialization is everywhere. “I’m a Java developer.” “Oh, I’m a front-end engineer.” It’s so common that new grads are often encouraged to specialize, and you’ll even see some programs offering something more specific than general computer science / software engineering — especially bootcamps.

I submit to you, dear reader, that this does vastly more harm than good. Technical generalists are underrated. “Jack of all trades, master of none”, as they say. (That business about the ‘original’ ending in “but oftentimes better than a master of one” is bunk. Think I’m wrong? Find an example of it before 2005 and email it to me.) The problem with a lot of generalists is that many of them are not-so-good at a lot of things, in addition to not being super-good at one thing, and it gives the rest of us a bad name.

Just Be Good at Everything

I believe in being a generalist so strongly that I live by a mantra: “Just Be Good at Everything”.

Of course, this is impossible. To err is human, and I am but a man. But the pursuit of it leads to great things. You’ll never catch me saying “I can’t do X, I’m not an X engineer”. If it needs doing, I just do what I need to do to figure it out. In 2024, there’s really no excuse; there are functionally limitless resources online to learn how to do anything you want to do, and the barrier to entry for testing out things has never been lower.

Want to learn how to do frontend development in React? Great, come up with an idea for a project (like the eternally cliché Todo App), read some tutorials and documentation, and just try to do it. You’ll either figure it out, or realize you don’t want/need to do it after all.

Gitting Gud is a lifestyle choice, and a mindset shift. I’m not some savant who’s magically good at everything (I’m not even good at most things!), I just refuse to see any problem as unsolvable, or accept that other people can figure out things that I can’t, given enough time and effort. (And I think this is true of most people!)

Now you might be saying: “But Austin! The industry needs experts to specialize in certain technologies and domains! What if we didn’t have any ML developers, or any penetration testers, and everyone was just a generalist?”

That’s not what I’m advocating. My point is that specialization is fine and good and important (see my comments above about the onset of human civilization, a Good Thing), but just because you’re good at one thing doesn’t mean you can’t also be good at lots of other things.

Imagine if most software engineers were also pretty good at penetration testing? I bet this whole “cybersecurity epidemic” people are always talking about wouldn’t be quite as bad. After all, hacking and engineering are both just trying to make the computer do what you want it to do, it’s just a difference of having permission.

This is one of those opinions I have that’s hard to take action against, at first glance. But I bet if you’re looking for it, you can find plenty of moments in everyday life where deciding to try to be good at everything is net-useful. If we were all just 10% better at everything, maybe we’d have flying cars by now or something.

If you have thoughts, or you think I’m wrong and just have to tell me, email me!