Alle tendenze che menzioni ne aggiungerei un'altra, che IMHO le spiega:
Ci sono molti più programmatori (necessari) che mai.
La quantità di compiti che richiedono o includono la programmazione è in costante aumento e ad un ritmo persino superiore rispetto al numero di programmatori. Oggi ci sono diversi microchip in un'auto media. Tra 5 anni potrebbe esserci un chip nel tuo frigorifero e nel tuo tostapane. Tra 10 anni, la tua biancheria intima? ... E qualcuno deve produrre tutto quel software per farlo funzionare. Quindi c'è ogni sforzo possibile per automatizzare tutto ciò che è automatizzabile e per migliorare la "produttività" (comunque sia definita). E vengono reclutati sempre più cervelli freschi.
Ciò implica che la maggior parte dei programmatori attivi di oggi sono inesperti e / o mal preparati per il loro lavoro. Ci vogliono diversi anni per arrivare a un livello adeguato di esperienza e ci vuole un apprendimento costante per rimanere lì. La linea di fondo è che sempre più lavori di programmazione stanno diventando sempre meno impegnativi. Ma ci sono ancora abbastanza sfide per chiunque le stia cercando .
Lasciami giocare l'avvocato del diavolo contro i tuoi punti sopra:
Non prendere tempo per attuare le migliori pratiche
Molte persone non lo fanno, molte persone lo fanno. Dieci anni fa, quando ho scoperto per la prima volta i test unitari e l'approccio agile, nessuno dei miei colleghi aveva la minima idea di cosa fosse. Oggi è quasi materiale standard nelle università, quindi molti neolaureati lo capiscono già.
Utilizzare il codice di altre persone il più possibile (codice personalizzato come responsabilità)
Al contrario di cosa? Reinventare la ruota? O usando il codice di altre persone per evitarlo?
Penso che sia importante notare che siamo pagati (principalmente) per risolvere i problemi, e scrivere codice non è il fine, ma solo il mezzo per farlo . Se un problema può essere risolto senza scrivere una singola riga di codice, rende comunque felice il client. Soprattutto se in questo modo riusciamo a produrre una soluzione più affidabile più veloce ed economica. Non vedo alcun problema con quello.
Utilizzo di linguaggi di livello sempre più elevato per migliorare la produttività
Al contrario di codificare tutto in assembly? ;-)
"Strumenti" di sviluppo basati sulla GUI che semplificano notevolmente la "programmazione" e non richiedono alle persone di comprendere le tubature alla base del codice
IMHO qualsiasi strumento può essere utilizzato in modo improprio. Il che non vuol dire che i costruttori della GUI fossero necessariamente perfetti o addirittura buoni - la maggior parte (o almeno alcuni) di loro sono utilizzabili nei loro limiti. Ma se qualcuno non conosce questi limiti, è un problema dello strumento o del suo utente?
In generale, credo (anche se non ci sono prove per dimostrarlo) che ai tempi delle schede perforate e dei codici macchina, approssimativamente la stessa proporzione del codice esistente era orribile come ora, solo entrambi
- la quantità complessiva di codice e
- le possibilità che gli estranei vedano mai tale codice
era molto molto meno.
Ora, con Internet e il Daily WTF, siamo esposti ai peggiori esempi giorno dopo giorno. È un po 'come guardare tutte le notizie sul terrorismo e i terremoti e divorziare dalle celebrità e gridare quanto sia diventato pericoloso e immorale questo mondo.