Guest post from Pete Huang, student at Northeastern University making the switch to programming as a career
It was time.
For years, I played around in the WordPress editor scanning lines and lines of CSS, stripping down themes to their bare minimum and hacking together pieces of copied and pasted PHP to support my scrappy, shady “make money online” schemes.
But I moved on, and soon, I found myself looking to do bigger things. I’ve wanted to program awesome things for a while now. It’s college, it’s four years to learn whatever I want, it’s a series of opportunities to do new things. Indeed, it was time. I opened TryRuby and got to work.
This was April of 2013. I had been fed up with not knowing, while people were out there building. I thought I’d be able to be the “non-technical founder”. I soon realized that not knowing is just as powerful as knowing, just it’s in the entirely wrong direction. I shot my brother, a CS major, a text asking him where I should start. He said “Look up TryRuby and the Hartl tutorial. Good luck.”
Today, seven months later, I’m shooting my resume out to as many companies as I can.
Learning to program has been a highly self-driven initiative. School was too slow for my timeline, because back in April, I told myself that I’d be a decent candidate for internships come Fall 2013. I had to learn everything I needed to get there in six months time by myself. I noted that I needed to emulate a computer science major from beginning to end, except I had much less time. It’s an essential paradigm shift going from “I’m just going to learn a bit” to “I’m behind and I need to catch up”, and it puts you in a position to cut the fat and optimize your learning.
It hasn’t been a totally smooth ride, though. I struggled with understanding the deeper meaning of everything. That sounds a bit vague, but most beginners will know that doing TryRuby or Codecademy teaches you to be good at memorizing syntax and following instructions/hints. Once you finish, you know how to write an if/else statement, but you don’t really know what to do with it. Placing everything in context and finding out what it can be used for is the toughest part of learning to program because it’s not something other people can teach you. The understanding seems to be a result of your own exploration.
After making a few things, I felt like it was time to nail down what was necessary to succeed in a technical interview. I bought a textbook (Algorithms, 4th edition by Sedgewick), studied the Big-O Cheat Sheet and completed the Coding for Interviews practice every week. A lot of it was new stuff, and the same frustrations that came with learning to program also came with learning new data structures. I’m still in this process, and it continues to stump me once in a while, but sticking with it has definitely helped, especially as you see more problems that end up being very similar because of the underlying structure.
Coding for Interviews: the weekly code practice email
This coming summer, I hope to see myself in an internship that will help me understand more about computer science and move into less web-heavy areas. Ruby on Rails barely skims the surface of computer science as a field, so my next steps are definitely to see what else is out there. It’s a fantastically deep subject.
Until then (and probably for years after), I’ll be doing a few things. First, I’ll be building more and more complex things. Twitter clones can only get you so far. I want to move away from Rails and do things like wrapping awesome APIs and writing HTTP servers. Second, I’ll be studying more algorithms and practicing more coding interview questions. There is a wealth of resources for this, from Coding to Interviews to Cracking the Coding Interview to CareerCup. Finally, I’ll be networking my best to see what awesome things people are doing out there. After all, it’s not just about you. If anything, the tech community is all about giving back and teaching others.
Hopefully, by next year, doing these things will position me to work for an awesome company. The Big 4 come to mind, but companies like Palantir and Panorama Education are also helping to solve very important problems in the world.