(Update February 26, 2013: I have since this post sold Freelancify.com to a new owner)
Before I begin, I’d like to recognize Josh Crews (http://www.joshcrews.com) for convincing me to learn Ruby on Rails; without him and his hours of volunteered mentership and help, I wouldn’t be writing this today. Thank you.
I’d also like to address Please do not email me asking me to program your app for equity. I am not interested. It seems no matter how much I say this, people continue to keep asking in more and more subtle, sneakier ways.
On January 23rd, I launched my dream idea, Freelancify.com. Exactly 12 weeks before that; I was a tech entrepreneur who spent thousands of dollars to create any type of decent MVP (minimum viable product) because of a skill that I lacked, one that I thought (from the outside looking in) was way too complicated or take too long for me to try to learn. I thought (like many others) that programmers were born (and some are) with a magic set of skills in problem solving and math that made them geniuses to coding.
And exactly 12 weeks ago, I made the best decision I’ve made in a really, really long time. No longer will any of my dream ideas remain just that, ideas. I now have the power to throw up working versions without spending more than hosting costs and some sweat equity. In today’s time, this set of skills is like bringing a fleet of tractors to the California gold rush while everyone else is using shovels. I suggest everyone to learn how to code.
A correction I’d like to address: Previously, I stated in a post that I learned Rails in 8 weeks; doing an exact recount to launch date, it was more so 12 weeks. Although at 8 weeks, I feel is when I grasped enough and the next four weeks were more so spent putting that knowledge to work than learning.
What Skills Did I Have Prior To Learning Rails?
I was a web designer in HTML and CSS, I mainly focused on UI and UX design stuff. The furthest thing with actual code (other than HTML) was being able to tweak WordPress. Prior to; I had absolutely no clue what a MVC framework was nor how databases generally worked. Freelancify’s design/layout/and html wireframe was created by me in 2 weeks back in June 2011.
Why I Decided To Learn It?
Back in June 2011, when I had the wireframe done; I began looking for a coder to make that wireframe become functional. The wireframe was pretty much the entire deal, I had all the input fields, dropdowns, forms, buttons, links that took you to where it needed to go, etc. Found a developer and long-story short, the guy didn’t come through for me. I was left hanging with thousands in debt and no product close to finished. I then contacted Josh Crews (who I had met at a Ruby on Rails meetup he organizes in Nashville), and met with him in person to see if the current project was anywhere near salvageable. Sadly no, patching something up would take just as much time as starting fresh for a good developer. Heart sank; I knew I couldn’t afford the thousands more it would take. And then these words came from Josh…. “Why don’t you just learn how to do Ruby on Rails, this project would be the perfect way to learn.“, and then “I’ll even sit down with you twice a week and help you learn.”
Sat down that night, and just thought for hours. My choices were: get a comfortable job and pay my bills OR risk everything to learn Rails and constantly eat the finest noodles Ramen, Italy ever made.
I decided. Called Josh the next morning. I’m going all in. I budgeted the last of my savings and bought 3 months of living expenses (for a non-married guy living by himself with no kids, $1K a month goes a long ways). Time to go to work, I am now a full-time student. Mind thought: Google searches, StackOverFlow, Josh, IRC #RubyOnRails, and the Rails community will have my back when I get stuck, sure enough they did.
My Next 3 Months – Mission: Get an MVP up, had to be enough to work but also not crappy enough to leave a terrible first impression.
Weeks 1 – 3
This was by far the hardest learning curve, but DO NOT give up.
Walls are built to keep the people who really don’t want it out.
Setting up the Rails environment for a total newb is mind-blowingly frustrating. Tip #1: get a MAC computer. Tip #2: use Homebrew and RVM and GIT and Heroku (that’s really all you need to get started). I spent a couple days setting up, taking everything out, and doing it again. Enough reps and you’ll get used to the command line terminal and understand why things work the way they do. From there; the first thing I hit was TryRuby, Rails for Zombies, and Rails Tutorial by Michael Hartl. Don’t worry about not knowing 120% of the material, it’s not until you apply it that you really start learning it. I finished the Rails Tutorial and built that Twitter-like app in a week’s time, not totally understanding what I did. But later down the road, it’ll all start to make sense.
Weeks 3 – 6
With the Twitter app made from the Rails Tutorial; I gained some confidence. The tutorial didn’t make me a developer, but now I knew the general steps in making apps, from creating an app to getting it up on Heroku. Everything in between was still a blur. How would I start REALLY learning now? By working on an actual project, something that means something to you. Josh and I decided to let me loose on Freelancify and see what I could do
First thing I did was transfer all the HTML from the wireframe and organize them into view files and partials. I scaffolded up the Users and Projects. Then I started learning about my first real gem Devise. Then onto stuff that each User or Project has, for example; each User would have a portfolio. But users would have many portfolios while a portfolio would belong to only one User. Once you get a hang of how that relationship stuff works and how to call/display things that belong to something else, life gets much easier.
Any parts you get absolutely stuck in, skip it; chances are, while you are building another feature; you’ll also learn how to make the feature you skipped work.
Weeks 6 – 9
Bit by bit, I kept learning from repetition. I’d be able to get a few things working then bam; hit a wall and had absolutely no clue what to do. Hit StackOverFlow or Josh or the IRC chat #RubyonRails or RailsCasts, and eventually found my way around it. Doing this about a hundred times, and you will learn fairly quickly. Spending those frustrating hours testing out someone else’s answer on StackOverFlow to find out it doesn’t work for you is actually beneficial. You learn what not to do. And when you do find the answer, you begin to learn WHY the last thing didn’t work. Around this time is when I starting realizing the bigger picture of things and really understanding WHY things worked the way they do. I’d feel like an idiot and go back and re-factor old code after I learned better, more efficient ways to do things. Once I reached this stage, everything all started falling into place.
Weeks 9 – 12
This was just full-hustle mode to get Freelancify to launch stage. At this point, I felt like I was flying through getting features to work. Spent the last week tidying up different bugs and goofs. That Monday, I launched. But I’m still far from done learning..
That’s it guys. I left out (for the sake of this post’s length) the super specifics and technical stuff. But feel free to ask any questions in the comments, and I’ll def return an answer. Oh, and please subscribe (right-side box), it’ll give me motivation to write more!
– James Fend
p.s. – Although it helped having a mentor to meet in person with, you can still definitely learn Rails without. Or even go find one, many Rails developers love giving back to the community. Check for local meetups.
I get emailed this one question at least 4 times a week..
“Where do I begin to learn Ruby on Rails, where would you suggest I begin?”Without a doubt, the best way I learned was by building an actual working app. I used Michael Hartl’s tutorial which showed me how to get a very basic Twitter like app up and running from scratch. I cannot recommend this tutorial enough; getting something up and going fast was key; it beats learning and memorization of a book by a mile.