Contrary to what most people believe, what makes a good developer isn't the specific technical skills they've acquired.

I see many companies and developers obsess over minutiae, such as "Does this guy know every detail of this particular language?", or "How much do they know about academic computer science?"

In reality, most of these things barely make a difference. I've seen many developers who know these things, but they're still not very adept and I wouldn't hire them.

Specialising in a specific area and learning the rote skills is the easy part. This is something anyone can do, given time and effort. The hard part is mastering meta skills applicable to all areas of software engineering, such as:

  • Meticulous attention to detail
  • Obsession with quality and craftsmanship
  • Strong development of both convergent and divergent thinking (i.e creativity)
  • Ability to engage in deep work (something surprisingly few people do)
  • Ability to access peak flow states (again, something few people master)
  • Learning speed (there's an endless amount of new things to learn in software development)
  • Accurate assessment of pros and cons in decision making
  • Clear communication
  • Strong design sense (many front-end engineers don't have this, and it's a significant impediment)

There's many more things I could mention, but you get the point. These are skills which very few people master. Yet those who do are at the top of their game, and learning the specifics of any speciality becomes a piece of cake.

Most things can be learned quickly on the job as required, which is what I've frequently done. I don't waste my time mastering every nuance of the tools I'm using, I use the 80/20 rule to master the most important things. And if I need further specifics, I learn those as required.

This is an incredibly effective approach that's enabled me to become adept at programming within a pretty damn short period of time. This same principle can be applied in all disciplines. Once you master the meta skills that lead to mastery in any field, you can quickly become the top of your game, regardless of any existing domain knowledge you possess.

It's not that technical skills that don't matter. They obviously do, because without them you can't do your job. However, someone with strong meta skills and less experience with the required technical skills should usually be prioritised over a candidate with strong technical skills, but little-to-no meta skills.