Nel corso dei miei anni di esperienza:
- Le lingue sono cambiate (di solito relativamente lentamente).
- La gamma di problemi che possono essere praticamente risolti è cresciuta (un po 'più velocemente);
- Le dimensioni e la complessità delle soluzioni sono aumentate (relativamente rapidamente);
- C'è stato qualcosa che è
flavor of the day
(a volte buono, spesso cattivo).
Come notato in una discussione sugli schemi, la banda di quattro non ha inventato schemi. Hanno escogitato una terminologia e modelli per soluzioni che erano già state applicate.
A differenza di molti altri campi, c'è ancora molto che non è pratica comune. Ho visto un sacco di cose all'avanguardia che vanno e vengono. Molti di questi stavano riformulando tecniche già in pratica e quelle di solito riuscivano in una certa misura. Altri sono più o meno andati via, e la maggior parte dove nuovi approcci. (Qualcuno ha visto una lingua di quinta generazione ultimamente?)
I programmatori che ho visto più efficaci possono selezionare e assemblare componenti collaudati in una soluzione funzionante. Ciò comporta raramente qualcosa di all'avanguardia, che generalmente aumenterebbe il rischio del progetto. La capacità di basarsi sul lavoro che è già stato fatto, ci consente di aumentare la portata di ciò che è possibile.
I linguaggi di programmazione tendono a cadere in relativamente poche famiglie. La familiarità con una lingua in una famiglia semplifica il lavoro con lingue simili. Comprendere le librerie disponibili nella lingua e sfruttarle può aumentare notevolmente la produttività e l'affidabilità. In generale, sceglierei una lingua più vecchia con librerie appropriate rispetto a una lingua più recente senza librerie appropriate.
Quando si applicano le nuove tecnologie è importante evitare la Because We Can
sindrome. L'aggiunta di una nuova tecnologia perché è il sapore dell'anno, tende a causare più problemi di quanti ne risolva. Sapere quando la tecnologia risolverà un problema reale e quando aggiungerà solo complessità è un'abilità utile.
Un programmatore davvero bravo risolverà i nuovi problemi e utilizzerà le soluzioni esistenti per il resto. Poche aziende hanno bisogno di tecnologie all'avanguardia, tutte hanno bisogno di soluzioni solide.
Di solito mi pento di essere scivolato lungo la lama del rasoio. Non ricordo di essermi mai pentito di aver usato una tecnologia collaudata. Tuttavia, molto di ciò che viene descritto new
è il riconfezionamento di qualcosa di esistente. Di solito, questo riconfezionamento semplifica la comprensione e l'applicazione delle cose.