Quante lingue dovrebbe imparare un ingegnere del software?

Basta per spedire i prodotti che gli interessano.

Di solito questo richiede almeno un linguaggio imperativo generico (C++, Java, Python, ecc.) per il codice del prodotto, un linguaggio di scripting imperativo per automatizzare le cose (Perl, Python, Bourne shell, PowerShell, ecc.), e un sistema di compilazione dichiarativo (make, cmake, buck, ecc.).

Può significare strumenti aggiuntivi specifici per il compito da svolgere - JavaScript per il front-end web, SQL per i database relazionali, yacc o bison per la generazione di parser, assemblatore per sfruttare le caratteristiche non standard del processore.

L'esperienza nella spedizione di prodotti (ci possono volere più di 15 anni per ottenere una buona gestione) e la conoscenza del dominio (sistemi distribuiti, storage, applicazioni, embedded, robotica) sono importanti, ma i linguaggi specifici possono essere presi su una base di necessità.

Microsoft mi ha assunto per fare sistemi distribuiti in C# che non avevo mai visto, Amazon Java che avevo toccato una volta per un cliente consulente che mi aveva assunto per risolvere i problemi creati dai loro "programmatori Java."

Ho preso Tcl perché era più facile da incorporare al momento, e Python perché è quello che l'azienda usava. Anche se sono un tipo da software di sistema, ho anche scritto codice di prodotto in PHP.

I buoni ingegneri possono essere immediatamente utili in nuovi linguaggi, anche se ovviamente ci vuole più tempo per scrivere codice idiomatico pulito.