Questa settimana è stata un pò "sabbatica". Non nel senso che non ho fatto niente (così evito che i clienti che leggono il mio blog mi levino la pelle di dosso :)) ma nel senso che ho approfittato della mancanza di gente dagli uffici per riorganizzare un pò le cose dal punto di vista "burocratico", quindi codice come anche persone e cose (no, animali no :P)

Questo ha levato molto materiale al Daily Issue, ma mi ha portato a vedere ancora una volta quanto sia importante definire le priorità prima.... e quanto poco lo faccia invece quando sono preso dal caos degli uffici brulicanti di gente....

Ho visto per esempio che la release di una particolare featuure su sourcesafe era cambiata circa 20 volte... e indovinate un pò? L'ultima versione, quella che andrà in produzione a settembre, è _drammaticamente_ uguale alla prima....

Dove sta la colpa? Mah, dipende...
Io credo che il compito di sviluppatori e architetti (ma piu di questi ultimi) sia definire bene col cliente le priorità, e forzarlo ad accettare che l'interfaccia utente _non_ è una priorità .... ma che succede se si lavora con multinazionali che devono far vedere "qualsiasi cosa" agli "alti papaveri" pena la sospensione del budget? E cosa succede se questi "alti papaveri" cui non si può dire di no cambiano le cose 20 volte ed alla fine ci ripensano e si ritorna al punto di prima? Succede come è successo in questo progetto, un sacco di cambiamenti che alla fine non portano a nulla.... io personalmente dovrei esserne contento, sono comunque soldi in piu, ma il meccainsmo non mi convince :)

Casualmente, oggi avevo letto un bel post di Ayende sull'argomento, in cui c'è anche una frase con cui concordo in pieno:

I am dealing with this issue by telling the customer that if they don't give me a priority scale that I can work with, I am going to implement the system using my own prioritization method, which is based on the technical fun factor of a particular feature, and that I don't consider UI to be fun, ever.

Tranne con l'eccezione di alcune particolarità (Silverlight), l'interazione con la user interface è sempre una cosa che _odio_ fare :)