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”. It can mean something as simple as, you were shopping around different departments, saw a command line for the first time in an intro level CS class, and decided you liked it enough to stick with it. It can mean you’ll pick up a programming language or two, and maybe by the time you get your major, you’ll have written your own shell, built your own interpreter, even designed a database system from ground up. But 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 make sure your partner had access to the code you’d written? 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. 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.

<– 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 googling until you do. It’s about googling how-to, examples, errors, until it all begins to make sense.

Everything else will follow.

Advertisements

88 thoughts on “How to become a programmer, or the art of Googling well

  1. I write as a hobby and I don’t earn from it. I am almost illiterate in programming and my interest was ignited when I read about info marketing which I could do because of my writing passion. But I learned I need web hosting and paying mechanisms like Paypal to be linked to it. You inspired me.

    Liked by 1 person

  2. The best thing about this is that this revelation, this change in attitude, doesn’t just apply to programming. I had a similar experience while I was still in high school. I drew a lot, just pencil sketches, but I never stopped. The art sites I was a member of were constant reminders that I just wasn’t as gifted as these animation gods were. Then I met my friend Bekkah who sold her drawings at conventions. I watched her process and asked her as many questions as I could (oh, so many questions.) Her best advice to me was to use google to find reference pictures and not be afraid to actually use references.

    Liked by 2 people

  3. Great post and totally true. I studied a double major in computer science and information technology (the whole system analysts side) I then went on to do my honours in CS – Yet I do not even work in this domain. I have to fully agree Google/or searching the net in the right area’s gives you what you need.

    It is not a weird different world, it just requires confidence and a desire to learn (granted to keep up you must constantly learn and learn quickly) but it is possible to learn with very limited knowledge.

    Keep inspiring and congrats on the Google Job… Hook me up 🙂

    Liked by 3 people

  4. I am serious newbie, i know absolutely nothing but i have all the interest i need to do what you did only that it will be from a lower level, i am on my way to googling all the info i need, thanx a billion

    Liked by 1 person

  5. So, in a way you’re still a researcher — now you research how to program! That’s rather fantastic. 8^) It’s so true that how you learn matters a lot more than what you already know.

    The one thing I’d add to this explicitly (although I think you alluded to it at a couple points) is: look not only for how to make code for a particular task work, but for how and why it works in general. Experiment to gain understanding of the principles involved, but don’t leave the results up to guesswork or the mere fact that some test cases are met; use logic to translate your business requirements (how the application should work) into your program design and standards. That said, being able to look up info and to use that basic level of logic for understanding are really the only two truly fundamental skills involved in programming; the rest, no matter how fancy or exotic is sounds, really is just what you build on them!

    Congratulations on being Freshly Pressed!

    Liked by 2 people

  6. You probably can understand the feel of a person who had been brought up in an rural village of far near the peninsula near the BOBengal but having the intimacy of programming. Later until school i haven’t had touched the computer because they are the richie rich thing and can be faulted easily(as big brothers told). In college i was graduated as an electrical engineer by luck with an non- luck of not choosing CS.
    But after so many messed up in life(really..!!) i came to a belief that my likes and concs are there for programming only. Done a far more time in Google and kept believing the fact that what is searching is somewhere hidden here or there and still its running through my ears “Lets find it.”

    Thanks for the Post.

    Liked by 1 person

  7. Hey friend , I’m new to programming just cz of some reason I’ve selected IT as my subject, and I am not experienced in those amateur skills as well (ie. Hacking a fb account , etc.).
    I was really doubtful if to start my higher studies in IT ..after I started which was about 4 months now I realized the depth of it , beauty of it! I was hopeless as to what I struggled to put in to my brain. I sensed like I had no real ability in programming.

    Yet after I read your nice words it gave me a good motivation, to start without fearing and doubting my ability.

    Thank you !
    Rgds
    Naveen

    Liked by 1 person

  8. Excellent post. You’ve hit the nail on the head.

    Learning how to program was quite intimidating for me too at first. It took me a few failed attempts but things eventually started to click and it opened up a whole new world of how I approach problem solving going forward.

    Liked by 1 person

  9. This makes me feel much better. It really does sound like my own struggle…even though I am only learning for the fun of it. Thank you. I will simply keep at it.

    Liked by 1 person

  10. Thanks for sharing! This is such an honest and refreshing perspective. It is so easy to assume you will never know as much as others an get super intimidated. (The place I’m currently still in!) Your post reminds me to keep seeking resources, both human and technological. It also reminds me to suspend my intimidation in favor of curiosity, honesty, and reflection!

    Liked by 1 person

  11. Wow this is really inspiring. I have taken a few programming classes, and Googling always taught me more than they did. I guess in this age, knowledge is more free than it ever has been.

    Liked by 1 person

  12. […] I think that Annie Murphy Paul has it wrong when she claims that few people can be autodidacts—she seems to be assuming that it is some sort of innate gift that one is born with (Carol Dweck’s hated “fixed mindset”). I am convinced that becoming an autodidact is something that most people are capable of. I recently read an account of one student who turned herself into an autodidact, and what prompted her to do it—How to become a programmer, or the art of Googling well | okepi: […]

    Liked by 2 people

  13. Hy,

    great reading. I am in the same situation now. No CS background and somehow developed nose for coding.
    Where did it stop ? I did not understand. You gave up completely ?

    Liked by 1 person

    • Hey! I’m not sure what your question means, exactly, but I gave up in the sense that I thought I wasn’t good enough to be a programmer. I started looking for jobs where programming was secondary, or not even required, but a plus.

      And apologies for the late reply.

      Liked by 1 person

  14. I began coding about a year ago with Java to make an android application without any degree or prior programming knowledge. Personally it was a really rough start but kept pushing with hopes it may work out at the end of the day. Since then I have become an expert Googler, moving to different languages, and began sharing some code on GitHub to give back to the community that has taught me everything. I enjoyed reading this article because I can relate in some aspects. I keep trying to challenge myself to hopefully one day earn a job with a respected programming company. Very happy for you @okepi. Cheers!

    Like

  15. Thank you so much for this. I didn’t have a computer until I was 19 and even then, all I ever did on it was word processing and games. I’m now 30 years old and in my freshman year of Computer Science. I’ve been despairing this whole semester because I think that I am shit and I know nothing. It’s hard to overcome the feelings of hopelessness, especially when it takes hours just to find one small information needed to write one small piece of code. I am close to giving up but reading this made me realize that I’m not alone in how I feel!

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s