Art Of Programming

musings by Dmytrii Nagirniak

Ruby Challenge for Newbies Reborn

A question has been raised whether or not Ruby Challenge for Newbies should exist or not. The main concern is:

…today, probably due to lack of time or other commitments, not many experienced Rubyists are willing to set a Ruby challenge for the newbies

I guess many Rubysts DO want to set the challenges, but unfortunately very few people these days have enough time.

Another problem with such challenges is that they are somewhat “detached” from the real life. Though I am not saying they are not interesting or educating. Don’t get me wrong, definitely they ARE. But still, I guess, many people would love to see how Ruby should be used correctly (the Rubyish way) in real-world applications. Especially in web apps.

So if there is the problem trying to find new challenges, then either WE need to set up new challenges and recommend people who can do that or, if that is not possible, the challenge itself might need to be "converted" to something different.

It seems the latter is the better choice at this moment.

Having said that, I believe that a good challenge should have attributes:

  • driven by people;
  • not dependent on one person (though may be controlled by one or a group);
  • winner(s) appointed by the people (though influenced by the owner/controller);
  • collaborative;
  • “shareable”;
  • role-playing;

These are the ideas from the top of my head, but it is possible to play around those…

I personally feel like it brings us to the following idea of a challenge: Ruby Project Development challenge.

Somebody suggests an idea to implement (interesting web application, some kind of useful tool, etc). Then the challenge becomes a project that people have to deliver. There are main two roles in this challenge:

  1. product owners;
  2. development team.

The product owners group consists of number of people who do like the idea but may not have time, ability to develop that. This group decides where the development team is heading to, and negotiates the requirements.

The development team is a group of self-organised people who do the actual development. Multiple development teams may exist to develop the same application.

The duration for the challenge may vary from weeks to couple of months. The winner of the challenge is the person who gets most number of votes from either product owners/development team or both (not sure yet). If there are multiple teams – then the winning team may also be chosen.

So the process of the challenge would be something like this:

  1. Somebody comes up with a project idea.
  2. People join this project either as product owner or as development team.
  3. People get organised in couple of development teams and a couple of product owners if too many guys have joined.
  4. The countdown begins: product owners and development teams start working together (not necessarily at the same time).
  5. During the work people should be able to see what others do, and help each other to deliver the product.
  6. At the end of the challenge winners in following categories may be selected:
    • best developer;
    • best team;
    • best team-mate;
    • incredible inventor;
    • etc

This of course is the basic idea, but it has sooo many variations.

So I propose the first challenge of this kind: Web applications supporting the challenge itself.


Dmytrii Nagirniak
Thanks for your comment, nice to know about all that.

My idea was to start the challenge for a real application so that people can discuss what is happening.
The Ruby quiz and similar are pretty isolated (though a reaaallly interesting).
TopCoder is probably a good choice here, I was not aware of that at the moment I wrote the article.

Thanks again for the suggestions.
Check TopCoder if you haven't yet. They don't have Ruby competitions there, but they do have .Net and Java (and now Objective-C) and they pay real money for your time. So you can combine the pleasure of learning with receiving money for your work.

As for the Ruby Challenge, there's enough groups like that around. Take Ruby Quiz for instance, that is out there what it seems for ages. They pose interesting challenges and discuss the solutions. Also, you can turn to Code Kata which is intended to develop the sense of the problem and practise your ability to think, while giving you a real-world problems to toy with.

As I said, there's plenty, and there's totally no need to drive anything in existence to what you think the ideal. If you can't find what you need, imagine it as your next assignment – to create a web site like what you just described – and go implement it.

Satish doesn't have time to work on the Ruby Challenge as he is riding a cool new wave of Clojure now, and you are concerned about his old favorite far more than he is. Take it easy. Projects come and go every day. :)