During the second round of the Detroit Labs apprenticeship, one of the apprentices turned to me for help and support. I’m not sure why, because I’m pretty sure I wasn’t helpful. She’d say that she felt overwhelmed and I’d tell her that, yeah, the program was overwhelming; she’d say she was worried that it was too hard, and I’d confirm that yes, the program was _really, really _hard; she’d say she felt like she didn’t know anything and I’d remind her that, actually, she didn’t know anything, the apprenticeship was for people who didn’t know anything. And that’s OK.
There’s been a lot written about Impostor Syndrome and how to be confident despite insecurity. There’s less written about how to be confident when you aren’t an impostor, just dumb. Or new. Or inexperienced. Or learning.
On being a Junior Developer
If you get hired as a junior developer…be a junior developer. Don’t try and convince anyone that you are anything but what you are. Nobody hires a junior dev to make architecture decisions or to be the “ninja rockstar savior dream weaver”. They hire junior devs for their potential, so it’s the junior dev’s job to show that potential.
Best way to do that? Ask for help. Know what you don’t know, and don’t waste time trying to hide that you don’t know it. To even get as far as an actual job, you’ve probably already figured out how to Google an error message or find your way around Stack Overflow. What do you do after you’ve done that and it hasn’t helped? Can you move from the codebase specific error message or problem to a more general concept? I’ve found it helpful to check Ray Wenderlich tutorials and dig around in Little Bites of Cocoa archives. Those are iOS-specific examples, but every language has a host of learning resources online that you should be familiar with.
Take a look around you, too. If you work with other developers, chances are they are a wealth of knowledge. Use good judgement: make sure you’ve learned more about the problem you are stuck on and find people who are both willing to help (not everyone is great at teaching or mentoring, and that’s fine) and able to help (no one has infinite time and energy).
What’s pairing? How do?
How do you pair? Do you sit there quietly while a more experienced developer “drives”? All the pairing advice ever written says that the less-experienced person should have control of the keyboard, but anyone who has ever actually been on a project understands that this doesn’t always happen. Sometimes it’s for reasons of ego and sometimes it’s a need for a certain speed and efficiency. If wrestling the keyboard away from your pair isn’t an option, be an active backseat driver. Are they taking an approach you don’t expect? Ask why. Don’t understand the syntax or the abstraction or the design pattern? Ask them to explain. Did the last person you paired with on a similar task go about it differently? Ask about the difference.
Questioning everything
The fear of asking questions, or of asking “too many” questions, is that you will somehow reveal your ignorance. The beautiful and liberating thing about being a junior developer is that people already know you are ignorant. That is literally the point of hiring a junior dev: to have someone around who knows a little but not a lot, and to profit from their learning. Take a hard look at your job title–and your paycheck!–and remind yourself that those things would be very different if the powers that be expected you to be a senior superior architect lead.
Of course, none of this works if you keep asking the same questions over and over again. Learning software development is drinking from the firehose. Find a note-taking system that works for you and commit to it. I have spent a lifetime filling up little random notebooks, but I’ve found that makes finding the great advice I’ve recorded in them incredibly difficult to find later, so I switched over to Evernote and forced myself to use it extensively.
Here’s where the “embrace ignorance” approach really starts to pay off. As you ask every question, you get every answer. If you are honest with yourself and everyone about what you don’t know, you will have to be honest with yourself about what you do know, too. You’ll find yourself asking fewer questions, or, more accurately, different kinds of questions. More pointed and thoughtful questions. Instead of facing things you’ve never seen or don’t understand and saying, “I have no idea what is happening, explain it to me,” you’ll be seeing things you kind of recognize and saying, “This looks vaguely familiar, how does it relate to this other thing I sort of understand?” That might not sound like a big step, but when it happens, trust me, it feels huge.