Not too long ago, Tim Bray made a presentation at a PHP conference in Frankfurt. Several people jumped on some of the slides Tim used (see Floyd's post at InfoQ for a fairly balanced take). Everyone seemed interested in his comparison of maintainability and scalability between PHP, Rails, and Java. While I thought that was interesting (and a bit flawed, that's a topic for another post though), something else was even more interesting to me. Check out this slide (but remember while these show a ranking of the three languages, they aren't graded):
To me it's really interesting to look at the three comparisons on the right:
- Dev Speed: Rails wins here, with PHP second and Java third
- Dev Tools: Rails and PHP tie for second behind Java
- Maintainability: Rails wins here too, with Java second and PHP third
Now, I don't think there's anything wrong with good tools ... I can do a lot of fancier things in a well stocked kitchen than I can when I'm camping. When a language doesn't get in your way, they seem less important though. Maybe that's why Ruby doesn't have them yet, and why most of the Rubyists don't complain too much about it.
I asked Tim what he thought. He replied,
Your hypothesis - that tools are created in response to language/developer friction, of which Ruby clearly has less - is plausible. But there are things that I can do easily in NetBeans that would increase my productivity tremendously if I could do them in Ruby, so even if you're right about the motivation for tool-building, the quality-of-life issue is real.
When I asked him about specific tools he thought would help, he listed two
- Integrated IDE with editing/refactoring/debugging/testing all at the touch of a button.
- "Find usages" - find me all the places this method is called. That's huge because once you have it, you empower yourself to do all sorts of automated refactoring support.