Hello, Rubyists! I’m Geoffrey Grosenbach and I’ll be posting here from time to time. You might remember me from the Ruby on Rails Podcast or from my graphing library, Gruff.

I’ll be in New York and San Francisco in a few weeks teaching Rails workshops for Carson Workshops and hope to meet up with local Rubyists (check my blog in a few days for the details).

A Wish

A few years ago I was a devout Perl hobbyist. I was programming in Java fulltime but appreciated the quirkiness of Perl and hoped to get a job using it. Eventually I signed on with a software company and led a successful rewrite of an internal statistics engine. Together with two other developers, I rewrote the system and reduced many unmaintainable scripts to a handful of short ones. Unfortunately, we ended up leaving the company after the project was completed but still keep in touch today.

Many Rubyists are in the same situation and are ready to step out and work fulltime with a language they love. Fortunately there are many more opportunities to work professionally with Ruby now. At the same time, a certain set of skills is required and things might be different from the environment you are familiar with.

The Market

As you might expect, many current Ruby-related jobs involve Rails. I don’t pretend to have an understanding of the entire market, but many of the projects that pass through my inbox seem to have a similar set of characteristics. There are gigs at up-and-coming startups, jobs at existing web shops that are starting to use Rails, and projects for traditional companies who are redesigning their sites.

A significant difference from the startups I worked for a few years ago is the size. Web sites do more now, and more is expected, but teams are much smaller. It was hard to walk into a startup in 1999 or 2000 that had a development team of fewer than a dozen people. Now, many projects are completed by small teams with two or three developers and a graphic designer.

Because of this, a different set of skills is needed. People with the knowledge and confidence to lead a project are in huge demand. Designer-developers with both technical and artistic skills are the rockstars of the web development world. Specialists are needed, but the new baseline is someone who is comfortable designing a database, mocking up an XHTML layout, sketching out a class hierarchy, and debugging Javascript.

Some of this may seem obvious. Unfortunately, many people want to launch their freelance career with a co-piloting role that will help them learn the ropes. The demands of a small-team project make that difficult, especially if the team is spread across the country. In my opinion, the way to learn the ropes is actually with a small personal project (more about that later).

Your Skills

For some reason, many colleges and universities still don’t get it. If you missed these skills on your way to a career, here’s what you need to make it as a freelancer.

  • Web standards. Rails development is especially difficult if you are mixing content and styling in your HTML. The major WYSIWYG layout editors aren’t aware of Ruby’s ERB template syntax, so you’ll have to learn how stylesheets work. Even if you aren’t artistically oriented, learn how to structure a page so it can be styled with CSS.
  • Source code control. Again, hopefully this obvious to you. If you’re working on a team that is scattered around the world, the project won’t even get off the ground unless you are using a central source code repository. Add, commit, delete, checkout, import, merge.
  • Test-driven development. It will change the way you think in a very positive way. It’s tempting to stick one toe in the water by writing a few tests after you’ve implemented a new feature. Don’t do it! Start with a test and then “go green” by implementing the required functionality. And you can’t do test driven development while looking at a web browser. Turn off your webserver and turn on autotest.

Promote Yourself

Now that you have the basic skills required, it’s time to promote yourself. Write a useful library or plugin. Find a niche, do something unique, fill a need. Are you confused by something? Someone else probably is, too. Blog about it and you might find an audience for your ideas.

Design a small but functional site and open it to the world. Doing so will showcase what you are capable of while teaching you how to deploy a site and keep it running. Use the exception_notification plugin to notify yourself when errors happen and you’ll learn a lot about the kinds of errors that can sprout on a live site.

Can you put a value on open sourcing your ideas? If I spend a few hours writing a plugin, then give it away, what does that cost me? What do I earn from that? A large part of the value is the feedback you get from the community and the exposure you get from fulfilling a need.

Do It!

Part of the beauty of the current market is that there are many opportunities for freelancers (I’ll leave tax filing, financial accounting, and legal contracts as an exercise for the reader). I hope many of you pursue an independent consulting career this year. Just remember to be aware of the current market and the skills needed.

Now go do it!