Ian Miller is an instructor in Flatiron School’s Web Development Immersive—and a former student. Having been through the program himself, he’s well-aware of the internal struggles that new students face when grappling with gaps in their skills and transitioning to entirely new careers. Here’s the advice Ian gives to students on believing in their individual abilities and staying positive through a difficult learning experience.
When I started programming over a year ago, I kept second guessing myself every step of the way. I believed couldn’t implement code correctly—that I was a burden on others, and the best strategy was to keep my banal questions to myself. Looking back, this was bad for my team and bad for myself. I wasted so much energy tricking myself into believing that I wasn’t good enough, and that I never would reach a state in which I was content with my abilities. I had no idea that I wasn’t alone.
Humans by nature are very critical, sometimes overbearing creatures, and we tend to come down hard on our own inabilities to overcome small obstacles, often attributing them to some inherent flaw in our mental make-up. This very human trait makes it even more difficult when it comes to learning something new. We fault ourselves for not being able to get it right away, and we give up either out of desperation or because we fear how much we don’t know. As a result, we’re mentally hard-wired to set ourselves up for failure.
As an Instructor for the Web Development Immersive at the Flatiron School, the responsibilities I typically have each day range from bug hotfixes to in-depth explanations of how the Rails framework handles controller logic. But another, less obvious part of my job is constantly helping others keep their expectations in check. From the start, we tell our students that it’s important to keep their skill level in perspective—that the path to becoming a better developer is a slow upward trajectory. We tell them, “you will never feel as dumb as you did today.”
So what exactly is impostor syndrome? It’s the feeling that “we are frauds and we do not deserve the success we have achieved. Proof of success is dismissed as luck, timing, or as a result of deceiving others into thinking that we are more intelligent and competent than we believe ourselves to be.” Even more simply put, it is an incongruous perspective—the act of people with actual ability underestimating their relative competence.
At some point in their career, a developer will experience impostor syndrome in some way, shape, or form. How they manage those feelings of insecurity depends on what strategies or techniques they decide to use.
It wasn’t until I started at my first programming job that I really started to feel inadequate. I spent a lot of time trying to justify why I wasn’t qualified, and less time on looking back on the progress I had made since I made the decision to change careers into programming. I essentially spent a lot of time trying to attribute my success in the first few months to sheer luck or the efforts of others.
Simply put, you will never completely eradicate the presence of impostor syndrome. But you can manage it effectively through positive reinforcement and open dialogue. At Flatiron School, we allot time every Friday for feedback and sharing. During one of these sessions, I brought up my feelings with my team. I was surprised to find that they were widely shared—even among senior developers.
Stay positive. It’s important to keep in perspective how far you’ve come in such a short amount of time. Play up your successes, and think about your failures, and how you can learn from them. It doesn’t matter how many times you fall—what ultimately defines you as a developer is that you continue to get back up, and recognize that there will always be moments of uncertainty and discomfort.
Talk about it. The realization that everyone felt the way I did was huge. With the help of others, I started using several techniques to keep my doubts about my abilities in check—like positive reinforcement from friends and co-workers, and journal entries. I started participating in weekly code talks called CodeNewbie that my friend, the amazingly talented and wonderful Saron Yitbarek, started and currently maintains. She spoke about her experience at RailsConf 2014 and in this post.
Be OK with not knowing everything. I’ve had to figure out how to be OK with (excited, even!) to not know everything—it’s an opportunity to learn new things and refine my current skills. If you’re a new developer, it’s fine to acknowledge the long path ahead of you. But know that you owe it to yourself to enjoy the process of learning along the way. Accept the fact that you will never know everything there is to know about programming, and that is fine. It should be about shared experiences and delayed gratification. Take pride in new skills, incremental returns, and be excited for the programmer you’ll become.
Learn with others and let them teach you. The best piece of advice I can give is that learning to become a programmer should not be an isolated, but rather a shared, experience. Through others, particularly a mentor, you can receive the validation and gentle pushes necessary to see you through more challenging obstacles. Go to Meetups. Reach out to a developer that you like or admire. Emulate their workflow through observation. Build a web application on the side with a friend. Great software developers are the sum of their aggregated experiences over time. I guarantee you that they’ve experience more failures than they have successes. You never know what may come of your efforts unless you try.
And most of all, believe in yourself. No one can predict the future. It is full of unknowns, and there are bound to be curve balls thrown here and there. It’s very easy to convince yourself that you are a tiny fragment of what you really are. Despite the dark storm clouds of negativity or belittlement that may gather in your mind, believe in yourself. Temper your lofty expectations. Adapt. Empower. Share. As Bruce Feiler says, “take a walk with a turtle. And behold the world in pause.”