How I finally learned to build stuff with Rails

Hint: I built 12 different web apps in 12 weeks

Mackenzie Child
Ruby on Rails
Published in
6 min readDec 20, 2014

--

Several months ago I set out to learn Rails once and for all. I had dabbled with rails several times in the prior years, but I would always simply give up or find something ‘more interesting’ when I got stuck or things became difficult.

You see, I’m a designer & front-end guy. I started in Graphic Design when I was about 16, then transitioned into front-end web design when I was around 20. I always had ideas I wanted to bring to life, but I didn’t have the money to hire a developer, or know how to build them out myself. I’ve always loved the idea of taking a concept of mine from design, to front-end code, to back-end all myself.

I wanted to be a Unicorn… An individual who is skilled in UI / UX design, front-end development & back-end development.

The opportunities that come from having that wide range of skills is huge in my opinion…

So, back to the learning Rails stuff!

Every time I attempted to learn Rails, I would follow a tutorial, but hit a wall the moment I attempted to do anything other than what was outlined in the tutorial. And a lot of times hit a wall when I attempted to do something that was in the tutorial, haha.

I knew that I could read blog posts or go through tutorials every day, but I wouldn’t truly understand Rails and how the pieces fit together until I started building applications using it the framework.

So I challenged myself.

I challenged myself to build a new web application in Rails each week for twelve weeks. However, I didn’t stop there.

I read an article that explained that you learn better by teaching, because you retain the information differently when you’re prepared to explain or teach it to someone else. So in addition to the weekly build, I recorded a screencast teaching others & showing step by step how I built each weeks application.

I’ll be completely honest. This challenge was really… fucking… hard!

This was mainly because I was doing this challenge in addition to my full-time job. There were many 16+ hour days. There were many times throughout the process when I wanted to quit! Many times I thought I was stupid for not choosing a smaller number like a 4 in 4 challenge instead, haha.

Each week, I struggled.

I started to build the application, then i’d run into an error that made no sense to me and that I had no idea how to fix, then I would spend the next several hours googling around for answers (there is an art to choosing your search terms). I’d usually find a fix on stack overflow, or a random blog I happened to stumble upon and I’d continue on (not fully understanding what caused the error or how I fixed it).

Once I finally finished building the web app with all the features I wanted it to have, I would then start the process of building it again! This time taking detailed notes & outlining the process. With that outline, I then built the application for a third time for the screencast recording (Didn’t want to look stupid in my screencasts!).

As I went through this process each week, an amazing thing happened.

These apps became easier and easier to build! By week 5 I felt pretty confident in the basics. I started to understand the MVC concepts! I could debug an error pretty quickly and continue on, and the fear of getting unknown errors quieted down.

Now that this challenge is over, I’m pretty confident that I can build at least an MVP of any idea that pops into my head. And more importantly, if I don’t know exactly how to build an application or implement a specific feature, I’m confident I can figure it out!

Don’t get me wrong though, there is still a ton of stuff I need & plan on learning about Rails, like testing among other topics (and I will continue to create screencasts on what I learn!), but this challenge was a great start in the process.

Now, about those screencasts I mentioned before.

Below is each a list all the applications I built, along with a link to each screencast I created for each tutorial. All of which I’ve made available for free.

Learning Rails was a struggle for me, so I hope that these tutorials make your journey in learning Rails go a little easier for you. ☺

App Features: Users, Posts, Voting, Comments, Bootstrap

Week 1

How to build a Reddit Clone in Rails 4.

Watch the screencast

App Features: Users, Posts, Comments

Week 2

How to build a simple blog in Rails 4.

Watch the screencast

App Features: Users, Posts, Image Uploading, Nested Forms, HAML, Bootstrap

Week 3

How to build a Recipe Box app in Rails 4.

Watch the screencast

App Features: Users, Posts, Image Uploading, Voting, HAML, Bootstrap

Week 4

How to build a Pinterest Clone in Rails 4.

Watch the screencast

App Features: Users, Posts, Star Ratings, Search, Bootstrap

Week 5

How to build a Movie Review app in Rails 4.

Watch the screencast

App Features: Todo Lists, Todo Items, Check if completed

Week 6

How to build a Todo app in Rails 4.

Watch the screencast

App Features: Job Lists, Categories, Filter, Bootstrap, HAML

Week 7

How to build a Jobs Board app in Rails 4.

Watch the screencast

App Features: Users, Posts, Categories. Filtering, Bootstrap

Week 8

How to build a Workout Log in Rails 4.

Watch the screencast

App Features: Users, Posts, Categories. Filtering, Bootstrap

Week 9

How to build a Wikipedia Clone in Rails 4.

Watch the screencast

App Features: Users, Posts, Comments

Week 10

How to build a Forum in Rails 4.

Watch the screencast

App Features: Users, Notes, dynamically change root route

Week 11

How to build a Notebook App in Rails 4.

Watch the screencast

App Features: Users, Posts, Image Uploading, Voting, Comments

Week 12

How to build a Dribbble type app in Rails 4.

Watch the screencast

If you find any of my tutorials useful, it’d mean a lot to me if you hit the “recommend” button below & shared this post.

--

--

Mackenzie Child
Ruby on Rails

I spend my time designing stuff, coding stuff, and making videos teaching what I am learning. Find me at mackenziechild.me