A lot of people have been asking me what resources I used to learn how to program in such a short period of time… so I decided to compile a list of resources that I consulted in chronological order:
- RailsGuides Getting Started with Rails
- Michael Hartl’s Rails Tutorial - I branched out from this one and built my first app
- A lot of Stack Overflow questions as I built my first real web app.
- Code School’s Rails for Zombies 1 and 2
- Code School’s jQuery courses
- Chris Pine’s Learn to Program (I skimmed through this pretty quickly, as most of the concepts were familiar by this point - it might be better to do this first, realistically)
- Agile web development with Rails
- Code Academy courses - So far I think these are OK, but I think they suffer from doing too much of not a lot… building a cash register app is great for learning programming concepts, but it may lose people to boredom if it doesn’t relate to real world applications (something Code School is good at doing).
I’ll add to this list periodically, but I feel like these resources have helped to quickly ramp up my programming knowledge so that I can build the apps that I need to build.
In February of 2010 (2 years and 1 month ago) I moved to Taiwan with my fiancee to “teach English”.
When we got here I ended up teaching 1 day of English before I realized that it would be a lot better if I spent my time doing something else - the fear of children didn’t help either.
As a result I ended up working as a copywriter for a Chinese manufacturing magazine, and then at an investment company as a research editor. Both of these jobs left me with quite a bit of time to think about what else I could be doing with my time, which is when I started doing web work through Elance, Odesk, and that sort of thing.
In the beginning I worked on minuscule projects like “My Joomla template is broken! OMG!” or “I need a banner for my spam website”, which was great, because US$50 went a pretty long way in Taiwan. However, I quickly realized that if I invested some time in learning some proper skills, I could potentially build this into a business - this is when I started learning Rails, which helped me to figure out that building web projects is what I want to do with my life.
All of that is just backstory though - the problem I’m facing now is how to build a solid web consultancy while living abroad. I don’t speak a lot of Chinese, so building a Taiwanese client base is sort of out of the question, and Elance and Odesk are highly commoditized and bid amounts are primarily tailored towards people working in under-developed countries like India, Philippines, etc.
So the big question is how best to build this type of business without being in a place where you can meet directly with clients to form relationships and build trust. While I understand that the world of the web is often transient, there is still some value in having a shop setup in North America vs. being a one-man show in Taiwan. For now I’m just focusing on getting small jobs through Elance, but focusing my bids on jobs that imply potential for more work in the future, so that I can nurture these relationships and build my business from there.
Along with countless 37signals fanboys and girls I spent a couple of hours today going through the revamp of Basecamp. Interesting to see what they changed, kept, and added, and to try and get a feel for how they utilized Rails 3.2.
I also noticed that they divorced themselves from Helvetica for their marketing pages, and adopted the ProimxaNova font instead, which is quite nice looking. It’s great to see the slow, gradual shift to people using non-Helvetica, Arial, sans… or Veranda fonts.
Around the middle of 2011 I had a couple of ideas for web apps that I wanted to build, and it dawned on me that I really needed to learn how to program.
Now, almost a year later, I’ve realized that this is where my passion lies, but I constantly wonder if it’s too late for me to get started coding, given that I’m 26 now and I studied film production at university.
I’ve always had a ‘gift’ of sorts for working with computers, as evidenced by the fact that every job I’ve ever had (from a film production coordinator to investment banking) has always morphed into my boss referring to me as the “tech guru” - this is not an exaggeration, my most recent two bosses have actually called me this; it’s sort of creepy.
That said, I’ve never spent any reasonable amount of time learning to code, so I feel like I’ve some serious hurdles to overcome if I want to make a real go of this.
While the learning curve was extremely steep in the beginning, I found that my learning really accelerated when I took on a project, and was forced to learn because I needed to get things done, rather than mindlessly creating conditionals to see if Jack is older than Amy. As a result, I’ve ended up with one complete, profitable app, as well as several others that are “in progress”. All of these have helped to form the foundation of my abilities.
Thus far I’ve focused on learning (in this order):
- Ruby on rails (ruby.railstutorial.org)
- Jquery (codeschool.com)
- Rspec and Cucumber testing (pragprog.com)
- Coffeescript (codeschool.com)
The biggest issue that I’ve found thus far in my studies is that teaching material often assumes that a student has the fundamentals of programming concepts as a foundation, so a lot of times when I’m learning something new, I constantly need to be looking up terms to be sure I am fully-grasping ideas.
There is no end in sight to the obstacles that I feel I need to overcome, but I do love what I’m doing, and I will continue to pursue it.