Pain, and still no gain.

Jamie Andreas è un fighissimo maestro di chitarra, uno che è
veramente in grado di insegnarti come suonare la chitarra. Non che lo
conosca personalmente, ma solo dai suoi ottimi e numerosi scritti. Sulla sua
mailing list stamattina:

Hello Jamie,


I remember asking my high school band teacher (who I thought was a great guitar player) if it was possible for anyone (me) to become a good player. He assured me that “Yes” it was and it just depended on how hard you work at it.

… your teacher is wrong. Actually, your teacher is half right, but there is nothing more untrue than half of the truth!

Now, the reason your high school teacher was wrong is because you can work as hard as you want, but if you are working the wrong way, you will go nowhere. It doesn’t matter how fast I drive, if I am on the wrong road I will not get where I want to go! Now, I agree, it is better to keep going, no matter what, than to give up. There is always the chance you will come upon the right knowledge, the right teaching, the right road. Then, you can put the other half of the truth with what your teacher said, and fulfill the two requirements of success in anything: do the right thing, and do enough of it.

Questo mi fa venire in mente certi sviluppatori che lavorano 10 o più ore al giorno, e comunque consegnano tutto in ritardo e con tanti difetti. Non serve lavorare tanto, serve lavorare bene. Tempo fa raccontavo di questo mio cliente che mi diceva:

Guarda Pino, lui sì che si impegna! Sta su fino a notte tarda tutte le sere!

Il mio amico che ascoltava (lui stesso un dirigente) ha esclamato “uno che fa tardi tutte le sere è un pirla! E’ uno che non si sa organizzare“.

Sono tornato spesso col pensiero a questo Pino (non è il suo vero nome) e
alla sua famiglia che lo aspetta a casa fino a tardi. Ho ripensato al lavoro
che gli ho visto fare, e ho trovato due cose.

Prima di tutto, Pino fa un sacco di cose che proprio non sono
necessarie
. Per esempio, aggiungere a un database dei vincoli che non
servono a supportare nessuna delle cose che il cliente ha chiesto; vincoli che
poi risultano errati e vanno tolti, con il risultato che tutti perdono un
sacco di tempo. Oppure complicare l’applicazione per “renderla più sicura”,
senza avere ben chiaro qual’è il modello della minaccia da cui
vogliamo difenderci e comunque senza un’esplicita richiesta da parte del
cliente
.

La seconda cosa è che Pino non automatizza nulla. I programmatori pragmatici mi
hanno insegnato che qualunque operazione vada fatta più volte (per esempio:
creare un nuovo database, fare il rilascio di un’applicazione) deve essere
realizzata con un solo
comando
. Per esempio make install, o ant
create-database
. Se non ti crei uno script per fare operazioni
complicate, finisce che perdi un sacco di tempo non solo a ripetere
manualmente le operazioni, ma anche a ricordarti di preciso come bisognava
farle, a controllare che siano state fatte correttamente, a correggere gli
inevitabili errori che si fanno quando si deve ripetere manualmente una
sequenza di operazioni.

Cerchiamo di non fare come Pino. Basta seguire due semplici regole: tutto
quello che si fa, è per implementare una storia che
mi è stata data dal cliente. E tutte le operazioni ripetitive
vanno automatizzate.

]]>

Leave a Reply