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 name—impostor syndrome.
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—anybody can pick them up pretty quickly and they don’t represent any natural progression. But there’s another skill that developers tend to pick up the more experience they get, which I think is one of the key differences between a junior and a senior developer.
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.