Two and half years later, I sometimes still feel as out of place in my computer science classes as I did on day one. It took me two years to add “Computer Science” as my major on Facebook because I feared that I hadn’t earned it. I still hesitate to label myself as a developer. Even when I started using the command line and GitHub, deploying mobile apps, conducting HCI research, and surviving bomb labs, I always felt perpetually “behind.”
It’s hard not to feel like you’re always lagging a few steps behind your peers in a field that’s still so new and really uneven. There are billion dollar startups being built by eighteen year olds in a dorm room, and there you are, trying to understand pointers at 2am. My friend Ashley told me that even when she didn’t completely understand things in her AP science and math classes, she never felt anything close to the impostor syndrome that’s so rampant in learning how to code. Because computer science isn’t taught as a mandatory class for elementary, middle, or high schoolers, there remains a huge elevation of “self-taught” programmers and there is huge variability in incoming skill level and experience for even freshman university classes.
Even though that feeling of inadequacy will never fully go away and that nagging sense that you’re not doing enough things fast enough will persist, I’ve found a few ways to keep those thoughts from becoming discouraging:
1. The difference between “not knowing” and “knowing enough”
Don’t mistake being a beginner for being an impostor. Everyone has to start somewhere. Don’t let that scare you. Ask questions, read, experiment, and tinker. But there’s no clear delineation between “not knowing” and “knowing enough.” It’s something that no one can definitively quantify because it varies from person to person. Maybe it’s building your first website from scratch, overcoming a fear like merge conflicts, or finally understanding what the hell Bootstrap is. For me, it was learning how to troubleshoot error messages more effectively and not being afraid to dive into documentation.
For a long time, it will feel like dabbling. Computer science is an incredibly vast field and it will seem like you can’t possibly conquer it all. So many languages and frameworks, so little time. But you will come to realize that coding is less about learning those specific technologies and frameworks and more about mastering the fundamentals of programming. It’s about learning how to learn. After a lot of dabbling and experimentation, you will find the work that you find fulfilling. It may take time, but you will eventually find you’ve made your own journey from “not knowing” to “knowing enough.”
2. What you think you know vs. what you think other people know
I’ve been “dabbling” in iOS development for about a year now, and I was recently talking with a friend, who’s much more proficient in Objective-C than me, about adaptive layout. He’s a great developer, yet he was maintaining 3–4 storyboards for one of his apps because he couldn’t figure out how constraints worked. Meanwhile, I was wrangling constraints but was only managing one storyboard file. Alicia Liu has some great diagrams about recalibrating this worldview of “what I know” and “what I think other people know.” It often feels like your puny brain contains just a subset of the overwhelming knowledge that’s in other people’s heads. In reality, it’s more of a Venn diagram.
3. Forget about the stack
Once I started doing more web design and development, I kept wishing I knew more about databases and devops, you know, the hardcore, legit stuff. Katie Siegel captured this “gender imbalance among the stack,” this idea of “frontend” being easier and more fashionable, and “backend” being more intellectually challenging. I think this feeling of shame, for liking something perceived as less “technical,” is dangerous. It perpetuates this sense of impostor syndrome throughout your entire career.
Don’t say “I could never do X.” Say “I tried X and it wasn’t for me,” or “I prefer Y,” or “X just didn’t interest me.” Don’t feel guilty for doing what you enjoy, but also make sure you continue to learn and challenge yourself in whatever you’re working on.
4. Reframe what coding means to you
Work on stuff you care about. I honestly could never bring myself to fanboy over Apple products or sit on Hacker News all day long. Instead, I sit on Twitter and Medium because I love media. There’s the promised land of Silicon Valley, but it doesn’t have to be your promised land. There are plenty of standing desks in the world — or cubicles — whichever you prefer.
When I approached learning how to code for the sake of knowing how to code, I hated it. I didn’t care about my programming assignments and I berated myself for taking too long to understand certain concepts. But when I reframed learning how to code as how to tell better stories using the web, or how to solve problems with mobile crowds, it renewed my energy and passion for technology — and what I could do with technology.
5. Surround yourself with peers and role models
One of the most important things that has helped me cope with impostor syndrome is belonging to a community of my peers and role models, both at the Knight Lab and Delta Lab, where I can both offer and solicit help. It’s helpful to talk openly with others about your frustrations and feelings (chances are other people will be feeling the same).
The best kinds of people are those who are both your peers and your role models. You can collaborate with each other, but also teach and learn new things. One of the main reasons I participated in my first hackathon was because I did it with one of my good friends (and we spent hours structuring JSON and crying over the Pocket API’s documentation). When you’re roughly on the same learning curve, or even just collaborating with people, you ride off of each other’s momentum, like a double bounce on a trampoline.
6. Be proud of yourself
Celebrate! Turn on your mental TimeHop and remember where you were a year ago, how much you’ve learned and grown since then. Embrace milestones. Bask in your glorious GitHub commit history. Write about your work. Share your successes (and failures). And above all, keep going.
Sources and Further Reading:
I kicked ass at Mario games, made my first website in seventh grade, and got a 5 on my computer science AP test. I…medium.com
An evaluation of why women are underrepresented in certain areas of computer science.medium.com
I’m also collecting articles related to gender, impostor syndrome, and technology here.