Come affermato da DeMarco e Lister in Peopleware circa 20 anni fa, la stragrande maggioranza di progetti software falliti non falliscono a causa di problemi tecnici, ma problemi sociologici . Questo non è cambiato negli ultimi decenni, indipendentemente da quanto siano migliorati i nostri strumenti.
Cattiva gestione, aspettative non realistiche, incapacità di ottenere le persone giuste per il lavoro e / o non lasciare che facciano il loro lavoro, di conseguenza non riuscendo a mantenerle; luoghi di lavoro e strumenti che non sono adatti per il lavoro di sviluppo di SW; conflitti personali non gestiti; Politica ; questi sono solo alcuni dei problemi tipici che possono rendere un progetto condannato fin dall'inizio.
Why writing good code is harder?
Non sono abbastanza convinto che sia davvero più difficile scrivere un buon codice ora di quanto lo fosse decenni fa. Infatti, rispetto al codice macchina o all'assemblaggio, tutto ciò che abbiamo ora nel mainstream è molto più facile da gestire. Potremmo aver bisogno di produrne di più.
Is it only because of the mention factors, time and complexity?
Sì, la complessità ottenibile è certamente aumentata (e continua ad aumentare) man mano che aumenta la potenza dei nostri strumenti. In altre parole, continuiamo a spingere i limiti. 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 dal momento che il campo è cresciuto così enormemente, ora ci sono molti più problemi "piccoli" o "noti" rispetto a 30 anni fa. Questi problemi tecnicamente (non dovrebbero) essere (essere) una sfida più, ma ... qui entra la massima 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.
Is it that methodologies are not practiced correctly?
IMHO certamente no. DeMarco e Lister hanno alcune parole dure sulle metodologie big-M. Dicono che nessuna metodologia può far riuscire un progetto - solo le persone nel team possono farlo. OTOH le metodologie small-m che elogiano sono abbastanza vicine a quelle che ora conosciamo come "agili", che si sta diffondendo ampiamente (IMHO per una buona ragione). Per non parlare di queste buone pratiche come test unitari e refactoring, che solo 10 anni fa non erano ampiamente conosciuti, e al giorno d'oggi anche molti neolaureati lo sanno.