In the summer of 2012, I started a job as a web designer for a local startup who specialized in digital promotions. I mostly created basic web pages with not much more than HTML, CSS and jQuery. Until one day I asked the question, “But what makes it work?” (You can read more about why I transitioned to development here.)
Roughly two years later, I had completed a design co-op for Gaslight and found myself really wanting to sink my teeth into development, but I wasn’t sure where to start. None of us really were. Gaslight had never had an apprentice before, and the only programming experience I had was a small bit of PHP I had done at a previous job. We decided we would come up with a semester-long plan at the beginning of each of my co-op terms based on my standing.
Here’s how it panned out over the next two years:
We made a schedule of tutorials and courses I would complete on a daily basis for the duration of the semester. I would write small journals about what I had learned that day. Then meet with Gaslight CEO Chris Moore every Friday for a review of what I had learned that week, how I thought the week had gone, and if I was on track with the schedule. I had a good amount of support and check-ins from other developers, which definitely helped me wrap my head around new concepts and receive encouragement to keep going.
During my second co-op semester as a developer, I spent a lot of time going through Ruby challenges that were readily available on the internet or provided by Gaslight Chief Scientist Chris Nelson. We would pair and code review multiple times a week, and for a while, I even worked through some of the material with an outside apprentice that would come in a few times a month. I found the challenges getting less and less challenging, and from there, I started working through online Rails tutorials, which leads us to …
Once I had a small foundation of knowledge, I started working on client projects for about nine months. I worked on support contracts in Ruby on Rails and began spreading roots and working with Backbone on client work with a long-term team.
I have been a Junior Developer here for about nine months and our current plan includes:
Weekly pairing with senior developers on a small app I’ve built to add new features
Pairing daily with another Junior Dev and code reviews on client work
Despite being unsure about how to create an apprenticeship program, I believe it has been crucial to my progress and success. There were a couple aspects that stood out to me as being key parts of the experience: pairing with another apprentice and code reviews.
It’s really beneficial to work through problems with someone at my experience level. Whether consciously or not, there is less pressure to retain information and apply it to something new when there isn’t an intimidating gap in experience. It’s easier to communicate when both people are closer in skill level and have a similar amount of knowledge.
I think it’s also a good gauge of “I don’t know what I don’t know,” and an opportunity to swap knowledge. I wouldn’t hesitate to say that code review can offer a similar opportunity to those who are learning. I think there’s valuable knowledge to be learned from everyone and having the opportunity to gain other perspectives and broaden your horizons is really important.
There’s no easy way to learn anything overnight, especially development. It’s going to take time, effort and perseverance, but it will be worth it. There were a lot of times when I was unsure if I could really make it as a developer, or if it was even worth it. However, I would say it was one of the best life choices I’ve made, and I would do it over again if I had to.
My Personal Advice
Just jump in. I don’t think there is a right or wrong way to get started in development. I think if you have enough desire, passion, interest, what-have-you, you can learn it.
Ask questions. Don’t be afraid to ask questions or seek answers. We all Google things!
Keep your head up. It’s really easy to become discouraged, but it’s really important to stop and look how far you have come. Everyone starts out somewhere.
Don’t be afraid to show what you’ve built! Sharing your code and finding ways to get feedback are crucial to becoming a better developer. You can learn from other people’s perspectives.
Build … a lot. Even if you’re just tinkering, keep building. The more you do it, the better you’ll get. As they say, “Repetition in the mother of learning!”
My Top Resources For Learning Ruby on Rails
Try Ruby is a nice quick way to become acquainted with Ruby. I personally enjoyed how quick and fundamental the lessons are (and the friendly aesthetic doesn’t hurt either)!
Learn Ruby the Hard Way
Learn Ruby is quite a bit longer to get through, but it goes deeper into the language. It even explains how to get Ruby setup on your machine.
CodeSchool: The Ruby Path
The CodeSchool Ruby Path begins with Try Ruby, but moves on to Ruby on Rails lessons with videos and challenges based around themes to keep you going!
Exercism prompts you with challenges to complete for a slew of languages and allows you to share your solutions and receive feedback from other developers of all skill levels. This is a resource that can be valuable no matter your skill level!
Upcase by ThoughtBot (Ruby on Rails and Git)
Upcase offers many different lesson paths, but I chose to complete Ruby on Rails and Git. Even though it is a paid resource, I found it very informational and worth the money.
Ruby Warrior is a side-scrolling game in which you utilize Ruby skills to guide a knight through dangerous dungeons!
RailsCasts is an awesome blog that features screencast tutorials on almost anything you could need to do in Rails. Looking for an apprenticeship? We’re actually recruiting beginning developers for an apprenticeship program we’re developing with a Fortune 500 client. These are paid positions and perfect for someone coming out of a code bootcamp. You’ll work on real products and receive hands-on mentorship from [Gaslight Chief Scientist Chris Nelson](https://launchscout.com/about-us/). Interested? Email: firstname.lastname@example.org