I just finished reading “From Java To Ruby”, and I have to say that it was pretty good in general. One thing that did bug me about the book, however, were the following related claims:
The vast selection of frameworks for Java makes hurts developer productivity
# Ruby doesn’t have a lot of third-party frameworks, and this is one of the reasons that developers are more productive with Ruby.
First, let me say that I agree that Ruby can be an incredibly productive language for a lot of projects. I also agree that there are a dizzying number of frameworks available for Java. Also, I agree that time spent evaluating complex frameworks hurts productivity.
What I don’t agree with, however, is that the number of frameworks available for any given tasks affects my productivity when using one of those frameworks. For example, I write a lot of automation scripts using Java. The core applications in my development “toolbox” are the following:
- version control system (VCS) (e.g. mercurial)
- build manager (e.g. ant)
- logging framework (e.g. log4j)
- command-line parsing framework (e.g. jargs)
- unit testing framework (e.g. jUnit)
- text editor (e.g. vim)
For the most part, I stick to the apps in this “toolbox” unless there is a very compelling reason to try something new. This happens very, very rarely.
Why does it matter that there are a dozen different VCS apps available? Why does it matter that there are at least three other major logging frameworks available? How does that hurt my productivity?
Of course, it does take time and effort to find the right “toolbox” for your team, but that’s why we have people like head developers and team leads. They tell junior developers what they should be using so that they don’t waste any time looking for differences between Maven and Ant.
Or am I missing something?