[ruby-it] Ruby success :D

Andrea Campi andrea.campi a zephirworks.com
Gio 19 Feb 2009 10:56:21 CET


Ciao,

On 2/18/09 3:24 PM, Giovanni Nicolazzo wrote:
> Diciamo che da parte dell'azienda non ci sono le porte chiuse a priori, anche
> se è comprensibile una scelta conservativa. Per questo le motivazioni devono
> essere forti in termini di:
> - standardizzazione del software
> - rapidità di sviluppo
> - testing/affidabilità
> - maturità del framework/linguaggio utilizzato
> - mantenibilità
> - scalabilità.
> Sono abbastanza sicuro che su 4 di questi 6 punti se non si considerano le
> prestazioni ruby/rails sia superiore a java+eventuali frameworks.
>    
parlo da grande fan di Ruby on Rails e da co-fondatore di una società 
che lavora quasi esclusivamente in Ruby on Rails. Ma...
Mi sembra azzardato affermare a priori che RoR superi Java in 4 su 6 di 
quei criteri...

Sicuramente per quanto riguarda la rapidità di sviluppo è vero; a parità 
di esperienza, un novizio RoR sarà più produttivo di un novizio Java, un 
esperto RoR più produttivo della sua controparte. Questo è in effetti 
uno dei miei criteri di scelta.

Riguardo al testing, è una bella lotta. JUnit è tanto una costante nello 
sviluppo Java quanto il testing lo è in RoR; quest'ultimo rende più 
semplice scrivere integration test, ma anche per Java sono disponibili 
tool. Emma è infinitamente superiore a RCov, ed esistono strumenti 
analoghi a Cucumber anche nel mondo Java. Infine non parliamo neanche di 
debugger, e come profiler YourKit è mille volte meglio di quel poco che 
Rails offre.
Detto questo, cmq RoR si difende a mio avvisto perché rende semplice e 
quasi piacevole scrivere test, e questo va sicuramente a vantaggio.
Per quanto riguarda l'affidabilità... beh, difficile muovere critiche a 
Java in quest'ambito, mentre a Rails si può fare più di un appunto.

Standardizzazione, maturità, scalabilità inutile toccarli, Java vince di 
larga misura; anche i maggiori framework web sono altrettanto o più 
maturi di RoR.

Sulla mantenibilità si potrebbe discutere; entrambi i linguaggi hanno i 
loro meriti.

A conti fatti, mi sembra che si possano assegnare a RoR 2 vittorie, 2.5 
ad essere buoni.

Secondo me però ci sono altri aspetti da considerare: la produttività si 
porta appresso anche il fatto che sia più piacevole lavorare con RoR, il 
che rende più produttivi (circolo virtuoso) e più inclini al testing; ma 
soprattutto è un vantaggio di per se. Non siamo macchine, dobbiamo 
essere soddisfatti di quel che facciamo, e un dipendente soddisfatto è 
un dipendente che rimane sul progetto e lo porta a termine.

Poi, detto molto brutalmente: è difficile trovare sviluppatori Java 
bravi; e uno sviluppatore Java mediocre ha produttività netta negativa 
[1]. E' altrettanto difficile trovare sviluppatori RoR bravi, ma uno 
sviluppatore mediocre tendenzialmente fa meno danni, perchè la struttura 
del progetto è più semplice e fare un giro di pulizia e refactoring è 
più facile.

Infine RoR in qualche modo incentiva l'adozione di metodi agili, XP e 
peer programming; e questo contribuisce a migliorare i risultati, e 
anche a migliorare la qualità del lavoro e la produttività del famoso 
sviluppatore mediocre di cui sopra.


Tutto questo ovviamente IMHO, e senza nulla togliere a Java; so 
benissimo che molti sviluppatori Java sono bravi, fanno XP e si divertono :)

ciao,
     Andrea

1: se non leggete Jay Fields fatelo, 
http://blog.jayfields.com/2009/01/cost-of-net-negative-producing.html


More information about the Ml mailing list