How to become a programmer, or the art of Googling well

*Note: Please read all italicized technical words as if they were in a foreign language.

The fall semester of my senior year, I was having some serious self-confidence issues. I had slowly come to realize that I did not, in fact, want to become a researcher. Statistics pained me, and the seemingly endless and fruitless nature of research bored me. I was someone who was driven by results – tangible products with deadlines that, upon completion, had a binary state: success, or failure. Going into my senior year, this revelation was followed by another. All of my skills thus far had been cultivated for research. If I wasn’t going into research, I had… nothing.

At a liberal arts college, being a computer science major does not mean you are a “hacker”. A liberal arts CS major prepares you for a career in computer science research, which is completely different from, say, software engineering. It’s like comparing a physical therapist with an athlete. Sure, a therapist knows which muscles get strained, and how to better take care of your body. But you can’t ask them to substitute for a player in a professional game. As a computer science major in my school, sure, I’d studied the structure and interpretation of computer languages. But I’d never even heard of the words front-end developer or full-stack. What was Heroku? Never heard of Xcode. Wasn’t git just the thing you used to share code with your lab partner? Frameworks? Didn’t you just need HTML and Javascript? What the hell was an API?!

Job after job description required IOS or Android programming experience, or a portfolio of websites I’d designed. I had none of these, and to be frank, I didn’t even know where to start. I hadn’t grown up in a tech-savvy family – my dad still can’t text. My mom still waits for me to come home during breaks to transfer new music to her MP3 player (which I bought her). I could pick at a couple tutorials, but how could I ever bridge the gap between me and them? The ones who went to technical high school, or whose parents were both software developers? The ones who had their own servers running, or whatever? Who had hacked into their middle school computer system in 7th grade? How could I ever compete with the technically privileged?

I settled for jobs that weren’t even computer science related. Knowledge of bash recommended, but not required. Even worse, I gave up. My experience with python scripting will give me an edge over other IT Help Desk candidates, I firmly told myself. I have experience helping old people with their computers. I should at least be able to land a job. That’s something.

<– SPOILER: I have an offer from Google. –>

Mid-September my senior year, that all began to change. I somehow became a friend of one of them, and it was all I needed to learn.

I initially put this friend on a kind of pedestal. The first time I met him, he was in the middle of writing a script to scrape Craigslist of all its free furniture listings (which is illegal, btw). At the time, I didn’t even know what scraping was. Then came the hackathon. I’d always wanted to go, but I’d never had the kind of friends who’d attend, and I couldn’t go on my own. I knew nothing. Who would want to bring someone as useless as me? But I shyly asked this friend if I could tag along – just to watch, mind — understand that I will be completely useless to you – and he laughed, said he understood, and we went.

He was the very picture of the competent hacker I held in my head, that I nursed a secret crush for. But most extraordinary, he threw something together using tools that he’d never used before. Yes, he did spend more time on Google than he did coding — but through sheer force of googling and a prior, general picture knowledge of how these things worked, he’d roped together a pretty sophisticated app. He knew where Twilio belonged in the grand hierarchy of things, and so, even without knowledge prior, was able to figure things out.

And I despaired. How do you get so good that you can build something out of nothing?

The rest of the semester passed glumly, and without incident. Come winter, I began to panic again. Driven by the need to become employable, I tried my hand at a couple Code Academy website tutorials. Hm. Not bad. I made an attempt at my first website – pretty terrible — just one, static page full of boxes and awful colors — but it was something. Something I realized. Just like my code-god compatriot, when I didn’t understand something, all I needed to do… was google it.

“How to center a div in CSS.” “How to make tiled background image in HTML.” “How to link to a pdf.” Sometimes it took hours for me to figure out the simplest things, but I’d come to understand that the answer was out there, somewhere. So I kept at it. Soon I was confident enough to try my hand at a small project – scraping our school’s Grades at a Glance website to create an automatic GPA calculator (our school didn’t have one of those). Eureka, it worked! And that wasn’t so bad, was it? Just like that, the first crack began to form on the illusion I’d cast on them as being a superior kind.

