Ciao,
On 2/18/09 3:24 PM, Giovanni N. 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