Are you a programmer looking for work? Heck, are you just looking for work? It may be time to do a crash course in Ruby on Rails.
For the last few months, I've been getting work offers at the rate of about one a week. Unsolicited work offers from out of the blue. This week - a shortened holiday week when many people are still at their cottages - the work offers have come in at one a day.
Of course, I've been busy with Get Signage and a few other small side projects, and have been getting used to saying 'No Thanks' - which is a difficult thing for a freelancer to do, especially remembering the dry spells I had in 1996 and 2004.
It's like when you're single you can't find anyone who will give you the time of day - but when you're finally in a relationship, all these other people come out of the woodwork. I keep wanting to yell "Where were you two years ago?!"
I'm not a particularly big noise in the local community - I go to the Rails Pub Nite, I blog occasionally about Rails, I know some of the bigger names around, but the only presentation I've ever given was over a year ago at BarCamp - where anyone can just sign up and present - and it wasn't even about Ruby or Rails.
I guess it's a perfect storm right now for Rails developers: Web 2.0 has picked up enough momentum for there to be a lot of startups again now, and Ruby on Rails has become extremely well hyped, especially in its claims to be faster for development than other frameworks (sort of true but sort of not - a subject for another post).
What's nice about Ruby and Rails is that they're both relatively clean and and easy to learn. It helps a lot to have banged your head against Java and/or PHP (or heck Lotus Notes) for a while so you know why things are so much better over here, but they're also decent ways to get started in development without a lot of bad habits ( cough PHP cough ).
So here's what you do:
If you've never really programmed before, read Learn to Program, which introduces you to the basics of programming, conveniently using Ruby.
If you have some time, read Code Complete so you know how to actually write useful code.
Read The Pragmatic Programmer to get some good ideas and habits.
Figure out how to use a version control system, like CVS or Subversion or Git
It's handy to know how to work with SQL databases - the basics are pretty straightforward, and there are a number of resources online. Rails lets you ignore a lot of database stuff, but you'll do better if you know what's going on.
You may want to do some research about data structures and design patterns - although I've found that for day-to-day work you don't need much, and in fact too much architecture can get in the way. For structures, the most important thing to know is: an array holds information sequentially, while a hash holds information by key. The only design pattern I use a lot is the Command pattern, which keeps my business logic clean and manageable.
Learn how to use a text editor well. I'm crazy and use EMACS, but TextMate is a good choice on the Mac, and there are bunch of decent Windows editors as well.
If you're unfamiliar with what a modern website looks like, read Head First HTML with CSS and XHTML, which is cheerful and friendly and has lots of pictures.
Here's the most important part: read Agile Web Development with Rails - by the end of the first section, you'll have built a functional Rails app with cool things like security and ajax.
Write some software. It doesn't have to be big - in fact, you should write several small applications, so you get a feel for the whole life-cycle of a project. Consider a time tracking system and a billing/invoicing tool - you're likely to need them soon anyhow!
If you want, read Rails Recipes and Ruby Cookbook for more advanced techniques.
Blog about Rails a bit - if you've figured out something tricky, include the code for the solution. This will make you at least seem like you know what you're doing and people looking for solutions will find you and link to you, giving you Google-Love. If you're able to build this blog with Rails, all the better.
Get a website and put your resume on it. You should know how to do this now.
Get your profile up on Working With Rails. My server logs show a steady trickle of traffic to my site from here, and some work offers have mentioned finding me on this site - and it's free so why not?
If you're in the Toronto area, go to Rails Pub Nite every third Monday of the month. It's low key and friendly and there's beer - and what else are you going to do on a Monday night? - and you can meet lots of other Rails people too. I've passed work to people I've met at these Pub Nites, and vice versa. If you're elsewhere, look for Meetups (the Bay Area has a lively Ruby/Rails Meetup community), Facebook groups, or start up your own.
This has worked well for me - and if it worked for me it should work for you too. It's obviously not the only way - there are lots of other books and sites to look at, for example. Hopefully the industry will still be bubbling while you do this, and you'll be able to get some decent work - and if it isn't, well, you'll be ready for the next bubble!