I'm a firm believer in maintaining my programming and engineering skills sharp. Unfortunately, even if the environment at day work is stimulating, sometimes there are periods when you don't really do anything interesting from a technical point of view. In other words, you don't learn anything new. So, to "keep in shape" I need a constant influx of learning material. And there is no better way to learn than to actually do.

Once when I was young and full of motivation, I was inventing new problems for myself to solve, and in solving them I gradually increased my programming skill. These days, such motivations are more difficult to find. Luckily, I'm not the only one with the desire to learn, so people have been making up all kinds of problems to solve in a "group environment". Discussing the solutions with other people motivates you to actually do the work. Some examples: Code Katas, Ruby Quiz, Perl Quiz, solving problems from ACM's programming competition, and so on and on.

However, being the ever practical engineer that I am, I find even these approaches not especially motivating, mainly because they are synthetic. These are not real problems people need solved, but rather artificial problems made up solely for the purpose of exercise. Not that this is a bad thing, but I just find it hard to get motivated by these things for a long period of time. So how do you find real problems to exercise on ?

Enter RentACoder. Shortly, it is a marketplace of programmers. "Buyers" arrive with problems they need solved, "sellers" are programmers who have the skills to do the work. This is outsourcing taking to the extreme. A localized example of laissez faire capitalism.

How popular is this thing ? Very. At the moment there are 74,000 registered buyers and 175,000 registered sellers on the site. There are almost 2,500 open bid requests (jobs need to be done) and new ones are popping at a rate of a hundred a day. Buyers range from students needing solutions to homework, to companies hiring serious programmers for prolonged periods on contracts worth thousands of dollars. Sellers range from programmers yearning for some experience and skill sharpening to complete outsourcing firms in Russia or India that make their living through the website. After a job is completed, the buyer rates the seller and vice versa, thus creating a full ranking and reputation system that makes the consistent, fair buyers and skilled, serious sellers stand out.

I registered last week and have already completed two small projects. Unfortunately, both seem to be homework (one text processing in Perl, another a simple parser in Lisp), but you must start with something to get rated and have at least some portfolio. I made very low bids on purpose to win the requests - you can be either very good or dirt cheap, and since I'm still not rated there's no other way but price to assess my bid. In total I made a whopping $18 from the two projects - ice cream money. Do I feel bad for the poor Pakistani whom I outbidded, and that could pay a week's rent from these $18 ? No. The buyer wanted a job done. I proposed the lowest sum. Not very different from the US dad who was fired from his data entry job that can be done at 1/10th the price by this same Pakistani's uncle. This is capitalism, deal with it.

I surely don't plan to make any serious money from RentACoder. At best, I will earn enough in a few months to buy a couple of books on Amazon. But I do feel that RentACoder gives me far stronger motivation to actually do the work than any artificial "Quiz". It is fun to solve a real problem, to be on schedule, to have some money and reputation on the line. Somewhat like gambling - you don't do it for the money, you do it for fun. But what makes it fun is the money.

What I do expect is for RentACoder to be a skill sharpener. Once I gain some reputation and good ratings by completing small and cheap assignments, I will have a far better chance to win the really interesting bid requests, ones that involve learning new things.