Combien de langages un ingénieur logiciel doit-il apprendre ?


Assez pour expédier les produits qui les intéressent.

En général, cela nécessite au moins un langage impératif polyvalent (C++, Java, Python, etc.) pour le code du produit, un langage de script impératif pour automatiser les choses (Perl, Python, Bourne shell, PowerShell, etc.), et un système de construction déclaratif (make, cmake, buck, etc.).


Il peut s'agir d'outils supplémentaires spécifiques à la tâche à accomplir - JavaScript pour le front-end web, SQL pour les bases de données relationnelles, yacc ou bison pour la génération de parseurs, assembleur pour exploiter les fonctionnalités non standard des processeurs.

L'expérience de l'expédition de produits (cela peut prendre 15+ ans pour bien maîtriser) et la connaissance du domaine (systèmes distribués, stockage, application, embarqué, robotique) sont importantes, mais les langages spécifiques peuvent être ramassés au fur et à mesure des besoins.

Microsoft m'a engagé pour faire des systèmes distribués en C# que je n'avais jamais vu, Amazon Java que j'avais touché une fois pour un client consultant qui m'avait engagé pour résoudre les problèmes créés par leurs "programmeurs Java."

J'ai pris Tcl parce qu'il était le plus facile à intégrer à l'époque, et Python parce que c'est ce que l'entreprise utilisait. Bien que je sois un gars de logiciel système, j'ai même écrit du code produit en PHP.

De bons ingénieurs peuvent être utiles immédiatement dans de nouveaux langages, même si évidemment cela prend plus de temps d'écrire du code idiomatique propre.