*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.
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. I doubt my brothers have ever torrented something. 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 and working app. He knew where Twilio belonged in the grand hierarchy of things, knew exactly where to apply it, 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 the simplest things out, 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.
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 googling until you do. It’s about googling how-to, examples, errors, until it all begins to make sense.
Everything else will follow.