Being a developer is not about how talented you are. Development is not some born-with skill, but rather a set of skills acquired through practice.
Like a tradesman - a plumber, carpenter, electrician or the like - the only way you learn to be or grow as a developer is through practice.
Code is craftsmanship and pragmatism. It’s about knowing when to say, “It ain’t a piano,”1 and walking away or when to bang your head against the wall of a tough problem.
It’s about knowing which questions to ask and where to find the answers.
That’s the core of being a good developer. It’s not algorithms, or whiteboards, or CS degrees or anything else.
A developer is not a collection of talent, but rather a vessel of learning. A developer’s “talent” is the ability to see patterns in their work and to constantly improve that work.
It’s not knowledge, because that will be gained along the way.
It’s curiosity, a willingness to learn and work ethic.
That’s what you want to hire - not necessarily the developer with the best code today, but the developer with the traits to write the best code (and come up with the best ideas) in the future.
I’m not sure where I picked up this idiom related to carpentry, but essentially, it’s about knowing which details to concentrate on and which to ignore. ↩