Having graduated recently, I want to take the opportunity to address a phenomenon that has struck many developers at one point in time or another: the imposter syndrome.
Imposter syndrome is the psychological behaviour that is characterised by a fear of being exposed as a fraud, and is widespread among the creatives, not just the coders.
Why does this happen
To ∞ and beyond
For one, I think we have the tendency to underestimate our abilities rather than overestimate them, especially for a junior developer. Given the broad field of computing, together with endless technologies, tools, frameworks, a person with the “gotta learn em all” mindset in order to feel successful or competent will inevitably find himself burned out before seeing through the end of the tunnel.
In an industry that moves at breakneck speed, the constant pursuit of catching up with the latest trends has dampened our willpower to focus on what’s important.
Eyes on the prize
Keep hustling, all is good, except only focusing on the outcome instead of enjoying the process.
Chicken and egg?
If CS undergrads focus on the learning process rather than getting good grades, the knowledge and understanding will stick. If exams are good indicators of learning progress, then those that took extra time to appreciate and internalise the materials have done it right while the rest have it wrong.
Of course, having a healthy balance of both is the best way ahead.
Which camp do you belong to?
Generally the Computer Science(CS) community can be divide into 2 camps:
- The true CS evangelist(sometimes called elitists), advocating stellar competency in CS fundamentals such as networking, data structures and algorithms, discrete mathematics, etc.
- The code implementor(sometimes called shiny tools chaser), advocating learning technologies and frameworks to solve business problems, without getting caught up in coding challenges.
After reading some CS related threads on quora and reddit, a few of the most common problems CS undergraduates and fresh graduates faced are:
- How to retain knowledge of data structures and algorithm
- Motivation(Why) and approach(How) to study data structures and algorithm
Answers to these questions depend on the advisors and can also be grouped into a few categories.
- Just practice more, always be coding, do and redo more programming practices via hackerrank, code chef, codewars, etc.
- Don’t memorise, internalise the knowledge by applying and practicing. “If you have really learned the material well, you wouldn’t be asking this question.”
- Try to relate learnings with real world examples
With that, the learners are directed in a loop where almost nothing makes sense until everything clicked one day.
At the start of my CS education, I could still remember the excitement I had when I was about to begin my education in an industry that shapes the future.
Thinking back, I couldn’t exactly recall the reason why and how I lost the steam, but it was a combination of unrealistic self-expectations and competitiveness, optimising grades instead of learning, unable to relate lecture materials to the real world.
The breaking point, almost
Despite numerous setbacks from attempts to get a decent handle at CS fundamentals, to be good enough to clear technical interview, and gotten into the cycle of bursts of motivation and despair, I have still not given up yet.
Though honestly I felt that I would be a happier person if I had just moved on, stay as an average joe developer that solves business problems with shiny tools, and forget about being a 10x/rockstar developer.
However, a good contributing factor that led me hanging on was the fact that through some pure grinding, numerous revisiting of coding problems, I managed to have a little breakthrough in my knowledge that was absent during my 4 years as a CS undergraduate.
I am finally able to write recursive solutions to moderately challenging questions(skiing challenge), even though the code wasn’t optimised – almost twice as long as others
Indeed, things only become clear when looking back. Giving up doesn’t make sense when I spent 4 years learning about learning, without the stresses of timed tests.
Don’t hate the player, hate the game
The software engineer hiring ecosystem is set up such that a whole industry is created for technical interview coachings, which people have come to accept as the rite of passage of a truly competent software engineer.
It is akin to a meritocratic society from which the educated and talented are rewarded.
However, it should be acknowledged that such a system has worked well for a long time and proven to stay competitive, despite side effects such as social stratifications, increasing strain on people further down the ladder.
Self-diagonose and moderate
We are constantly bombarded with information practically round the clock, therefore learning to tune out noise is an important skill for our overall well-being.
Emotional and mental care
It is good to ask for advice and help, especially from seniors, close friends and mentors, but don’t just go about hunting advice anywhere and everywhere.
The pattern of searching for help and advice excessively is not very far from the depression brought by social media. The negative aspects such as inadequacy and anxiety are likely to be the end product rather than the intended motivation, inspiration.
Don’t let the frustration, fear and doubt be part of us when facing setbacks, be it unable to solve coding problems, making the mark for technical interviews, etc.
When it comes, feel it, and let it pass.
Do something meanningful
Find something that you enjoy doing that doesn’t have an impact on your career and life. It could be something like:
- Setting up a personal website and design it to your liking
- A project that you build out of genuine interest, not just for the sake of putting it on the resume.
- Pick up a new hobby
Back to basics
Also, getting our lives in order is definitely beneficial. The simple things that we tend to overlook:
- Eat well. Not eat just about anything, but eat moderately, have a healthy relationship with food.
- Rest well. Not just about getting 8 hours of sleep everyday, but have a wind down procedure/ritual before bed.
- Mind well. Adopt a mindfulness practice. It could yoga, meditation, qigong, or any practice that cultivates spritual strength.
- Socialise. Keep in touch with close friends, even more so after graduation. Look out for oportunities to connect with like-minded individuals.
- Move. Be aware of posture throughout the day. Pick up a physical activity, which could be running, strength training, or sports.
- Gratitude. Be grateful for what we have, than what we don’t.
PS: Just some confirmation bias in action
Software engineering in 2018 = plumbing?