Culture / Development

Code n00b: Learning Everything. Knowing Nothing.

17 Nov 2017 12:00pm, by

So I’ve been working up my resume to go after a very promising job opportunity: JavaScript developer at a company whose name you’d recognize. Even more promising is the fact that I have an “in” — a senior engineer actively supporting and even promoting my candidacy to the Powers That Be. I’ve got a roster of small projects to show, glowing references, and have been practicing whiteboard code challenges said to be popular among interviewers. It’s a pretty good package, with only one important piece still missing: me.

Or, to be more precise, my missing sense of confidence in myself as a coder. I can look at the lists of my so-called achievements all day long and still not feel like I deserve to be knocking on that interview room door. I, better than anyone else in the world, know my shortcomings as a JavaScript programmer, and they are myriad.

It does not matter that my sponsor assures me that they aren’t looking for someone who can do everything perfectly. What they want is someone with ability who can learn on the job. And I hear that, and say to myself, “I am the person who, last week, when there was a browser glitch and console.log wasn’t showing up in console, simply assumed somehow this was my fault. Why would they ever hire ME?”

Um, yeah, with an attitude like that, why would they?

I am my own fatal error.

My best friend Heather has been cheering me on, as best friends do — telling me that I am ready, that I know more than I think, that what’s important is not knowing everything but knowing how to find things out. She helpfully sent me an encouraging photo of a lone figure cresting a mountaintop below the inspirational words, “Confidence comes not from always being right, but from not fearing to be wrong.”

Peter McIntyre is the guy who came up with that much-meme’d quote, and I will bet you my afternoon Starbucks budget that dude is not a coder. Let’s throw some Googles on that, shall we?  Yup. “New Zealand Artist and Author.”

I think it’s probably easier to feel confident in your work when you are laboring in a creative field. After all, there are no wrong answers in art, you know? Technology, however, is a lot less forgiving. No less creative — actually, one of the things I love about coding is how creative it actually is, how there are many different routes to achieving a given technical goal — but more, how to say it… strict, maybe.

There are definite “wrongs.” And tech culture, a field after all generated by very, very smart people, puts a lot of pressure on not looking stupid. Which makes it a harsh realm for being wrong; making mistakes, at least public ones, feels less like a learning opportunity and more like a thing to be avoided at any cost, unless you’re really into being ridiculed. All of these factors make coder confidence an elusive, fleeting thing.

I know a lot of programmers — a lot — who struggle in exactly this way, feeling like a secret fraud even as on the exterior they seem to really have it together. It’s not a thing we talk about, but it’s waaay more common than you’d think.

At the same time, though, I also see programmers who seem to lack the faintest whiff of apprehension, who clearly believe deeply in their own abilities. Who stride confidently into a new language or framework or technology not paralyzed by terror at looking stupid for not knowing it — but with full belief in their ability to pwn it. I see that and feel instant envy: how do I get to be that person???

Stepping back to ponder it once again, I realize that my own wobbly self-confidence very likely tracks back to a faulty assumption I made as a newbie programmer: the key to conquering the confidence gap is simply, learn more. All The Things. And it’s taken this long, to the point of finally getting callbacks from recruiters, that I’m finally starting to understand how insidious of a trap the You Must Learn Everything approach is.

I’m pretty sure the assumptions underlying the Learn Everything approach are why I’m afraid to walk into this interview. There are actually areas of web development I know pretty well at this point, areas where I can reliably and sort of even confidently display confidence. But these islands are surrounded by vast seas of All The Things I Do Not Know, which are endless. And all I see — all any of us sees, at such times — are the bazillion things we don’t know. At which time I, we, make a leap of false logic to, well, if we don’t know all that stuff, then what we do know must be comparatively tiny and therefore nearly worthless. Which — by fun extension of this faulty logic! — makes us, the meat machines bearing this pathetically tiny cargo of knowledge, worthless as well.

It’s a totally ridiculous mindset, once you finally step outside it. And when you do, it’s not all that hard to talk yourself into a better place (or get your best friend, or your mom, or anyone else who knows what a smart and capable person you are, to give you the pep talk. Come on, you’d do it for them). The problem is, it can be so very hard to recognize it in the first place.

One of the things you figure out along the way to becoming an experienced and confident programmer is how to ignore everything you don’t need to know at any given moment. This requires experience, because when you’re a code n00b you lack the overall context to understand what is essential for the work at hand and what is simply a distraction. And so, without the perspective necessary for identifying the essential, you end up frantically trying to learn everything. Again: ridiculous.

No developer, no engineer, no matter how leet, can learn “everything.” Technology is too big, too wide, and waaaayyyy too fast-moving for it to even be possible. Given the very nature of our profession, the best we can strive for is learning what we need, when we need to know it. Having confidence in our ability to just, you know, figure things out. Which, when you think about it, is the essence of programming: solving problems. Figuring things out.

The person pushing me forward for this dev job opportunity is well aware I don’t know everything — after all, he has seen my code. He also clearly believes I am ready nonetheless. He’s got confidence in my ability to figure things out, even I don’t always have it myself.

So I suppose it’s time to take what I do know, ignore what I don’t, and step up to the whiteboard to take whatever comes.

Feature photo by Breather on Unsplash.

A newsletter digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.