Casualmente mi imbatto in un post di Mauro Servienti dall'intrigante titolo "I dev dovrebbero". Il punto che emerge è che il codice--almeno nella maggior parte dei casi--influisce per una piccola parte sul successo del progetto.
Chiaramente Mauro generalizza, e di sicuro non si può dire che l'affermazione sia un falso storico. Il commento più appropriato al solito sarebbe il classico "Dipende". Tuttavia la ragione che mi spinge a commentare in un altro post è che nel primo capitolo della nuova edizione di MS .NET Architecting Applications for the Enterprise (casualmente nel momento in cui scrivo #7 su Amazon tra i libri .NET a cinque anni--cinque--dalla pubblicazione) c'è un riferimento al ruolo del codice nel successo di un progetto.
If you ask the question "What does make projects fail?" then probably the most common answer you receive will trace failures back to business-related issues such as missing requirements, inadequate project management, wrong cost estimates, lack of communication and even incompatibility between people in the various teams. You hardly see the perception that bad code may hurt. #naa4e
E' interessante notare come Mauro faccia in un commento l'esempio della centralina di un'automobile--per chi è importante la realizzazione tecnica. Ecco, la ciccia sta tutta qua.
Un'autovettura non si sfascia quasi mai; solo rarissimamente ha bugs e come nel software il bug si aggiusta. A differenza del software, un'autovettura rimane quella, funziona e non richiede cambiamenti al motore e i cambiamenti fatti alla carrozzeria sono disaccoppiati dal motore.
Ma se un'auto dovesse essere rimontata spesso, aggiustata di continuo, fatta evolvere ... beh anche la centralina avrebbe il suo perché.
L'auto è in un certo senso code-that-just-works. Purché funzioni, ci si può accontentare anche del primo livello di maturità CMMI--basta funziona. E--facile battuta gratuita--le macchine tedesche hanno di solito un livello CMMI più alto di altre macchine. Ma se devi metterci le mani dentro anche la qualità del codice ha un costo; anzi soprattutto la qualita del codice è il costo.