I bet everyone has had thoughts similar to the following go through their minds at one point or the other in their careers:
side A: No, you don’t know it, in fact you don’t know anything…
side B: hmm, I think you are just beating yourself too hard, it’s a new area and you are ramping up fast actually.
side A: Why wasn’t I included in the meeting? Must be because you know nothing! See I was right!!
side B: Well, maybe your input was not needed because you are busy with task xyz
side A: I don’t know… I don’t know… I think I look like a complete newbie. Did I just say something stupid?
side B: Even the smartest people make mistakes and remember they all started somewhere…
The Impostor vs Dunning-Kruger chart
Some chart I saw drawn on one of the whiteboards a long time ago.
The Dunning-Kruger effect argues that amateurs tend to over-estimate their skills while professionals under-estimate their capabilities. On the other hand, the impostor syndrome makes people think that their accomplishments were just by chance and had nothing to do with their efforts or preparation.
In the graph above, the ‘sweet’ spot would be at the top right – where the skills and confidence are at optimum levels.
Confidence, the missing link?
There are several articles about the impostor syndrome and I must say I finally got the chance to ‘really’ experience it.
My proposed expansion to new frontiers has pushed me out of my comfort zone and exposed me to a few humbling experiences. The confidence and familiarity from countless hours shipping code in the front end domain was missing. That familiar reassurance of knowing that you could always dive into the details and find a solution to whatever was thrown at you was somewhat missing.
The good news however are that good patterns and practices are the same regardless of the domain – another good reason to learn the basics really well. Applications can vary due to environment, framework and language implementations but the core concepts will remain similar. For example, dependency injection, MVC, design patterns, algorithms etc.
Why should I leave my comfort zone?
It sure feels comfortable sticking to what you know best – in fact, this might be recommended in some scenarios. But broadening your scope opens you up to new experiences and improves you all around as a software engineer.
I remember listening to an old career talk about always being the weakest on your team. The ‘director’ talked about finding the strongest team you can find and then joining them and growing through the ranks. Over time, you’ll acquire a lot of skills and eventually become a very strong developer.
In reality, starting again as a ‘newbie’ on a team of experts might be difficult so you need to be really confident; it is easy to become disillusioned and give up. Get some support from a loved one and put the long goal in mind. You’ll eventually grow and learn; moreover you’ll bring in new perspectives, provide insight into other domains and also improve existing practices.
Everyone has these fears and even the experts don’t know it all. The biggest prize, as one of my mentors said, is gaining the confidence that you can dive into a new field, pull through and deliver something of importance inshaaha Allaah.