Come affermato da DeMarco e Lister in Peopleware circa 20 anni fa, la stragrande maggioranza dei progetti software falliti non fallisce a causa di problemi tecnici, ma di problemi sociologici . Questo non è cambiato negli ultimi decenni, non importa quanto siano migliorati i nostri strumenti.
Cattiva gestione, aspettative non realistiche, non riuscire a trovare le persone giuste per il lavoro e / o non lasciare che facciano il loro lavoro, di conseguenza non riescono a mantenerle; luoghi di lavoro e strumenti non adatti allo sviluppo di SW; conflitti personali non gestiti; politica ; questi sono solo alcuni dei problemi tipici che possono rendere un progetto condannato dall'inizio.
Perché scrivere un buon codice è più difficile?
Non sono del tutto convinto che sia davvero più difficile scrivere un buon codice ora rispetto a decenni fa. In effetti, rispetto al codice macchina o all'assemblaggio, tutto ciò che abbiamo ora nel mainstream è molto più facile da gestire. Solo potremmo aver bisogno di produrne di più.
È solo a causa dei fattori di menzione, tempo e complessità?
Sì, la complessità raggiungibile è certamente aumentata (e continua ad aumentare) all'aumentare della potenza dei nostri strumenti. In altre parole, continuiamo a spingere i confini. Il che per me si traduce in modo che sia altrettanto difficile risolvere le più grandi sfide di oggi come lo era 30 anni fa per risolvere le più grandi sfide di quel giorno.
OTOH da quando il campo è cresciuto così enormemente, ora ci sono molti più "piccoli" o "noti" problemi rispetto a 30 anni fa. Questi problemi tecnicamente non dovrebbero (essere) più una sfida, ma ... qui entra nella massima di cui sopra :-(
Anche il numero di programmatori è cresciuto enormemente. E almeno la mia percezione personale è che il livello medio di esperienza e conoscenza è diminuito, semplicemente perché ci sono molti più giovani che arrivano continuamente sul campo di quanti siano gli anziani che potrebbero educarli.
Le metodologie non sono praticate correttamente?
IMHO certamente no. DeMarco e Lister hanno alcune dure parole sulle metodologie big-M. Dicono che nessuna metodologia può far funzionare un progetto, solo le persone del team possono farlo. OTOH le metodologie di piccole dimensioni che elogiano sono abbastanza vicine a ciò che ora conosciamo come "agile", che si sta diffondendo ampiamente (IMHO per una buona ragione). Per non parlare di buone pratiche come i test unitari e il refactoring, che solo 10 anni fa non erano ampiamente conosciuti, e oggigiorno anche molti laureati lo sanno.