Having worked with and mentored many junior developers, there has been one doubt I've heard more often than any other.
I've learned a lot, but I don't know if I'm ready to become a mid-level developer.
In two words: impostor syndrome. This is a prevalent psychological poison preventing progression in the programming profession. Now I'm no psychologist, but if you're struggling with similar thoughts, here are three tips that've worked well for me.
1. Learn smarter, not harder.
A common archetype of imposterism involves feeling like you don't know enough, or don't meet the technical requirements to take the next step of your development career.
There will always be something new to learn, this will be most apparent in the middle of trying to figure out the latest framework you think all senior devs should know. This realisation may reduce your learning into a Sisyphean task, leading to frustration and resentment.
Instead, maintain a strong repertoire of core skills you specialise in, and learn on an as-needed basis. Learning occurs continuously, how and what you learn will change over time to suit your needs. Since your skills and knowledge inevitably decay when not used, there's no point in learning everything if your responsibilities change or it turns out you won't need to use it much.
Pretty much nobody starts off as a perfect fit for their role, the majority grow into their positions. Likewise, you will have the opportunity to grow into your next position as a mid-level or senior dev -- you do not (and should not!) need to know everything.
2. Own your code.
Many devs take "ownership" of what they do and take pride in every line of code they write. While this is a great mindset to be in, criticism can be perceived as a blow to one's esteem and may cast doubt on whether they are ready to move to the next career stage.
Setbacks and failures are normal, and I'd argue are something to be welcomed, as they provide stepping stones to improving oneself. Learning to own your code in spite of your mistakes is an important part of self-reflection and professional development. Open one of your very first projects. Chances are you'll find it no longer meets your standards for "good code". Chances are in a few years you'll feel similarly about today's code. This is normal, natural, and occurs at every level of development.
The point I am trying to make here is that there will never be "perfect" code, as standards (both your own and others') change over time. As in the first tip, learning and self-improvement is a continuous process, so there is no point in taking criticism of your code as a personal attack. Take ownership of your code, criticism included, and don't use it as an excuse to prevent your career progression.
3. Learn from and teach others.
Every senior dev has been in the same mental position as you. Anxiety over self-worth is one of those universal experiences that everyone--regardless of age, gender, race, or skill-level--will encounter several times over their lifetimes.
Understanding and accepting the ubiquity of this phenomenon is a key step to understanding and accepting your own value as a developer. Sharing experiences with both your mentors and mentees will increase the breadth of your perspective -- simply knowing you are not alone is often enough to allay many fears you may have.
And even if it isn't, talking with a trusted senior colleague will allow you to consolidate and reflect upon your concerns, while receiving constructive feedback to help you on your development journey. Similarly, mentoring your juniors will affirm your skill and knowledge while possibly providing parallels between their own fears and your own.
Taking the next step.
Your value is only limited by how much of it your prescribe yourself. By recognising, embracing, and overcoming your self-doubts, you elevate yourself both professionally and personally. Ultimately, it's up to you to accept that you're ready and take the next step of your career.
Got any other tips? Share them below.
Top comments (0)