Establishing Your Reward

Sun Sep 30 21:30:00 UTC 2007

Sections:

  1. Momentum
  2. Productivity
  3. Cost
  4. Ramp-up
  5. Risk
  6. Looking Ahead
  7. Executive Summary

Executive Summary

  • Guage ruby's growth: downloads, visionaries and emerging books
  • Cornerstone of ruby experience is productivity both short term and long term
  • Java's risk factors are perceived to be low because of dominant market share. (Me: is perceived the key word here?)
  • Project risk increases with time and complexity and Java fares poorly with both.
  • Java is an infrastructure language that's ill suited for many applications

3.1 Momentum

Cover's Ruby's gain in momentum.

3.2 Productivity

Bruce tried it and liked it, noticed a profound gain in productivity in a project and lightly covers it as a case study. Refers to blog http://rewrite.rickbradley.com/.

Power

Productivity of code is productivity measured per line of code. Every line of code is a burden that must be carried forward and an opportunity for bugs. 1 Ruby line does the work of 4 Java lines.

Productivity boosts by Ruby language features: *Closures *Pure object orientation *Continuations *Optional parameters *Open classes *ObjectSpace *Freezing *Message passing and missing method

Productivty boosts by Rails

  • Convention over configuration (me: I'm seeing this in maven)
  • Database strategy: Rails adds features to db interface based on its reading the schema
  • Excellent defaults pervasively
  • Rapid feedback loop
  • Built-in testing
  • Ajax

Inertia don't let old ideas of re-use hold you back from investigating new technologies.

3.3 Cost

Developers cost between 1.3x to 2x their salary, so how to improve their productivity.

Communicatin and Management Costs

Suggests the following benefits a better programming language

  • Fewer devs per project
  • less communication for small projects
  • fewer devs per project lowers mgmt cost
  • finish apps sooner, deliver to business sooner

Productivity decays rapidly as team size increases. Fewer devs means fewer mgrs. Fewer devs might mean one team, less communication, increase agility, more financial options.

Time Value of Software

A deployed application should be earning you money or saving you money. If it is under production, it is not delivering business value. If you deliver early, your solution begins to pay early and frees devs to work on next project. However, complex systems can lose productivity.

3.4 Ramp-up

Productivity Easy for beginners and experienced developers to get productive out of the box.

Education - easier to teach Higher abstractions - closer to the problem to be solved

3.5 Risk

Java's benefits are outweighed by the risks: low productivity and fragmentation.

3.6 Looking Ahead

Ruby exploding, Java stagnating, Java community pulling up stakes, Ruby productivity for its niche is staggering.