Ho trovato che i grandi progetti multi-programmatori e pluriennali sono meglio serviti con una sola lingua, mentre i piccoli progetti di una sola persona sono meglio serviti con una politica "qualunque cosa funzioni".
Il problema è la manutenzione e l'introduzione di nuovi programmatori. Se hai un progetto di grandi dimensioni che abbraccia molti anni, hai un investimento significativo nel codice base. Quando recluti persone puoi reclutare persone che conoscono la singola tecnologia utilizzata dal tuo progetto. I programmatori che non lo sanno, possono impararlo. Se hai un progetto che utilizza 10 diverse tecnologie, ognuna delle quali è la migliore in quello che fa, avrai una situazione in cui alcuni programmatori non possono lavorare su alcune parti, altrimenti sarai solo in grado di assumere persone che conosci tutte le tecnologie di base.
Se hai un piccolo progetto, le uniche tecnologie che usa saranno quelle note allo sviluppatore solista. Questo è un disastro da mantenere nel tempo. Le probabilità sono, tuttavia, che non sarà necessario mantenerlo.
Abbiamo avuto un progetto che è cresciuto da piccolo a grande. All'anno 4 ci siamo resi conto che avevamo scritto codice in C ++, Java, Python, Perl e SQL. Abbiamo utilizzato tutti i sistemi di comunicazione interprocessi disponibili in Unix. Abbiamo trovato quasi impossibile assumere persone e, quando lo facevamo, non potevano funzionare sulla maggior parte della nostra base di codice. Le cose non hanno funzionato bene.