This post originated from an RSS feed registered with Ruby Buzz
by David Heinemeier Hansson.
Original Post: Is Ruby for all?
Feed Title: Loud Thinking
Feed URL: http://feeds.feedburner.com/LoudThinking
Feed Description: All about the full-stack, web-framework Rails for Ruby and on putting it to good effect with Basecamp
The rise of agile development methods have raised a range of questions about their general applicability. Martin Fowler ventures his speculation in Can average developers use agile methods?:
When a new technique or tool appears, it's usually tried out first by higher ability developers. This is quite a natural response. Early adopters have to be those who are more thoughtful and caring about their profession. New approaches are usually tried by them before it's tried out on the majority.
Thus with any new approach you have to ask the question of whether this approach is only suitable for these more adventurous souls. This is an unanswerable question, because until it's tried by more average teams, you can't tell how it will work for them.
I whole-heartily agree and simultaneously think it's a speculation that could be extended to include the rise of dynamic languages, such as Smalltalk, Python, and Ruby. I have plenty of first-hand experience with the fear and mistrust with which Ruby is met with by late comers that needs and relies solely on the affirmation of mass-adoption.
As an example, I wrote about Ruby on Rails and how that duo lead Basecamp to production on 37signal's Signal vs Noise weblog recently. Immediately, I was greeted by an anonymous personification of the late comer. There was the classic categorical denial of any promise in the new:
I have a real problem believing that coding a somewhat complicated system (doesn't look like Basecamp is that complicated) in some obscure language like Ruby would be faster than in another language that has a bigger developer pool.
...and even more priceless, his inability to fathom a universe where something new is better than he knows:
This is all very strange, choosing ruby over any other tool, especially a tool aimed at web development kind of reminds me of the alternate universe with the weird superman (bizarro[sic] was his name?)...
It's a odd duality. On the one side, it would be great to see Ruby and other dynamic languages reach a level of popularity where it appeals to those addicted to affirmation of mass-adoption. This would surely mean more commercial activity and interest. But on the other hand, there's lots to treasure about operating tools and techniques that have not yet moved to the center of attention with the masses.
On attracting "higher ability developers"
For example, the Basecamp project experienced how easy it is to attract top-notch programming talent within Ruby circles. You have all these "higher ability developers", as Fowler calls them, that has a hard time finding commercial engagements with Ruby. They're forced to work in a lesser language for bread and butter while treasuring Ruby after hours.
So when a commercial opportunity in Ruby finally comes along they're particularly eager to apply. Hence, it creates much more of a buyer's market if the buyer is willing to have the system created in Ruby. Developers will take the chance to work in the language they love as at least part of the compensation and you'll get all the benefits of high motivation on top.
This flies against conventional wisdom that'll tell you that you should stick to mainstream languages or else you won't be able to attract developers.
I imagine that much the same is true with the agile methods. If you as a buyer of technology is willing to operate under agile methods and can leave the waterfall, then you'll have access to a smaller, but much higher quality pool of developers.
Who cares if there's a million programmers that know X, if all you need is a handful of competent developers that'll work smart and deliver?