What do a junior and a senior developer have in common? They both constantly feel like they have absolutely no idea what they’re doing. What’s the difference between a junior and a senior developer? The senior developer knows that this is completely normal. One of the things about programming is that if you’re doing something you’ve done before, you’re usually doing it wrong. And by this I mean that if you’re trying to solve a problem you’ve solved before, you should just reuse the solution from last time.
We’re lucky in the world of software that we can do this, but one of
the consequences of this is that most software development is almost
by definition something that has never been done before, at least by
you. If you work in software, you’d better get used to this feeling.
It’s easy to look at all the people around you at work or in the
community and the great work that they do and think they must know
what they’re doing. “These people are real developers, I’m just an
impostor. One day they’ll all realise I am completely out of my depth
and I’ll be fired.” This feeling is so common that it has a
So is software development really just a case of the blind leading
the blind? Well, of course as you use particular tools and
technologies you get better at them, and when you have the chance to
mentor less experienced developers, you can actually teach them some
things. And this has the unfortunate effect of reinforcing the
feeling of impostor syndrome for them. But generally these skills
aren’t especially valuable—
The act of software development is a bit like navigating through a maze. No matter how many mazes you’ve solved before, when you’re solving a maze for the first time you literally don’t know where you’re going. Regardless of your skill or experience level, you will feel like you don’t know where you’re going. This is just the reality of life as a maze solver, or a software developer. With experience you start to develop some techniques for solving mazes more efficiently. You develop tricks which work in some cases, like working backwards from the finish. You learn how to sense when you’re about to hit a dead-end, or when you’re going in circles, and you’re able to backtrack and find a new path more quickly. You develop an intuition for when something feels harder than it should, which suggests to you there’s probably a better path.
But at the end of the day, you still spend a great deal of your time bumbling around. If you’re a developer who feels out of your depth, I’m here to tell you I’m right there with you, just trying to stay barely one step ahead so my cover isn’t blown.