<– Some Small Advice: if you’re just beginning to program, I’d suggest starting with JavaScript/HTML/CSS because there is a plethora of help out there. You will most likely find someone has done exactly what you want to do. And do a couple tutorials! Even if they seem ineffective, at the very least they help you learn the terminology you’ll need to be able to google effectively. –>

Boosted by this small success, I gathered a group of like-minded classmates – friends who also did not have software engineering experience – to attend a second hackathon. Here, I had a second revelation. I knew more than my friends. Suddenly, I was an expert. I could speak the language. I knew what had to be done, and where things needed to go. After just two weeks of going through random tutorials, people were already beginning to see me as more competent than them. Sure, I was nowhere near the competency of my coder-god friend, but I slowly began to realize that the gap between me and him might be as artificial as the gap between my friends and me.

That’s all it takes. Really.

I took on a summer internship with a custom software engineering company. I was surer in my programming abilities than I was before, but I needed to be completely certain I had what it took to make a career out of it. There, I picked up IOS programming, Ruby on Rails, and Angular; I can make bluetooth devices do all kinds of gymnastics on a mobile phone. I’ve exchanged blows with git, shared intimate conversations with Cordova, chatted with Heroku, and I’ve even dipped a foot in the Android programming world. But most importantly, I know that experience, though important, is not everything. The gap is not insurmountable because I have what it takes to learn.

To be honest, I probably could have passed the Google interviews without any of this software knowledge. A solid background in CS is what they look for, and my school gave me that. But I never would have dreamed of applying to Google. I obviously didn’t have what it takes.

It took meeting a god and dethroning him for me to realize that I was wrong.

The barriers to becoming a software engineer are real. People born in technical families, or who were introduced to programming at an early age have this easy confidence that lets them tackle new things, to keep learning — and, in our eyes, they just keep getting further and further ahead. Last year, I saw this gap and gave up. But all we really need is the opportunity to see that it’s not hopeless. It’s not about what we already know, it’s about how we learn. It’s about the tenacity of sitting in front of a computer and googling until you find the right answer. It’s about staring at every line of code until you understand what’s going on, or searching until you do. It’s about googling how-to, examples, errors, until it all begins to make sense.

Everything else will follow.

Why I’m going to fail my background check and have my offer from Google rescinded

I usually keep good track of my paperwork, but one slipped through my fingers – a W-2 form, from a summer researching at the National Institutes of Health (NIH). I needed it to prove that I had worked there for my background check with Google. I was pretty sure my dad had it, but when I called him for a copy, he said he couldn’t find it. Instead, he suggested that I just request a duplicate copy from the NIH. Easy.
 
In order to get a duplicate copy of my W-2 form the NIH, I went through the following steps:
 
  1.  After extensive online searching (wherein I learned I needed an NIH account), put in a ticket at HR asking how I could acquire a duplicate W-2 form.
  2. Was told to fill out a Request for a Duplicate W-2 and mail it to them. I did.
  3. Was called and told that I could not be found in the database, so I had to call OHR(?) at some number.
  4. That number told me they did not handle W-2 forms, and referred me to someone (Molly*) at a given number (*fake name).
  5. That number took me to an automated voice mailbox system, or something like that, that required me to login, or provide the extension of the person I wanted to reach.
  6. I called #4 back, and they could not find the extension.
  7. I put in another ticket (step 1).
  8. I was given Molly’s number.
  9. I called the number, but was told that she no longer worked in that office… But wait! They knew she was tele-working today. They gave me a number.
  10. Called number. See step 5.
  11. Called back number at step 9.
  12. Another person picked up, and gave me Molly’s direct number after I explained my situation.
  13. Got to Molly’s voicemail. Left a message. A week passes.

Still no W-2 form.

 
###########################################################
 
I gave my dad one, last desperate call. Are you sure you can’t find it? No, I’m sorry. It hasn’t turned up.
 
Five minutes later, he calls me back, sheepish. “I didn’t see it the first time… but it’s where I left it, with the other paperwork.”
 
Dad!!