Learning to Code

Kris Horowitz
[in beta]
Published in
6 min readMar 24, 2015

--

From Zero to Developer… Kind of

For the past 8 months I have been learning to code and, for the past three, working as a junior developer. As it turns out, coding is difficult. Who knew?

In college I studied linguistics and theater. I am neither familiar with nor have I ever shown a proclivity for math, programming or computers (computer games notwithstanding.) After passing enough monitors in the office — I work at NYC tech company Betaworks — that looked like they were from The Matrix, coupled with my lack of understanding during weekly company demos, I decided I wanted to know what the fuss was about. Or at least not not know.

So I signed up for my first front-end course. The bubbly optimism touted by these code schools (land your dream job, learn to code today!) is contagious and uplifting. I’ve always been a good student, I love to learn and I was in the particularly fortunate position to have Betaworks cover most of the tuition. Code school price tags are steep, coming in at over $3,000 for part time courses and $12,000 for a full-time course. We’re not wealthy developers yet, code schools! (Codecademy has started doing IRL classes for $750 — raised from $250 — and is probably the cheapest option out there.)

I have mixed feelings about the class I took, and misgivings about all similarly structured courses, though I am currently enrolled in another class at a different school. My developer friend Daniel is against the learn to code fast movement, not because coding shouldn’t be opened up to anyone (who can afford it), but because you are not a developer at the end of ten weeks and we should stop pretending that you will be. You are a person who knows slightly more about programming than you did ten weeks ago. Erik Trautman calls this the “hand-holding honeymoon” in his excellent post Why Learning to Code is So Damn Hard and he is right.

source: http://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard

Now that coding really is my day-to-day, the gaping oversights of the curriculum stand out strong. Not once in those ten weeks did we open command line and we only alluded to what GitHub was, not how to use it. These two things are now all I do, every day. The teacher only gave me feedback on my first assignment of ten. For as much as I was paying for this course, a smaller class size (we were around 20) where the teacher has time to sit with each student instead of scrambling around the room was missed. What irked me most of all was how easily the class got derailed. A student would ask a question about the merits of jQuery vs Javascript and a half an hour later we would be talking about John Resig’s twitter. Every class we had a schedule written on the white board and every class we disregarded it. This speaks more to the inexperience of the teacher than the structure of code schools, but, that said, most of the developers teaching at these schools have had no prior experience. Maybe in 5 years these courses will be streamlined and killer, but today they are rough around the edges. My current school is still beta-testing their course site. We are their fourth front end class ever.

With all that said, the indispensable part of taking a class was the number of code hours it required me to put in. Some people have enough self-discipline to do the necessary groundwork on their own but, for me, I needed hard deadlines and a week-by-week curriculum. With code, you’ll only learn by doing and taking a course made me do. That may sound like not a lot, but it counts mightily.

A few months after the close of the class, Betaworks offered me a position as a junior developer, where I had been working as a community manager. All parties knew I was majorly under-experienced but I had spunk! And a great attitude! And I like to learn, remember? What couldn’t I do??

How I envisioned things would go. Source: https://computer-engineer-barbie.herokuapp.com/

But no one’s telling you what to do or how to do anything once you’re outside of a classroom (duh!) and this is especially true with programming. Suddenly your hand-holding honeymoon is over and there’s no centralized standard to turn to; there’s no code code. Ask a developer about cross-browser compatibility and they may lay down, weeping at your feet. It’s really a cluster f**k of personal preferences (“CoffeScript is so dumb.” “CoffeeScript is the best!”) and up to you to decide what ~you~ like best. I wanted a fool-proof guideline I could follow, I wanted rules dammit! I yearned for a nicer user experience: a way to center all elements on a page without using multiple CSS selectors and error messages more readable than: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Alas, programming languages, as with most human languages, have style and flair, a general grammar but an eternity of exceptions.

I tried to maintain a blog with my friend Maya chronicling our progress but it was hard for me to keep up because I felt like I didn’t know enough to share something with anyone. What did I know? Why listen to me?

I was building hacky things that worked-ish but could never scale. And I knew this, but I had no sense of what was cumbersome code and what was alright. Code optimization seemed like a luxury reserved for the elite. How could I be concerned about server size and load times when my error pages weren’t working? For a small personal app, things can be swept under the rug here and there, but if it’s for my job, and it was, each tiny piece of a site matters a lot.

Sometimes it is hard for me to feel justified in getting paid for doing a job where I am still learning every day. Shouldn’t you always be learning on the job? (That’s you asking me a valid question.) Sure, (this is me answering) but I’m learning, learning. Being surrounded by skilled developers is an enormous blessing, and, though not quite a curse, it does remind me how very far I still have to go. At times I feel like a fly buzzing in everyone’s ear, constantly barraging co-workers with questions. But the alternative is worse: I don’t understand it, I ask no one, and so it doesn’t get done.

Now my days are spent reading documentation, googling, asking patient Paul Handly questions, fixing my git messes and, here and there, writing and pushing code. I have received lots of advice from heaps of smart people. I now know how to ask questions. I can look up the Django documentation and understand, like, more than half of it. I don’t mess up my migration files so much anymore. Heck, I hardly make migrations these days! I have learned a lot.

Did I make the right choice? Is this my career path? Do I love coding? Honestly, I’m still not sure. The wins feel real good, but the lows feel pretty low. And, on a deeper level, there’s a fear that a failure will reflect poorly on my entire gender. Trying to enter a male-dominated field and failing gives those imaginary misogynists tracking my progress the validation they seek. Look at her, she tried and could not succeed at a man’s game. Despite being an unfounded concern, one of the bigger challenges has been shaking this mentality.

So I started at the bottom, now I am here, stuck somewhere in the middle, perhaps only a short ways from the bottom. My immediate next steps are to continue hacking away and try to take things one function at a time. I’m not giving up yet.

--

--