Alle tendenze che hai citato ne aggiungerei un'altra, che IMHO le spiega:
Vi sono molti più programmatori (necessari) che mai.
La quantità di attività che richiedono o includono la programmazione è in costante aumento e in una percentuale ancora maggiore rispetto al numero di programmatori. Oggigiorno ci sono diversi microchip in una macchina media. In 5 anni potrebbe esserci un chip nel tuo frigorifero e nel tuo tostapane. In 10 anni, la tua biancheria intima? ... E qualcuno ha bisogno di produrre tutto quel software per far funzionare queste cose. Quindi c'è tutto il possibile sforzo fatto per automatizzare tutto ciò che è automatizzabile e per migliorare la "produttività" (comunque è definita). E sempre più cervelli freschi vengono reclutati.
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 raggiungere un livello adeguato di esperienza e ci vuole costante apprendimento per mantenersi lì. La linea di fondo è, sempre più lavori di programmazione stanno diventando sempre meno impegnativi. Ma ci sono ancora abbastanza sfide per chiunque le stia cercando .
Lasciami fare l'avvocato del diavolo contro i tuoi punti sopra:
Not taking time to implement best practices
Molte persone no, molte persone lo fanno. Tenish 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. Oggigiorno è un materiale quasi standardizzato nelle università, così tanti neolaureati lo capiscono già.
Using other's people code as much as possible (custom code as a liability)
Contrariamente a cosa? Reinventare la ruota? O usare il codice di altre persone per evitarlo?
Penso che sia importante notare che siamo pagati (principalmente) per risolvere i problemi, e scrivere codice non è la fine, ma solo i mezzi per farlo . Se un problema può essere risolto senza scrivere una sola riga di codice, rende ancora felice il cliente. Soprattutto se in questo modo riusciremo a produrre una soluzione più affidabile più veloce ed economica. Non vedo alcun problema con questo.
Using increasingly higher level languages to improve productivity
Al contrario di codificare tutto in assemblea? ; -)
GUI based development "tools" that greatly simplify "programming" and do not require people to understand the plumbing behind the code
IMHO qualsiasi strumento può essere utilizzato in modo improprio. Il che non vuol dire che i costruttori di GUI fossero necessariamente perfetti o addirittura buoni - la maggior parte (o almeno alcuni) di essi 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 ho prove per dimostrarlo) che nei giorni della scheda perforata e del codice macchina, approssimativamente la stessa proporzione del codice esistente era orribile come ora, solo entrambi
- la quantità totale di codice e
- le possibilità che gli estranei abbiano mai visto tale codice
era molto meno.
Ora, con Internet e Daily WTF, siamo esposti ai peggiori esempi giorno dopo giorno. È un po 'come guardare tutte le notizie sul terrorismo, i terremoti e le celebrità divorziate, e gridare quanto sia pericoloso e immorale questo mondo.