Ruby productivity question

After a moderate amount of quite enjoyable time working with Ruby, I find
myself with a broad-ish question:

In terms of net productivity at the end of the day/month/year,
how does developing in Ruby without a rich set of integrated
development tools compare to developing in (say) Java with the
full set of tools provided by (say) Eclipse?

I think of “Net productivity” as some combination of how quickly I can have
a solid-enough solution to a medium sized problem, and how effectively I can
evolve that solution over time.

It’s a lousy metric, but I’d characterize medium-sized as 1k-10k lines of
Ruby code, and exclude library size.

The tools could include things like debuggers, editors, versioning, cm,
build tools, testing tools, ui tools, refactoring tools, even fanciers
aspect identification/extraction/etc. tools.

I realize this depends in large part on the individual’s (or team’s) ability
to put together tools that might not not otherwise come ‘integrated’, or to
make effective use of those tools that do come integrated. And I also
realize this depends quite a bit on project characteristics. Likewise, I
realize that some more integrated Ruby tools might be becoming available
’soon’.

I am not playing flame-bait, and have no bias one way or the other. I would
love to learn from others’ views, specially those that are backed by
experience.

Thanks!

Interesting question, but I think it contains some assumptions that
might be questioned.

When I develop larger Ruby applications (10,000+ lines), I just use an
editor, one that has the ability to execute shell commands. So, a
development cycle is typically

  1. Edit a few lines
  2. Write a test
  3. Hit F11 to run all the tests
  4. if (rand < .9) go back to 1
  5. Try out the application
  6. Goto 1

If it’s a web application, then step 5 basically means hitting refresh
on the browser session I leave running: my checked out CVS directory
will be symlinked into Apache’s tree, so I just run the code I’m
editing.

The only think I miss from an IDE is the ability to check the callers
of a method: I have to run grep from inside my editor to do that.

I haven’t used a debugger in 5+ years, so I’m not sure what I’m missing
that would make me more productive in an IDE. The last time I went on a
serious Ruby coding streak, I churned out 35kloc in 6 weeks.

Cheers

Dave

···

On May 13, 2004, at 10:28, Its Me wrote:

In terms of net productivity at the end of the day/month/year,
how does developing in Ruby without a rich set of integrated
development tools compare to developing in (say) Java with the
full set of tools provided by (say) Eclipse?

I think of “Net productivity” as some combination of how quickly I can
have
a solid-enough solution to a medium sized problem, and how effectively
I can
evolve that solution over time.

“Dave Thomas” dave@pragprog.com wrote in message

I haven’t used a debugger in 5+ years, so I’m not sure what I’m missing
that would make me more productive in an IDE. The last time I went on a
serious Ruby coding streak, I churned out 35kloc in 6 weeks.

That’s a great experience-based example, from arguably one of the best
software and Ruby persons around :slight_smile:

How would that compare to what you might accomplish (your best guess if
needed, assuming you were comparably fluent) in Java/Eclipse?

And what are your thoughts on the broader set of potential tools? cm, build,
testing (unit, fit, ui testing), ui, refactoring, even fanciers aspect
identification/extraction/etc. tools.

“Dave Thomas” dave@pragprog.com schrieb im Newsbeitrag
news:C81677C8-A4F4-11D8-B9A1-000A95676A62@pragprog.com

I haven’t used a debugger in 5+ years, so I’m not sure what I’m missing
that would make me more productive in an IDE. The last time I went on a
serious Ruby coding streak, I churned out 35kloc in 6 weeks.

Interestingly enough I never used the debugger, too. irb and tests cover
pretty well for what I’d have to use a debugger when using other
languages.

Kind regards

robert

What is the general philosophy around logging in ruby? I haven’t heard
much regarding it.

Also, from what you write, as a rough metric you are 4 times more
productive in Ruby then Java. Is that an accurate summation?

Also, I’d be interested in you general perception of IDEs vs.
classic-Unix tool chains when dealing with inherited, convoluted Java
code with poor logging and no tests.

Thanks,
Nick

Dave Thomas wrote:

···

On May 13, 2004, at 10:28, Its Me wrote:

In terms of net productivity at the end of the day/month/year,
how does developing in Ruby without a rich set of integrated
development tools compare to developing in (say) Java with the
full set of tools provided by (say) Eclipse?

I think of “Net productivity” as some combination of how quickly I
can have
a solid-enough solution to a medium sized problem, and how
effectively I can
evolve that solution over time.

Interesting question, but I think it contains some assumptions that
might be questioned.

When I develop larger Ruby applications (10,000+ lines), I just use an
editor, one that has the ability to execute shell commands. So, a
development cycle is typically

  1. Edit a few lines
  2. Write a test
  3. Hit F11 to run all the tests
  4. if (rand < .9) go back to 1
  5. Try out the application
  6. Goto 1

If it’s a web application, then step 5 basically means hitting refresh
on the browser session I leave running: my checked out CVS directory
will be symlinked into Apache’s tree, so I just run the code I’m editing.

The only think I miss from an IDE is the ability to check the callers
of a method: I have to run grep from inside my editor to do that.

I haven’t used a debugger in 5+ years, so I’m not sure what I’m
missing that would make me more productive in an IDE. The last time I
went on a serious Ruby coding streak, I churned out 35kloc in 6 weeks.

Cheers

Dave

How would that compare to what you might accomplish (your best guess if
needed, assuming you were comparably fluent) in Java/Eclipse?

My Java productivity is roughly comparable, in terms on lines of code.
However, I probably need 4 lines of Java code to do what I can do in
one line of Ruby. That means that Java only becomes more productive for
me if it has existing libraries that I could otherwise write.

Interestingly, there’s a growing awareness in the Java communities that
the libraries have gotten out of hand, and that they’re now introducing
drag on many projects. EJB 3.0, for example, is going lighter weight.
Containers such as Spring make Java more Ruby-like in terms of the way
you can dynamically knit things together.

The long and the short of it is that for the kind of projects I do,
Ruby makes me productive that Java, but for others that might not be
the case.

And what are your thoughts on the broader set of potential tools? cm,
build,
testing (unit, fit, ui testing), ui, refactoring, even fanciers aspect
identification/extraction/etc. tools.

I don’t know about CM in general: I dislike most of the fancier CM
tools that incorporate workflow. I like SVC and/or subversion: they
don’t get in my way. Build is ‘make’ for me (although in Ruby projects
I use it for creating database schemas, documentation, and general
maintenance, rather than building). Unit Testing is Test::Unit
(although I sometimes wish for something more Ruby-like). I’m not sold
on Fit (even though I wrote the Ruby version of it). I don’t do UI
work.

Refactoring is interesting. I do it in Ruby, and the biggest problem is
always renaming stuff. Otherwise, many of the problems you get when
refactoring (say) Java just don’t happen in Ruby, so I don’t miss not
having support in an IDE.

Cheers

Dave

···

On May 13, 2004, at 11:33, Its Me wrote: