You don't have to be a child genius or math wizard to learn how to code.
This story is the third in a six part editorial series exploring the balance between student learning and job skills. We’re asking leaders and thinkers in education and technology fields: Can America educate its way out of the skills gap? This series is brought to you by GOOD, with support from Apollo Group. Learn more about our efforts to bridge the skills gap at Coding for GOOD.
I've met a lot of people who believe that "programming" is an abstract, scary piece of dark magic—some kind of inaccessible ability. I'm a firm believer—and actual proof—that you don't have to be a child genius or mathematical wizard to learn how to code.
I like to think of it as being this really cool, nerdy superpower—one you don't have to be born with but can develop. You can use it to build things to change the way people behave, the way people think, and the way people interact with each other.
I entered Northwestern University as a journalism major. At the start of my freshman year, I wrote articles and designed magazine spreads. Towards the end of the year, I began producing interactive graphics. You know that feeling you got when you first learned how to ride a bike as a kid? That sense of freedom and accomplishment—the feeling that the whole world was yours to explore? That's how I felt when I first learned how to animate a bike wheel in Flash. There wasn't even any real coding involved, but it opened my eyes to the power of technical skills—the potential to create whatever you wanted.
After that, I worked on various packages using ActionScript 3 and soon began playing around with Javascript too. Even creating a silly alert box on a dummy HTML page made me giddy. I continued my interactive work, but I could never shake the feeling of inadequacy I had when coding. I felt what I was doing couldn't even be called "coding," because I would simply Google questions and hack together solutions based on code other people had already written. There was always more to learn, more I wanted to know, more I wanted to be able to build.
Halfway through my sophomore year, The Social Network came out. I don't know what it is about that movie, but it inspired and motivated me to do something about this programming thing I barely knew anything about. I declared a double major in computer science.
Taking computer science classes was just the beginning. They didn't provide a magic answer to all my questions—I couldn't learn all I wanted to just from my object-oriented programming or data structures classes. So, I pursued web development on my own.
The summer after my sophomore year was fortunate enough to be selected for a web engineering apprenticeship at GOOD. After going in with no real experience, I came out of that summer having worked with another designer and developer to build the company's mobile website. We used Ruby and Rails for the mobile site—two technologies I had zero familiarity with before the summer.
Although the work was extremely challenging, we had a great engineering team behind us, ready to support us and pick up the slack whenever we needed it. I learned so much from the apprenticeship, and I'm not just talking about the pure technical skills, though there are plenty: Ruby, Rails, Rspec, Cucumber, MySQL, Slim, Sass, jQuery, Compass, Git, and Unix.
I also learned how to approach problems and not be intimidated by something I didn't know how to solve right away. You have to work at it, do research, talk to colleagues, and just try. That's the attitude I now have in approaching problems—technical or otherwise.
There are so many great resources out there on the web. Any problem you could possibly have when it comes to coding, I guarantee you someone else has run into the same issue. You can start with Google and more often than not find the right Stack Overflow thread that solves your problem. But if you're like me, you want to take that next step and start building a set of fundamental tools and skills you can draw on when it comes to programming.
Luckily enough, that also exists on the web. Coursera, Udacity, Codecademy—all of these platforms offer free educational resources online and there's really nothing to keep you from taking that "Design and Analysis of Algorithms" online class, or learning the basics of Javascript. It's pretty easy to geek out about this stuff, and it's really great that there are so many online resources that lower the barrier to entry to building such important—and cool—skills.
And GOOD's drunk the Kool-Aid. They recognize the difficulty and barrier to entry in computer science and learning how to program. If you even have the slightest interest or wisp of intrigue, get involved with Coding for GOOD.
I feel very fortunate to have discovered computer science. It's really crazy to think about how far I've come in just over a year. With any luck, I'll graduate in June with a degree in both journalism and computer science.
Not everyone's going to watch The Social Network and go declare a computer science major, but with the resources and opportunities currently available, you don't need to be enrolled in a computer science degree program to learn fundamental programming skills that are shaping the future. Coding really isn't a superpower—not in the sense that only special people like Clark Kent are born with the ability to do it. It's hard, but it's learnable. I'm proof of that.
Code image via Shutterstock