photo by helena price.
copyleft 2016

So How Did You Learn How to Program?

By far, the question I get asked the most since I taught myself how to program and got a job as a software engineer is: “How did you teach yourself to program?” It has occurred to me that there might be more people interested in going down this path, so I thought I would explain what I did in my pursuit of a career as a software developer.

puts 'hello world'

I decided to start learning how to code after a conversation with a friend (who works in tech) late one night last summer in a bar in San Francisco. She asked me a question and wanted to know if I was able to come up with the answer. The question she asked was this:

  • There is a wall that has two switches on one side and three light bulbs on the other. You can only cross from the side with the switches to the side with the bulbs once. How do you figure out which switch goes to which bulb?

I sat for about five minutes playing out different possible solutions in my head before I had an answer. Upon hearing my solution she told me: “You should think about learning how to program.” And so I did. I thought about it a lot and I went home and sat down in front of my computer and went to Code Academy’s site.

Before that moment the only coding I had ever done was some basic HTML / CSS work on my Myspace page in high school (hello early 2000 crowd), Blogger blog, and eventually a Wordpress blog. I created an account and clicked on “learn.” Now I had to make a decision. Which language did I want to learn? I already knew some basic HTML and CSS so I decided I wanted to learn something new. The description for JavaScript said that I would learn how to write my own browser based games. I had always wanted to make video games and so it seemed like the logical next step.

A screenshot of my final CodeAcademy Ruby assignment.

I got about 25% of the way through the coursework before I got stuck on something and realized how difficult JavaScript was. There were so many symbols and I always seemed to forget to do something simple like place a semicolon. I gave up after two weeks and thought, “oh well, maybe I was just too stupid.” I was wrong.

About two months later I was encouraged by another friend to try another language and see if that language clicked more. I went back to Code Academy and this time, I decided to try the Ruby language. Code Academy described it as a “powerful yet beginner-friendly language.” I quickly realized I liked Ruby a whole heck of a lot more than I liked Javascript. I tore through the Ruby coursework and completed everything Code Academy could throw at me.

Craving more I was pointed in the direction of The Ruby Koans. The Koans provided a bit of a challenge not only teaching you the Ruby language but also teaching you about writing tests and doing test driven development (TDD). After that I took on the similarly style tutorial Test First Ruby. Although both Test First Ruby and The Ruby Koans involved the running of some programs in the terminal I still felt pretty lost when I needed to work in the terminal so I quickly ran through The Command Line Crash Course. I finished that portion of my curriculum with a quick ruby refresher on Ruby Monk. It had taken me about two months of working both before work and on all of my breaks from work, but I was ready for my next challenge: Rails.

The first place I headed was the rails guide “Getting Started with Rails.” This guide helped me build a simple rails blog, which I deployed on Heroku. After that I did the Rails for Zombies tutorial which gave me a good idea how rails worked as well as taught me how to use CRUD properly.

I applied to App Academy (a bootcamp style program for Ruby on Rails), but didn’t get in. It was pretty hard to get rejected after I felt like I had spent so much time and effort on teaching myself Ruby. I didn’t want to let it get to me, so I decided to attend a hackathon. At it I felt a little lost, but presented an idea for a web application to my group. They didn’t know Ruby so we started working on it in JavaScript and Python. But by this point I knew enough about the concepts to be able to lookup and implement syntax to be able to contribute a little bit to the group.

A screenshot of my final CodeAcademy Ruby assignment.

After the hackathon, I found it hard to continue working on the project since I didn’t know a lot of JS or Python and it felt like I was starting over trying to learn another language. We also did some things that could have been improved and didn’t make the site as good as it could have been. So I decided that I was going to try to remake the site in Ruby on Rails. If nothing else and it never went to production, it would be a really good learning experience for me.

The idea for Refuge Restrooms was born and in early February of 2014, only five short months after starting to learn Ruby, I launched the initial launch of Refuge Restrooms. I had built something. And beyond that it had gotten some attention: the Advocate wrote about it, as did The Huffington Post, and so did Feministing. After that it was a whirlwind of developing and managing the development of an open source project. The application has come a long way and still has miles to go. There’s lots of work to be done on it, including hopefully native mobile applications on iOS and Android. Looks like it’s time to start teaching myself how to write swift. =)

The real payoff for me was getting hired. In April I accepted a paid internship with a finance tech company in SF as a software engineer. It has been incredibly rewarding and at times quite challenging, but I earned it. I worked hard, taught myself something new — and improved my life. And I think you can do that too!

copyleft 2016