Ça dépend de ce que vous entendez par ingénieur logiciel. La meilleure ressource pour l'ingénierie logicielle que j'ai trouvée est l'expérience. Soyez indulgent avec moi un instant. La plupart des réponses ici semblent porter sur la programmation, et il y a en effet beaucoup d'excellentes ressources sur la programmation (avec beaucoup de bons exemples dans les réponses ici). J'ai toujours pensé que le problème se décompose en trois catégories :
- Programmation. Choisissez un langage raisonnable pour les types de problèmes que vous aimez aborder aujourd'hui. Apprenez-le bien. Beaucoup de pratique. Beaucoup de lecture du code d'autres experts respectés. Ecrivez un peu plus. Ajoutez un langage selon vos besoins ou votre intérêt.
- Algorithmes, structures de données, langages comparatifs, et l'ensemble des connaissances généralement désignées sous le nom d'informatique. C'est ce qui élève le jeu de la résolution de problèmes dans le petit, à la résolution de grands problèmes, les résoudre efficacement (pas seulement efficacement), et comprendre les limites des solutions afin que vous puissiez les expliquer.
- Le "génie logiciel" est une chose différente pour moi que les deux idées ci-dessus. C'est le processus par lequel les logiciels sont livrés aux "clients". C'est la livraison cohérente, répétable et fiable de la solution. C'est la compréhension qu'une interface graphique est agréable pour construire des solutions initiales de preuve de concept/prototype sur votre bureau, mais insuffisante pour livrer en "production". C'est la compréhension du pipeline de livraison à chaque étape, et la raison pour laquelle chaque étape est réalisée. C'est toute l'automatisation et la discipline. Sans discipline, le logiciel n'évolue pas. Je n'ai pas encore vu de cours sur ce sujet, car la plupart du temps, il s'agit d'une formation sur le tas. Et beaucoup d'endroits se trompent à ce sujet. Les erreurs sont coûteuses.
Peut-être que la meilleure métaphore que je peux vous donner est la cuisine. Vous pouvez apprendre à cuisiner pour vous-même assez rapidement. Vous pouvez devenir bon dans une poignée de recettes et la pratique vous rend rapide. Passez à la préparation d'un repas raffiné pour vos amis et votre famille et vous sortez un peu de votre zone de confort, vous avez peut-être besoin de nouvelles compétences, de nouveaux outils, de nouvelles recettes. Prenez un cours ou deux et vous pourrez améliorer considérablement votre jeu, et les cours vont des cours du soir à l'université locale au Cordon Bleu. Puis il y a le passage au "restaurant" qui change tout. Il s'agit maintenant de fournir de la nourriture de manière fiable et répétable à des gens qui ont des attentes. Les sources d'approvisionnement, les lots, les étapes préalables, la préparation et les outils sont différents. L'"industrialisation" du processus est "l'ingénierie". Et vous faites maintenant partie d'une équipe. Et il y a un client. Peu importe que vous soyez un stand de tacos ou un restaurant étoilé au Michelin, c'est différent. Aucune quantité de travail en classe ne vous prépare pleinement à tout l'apprentissage sur le tas.
Et vous pouvez commencer à apprendre les trois à la fois. Il suffit de comprendre lequel des trois ensembles de compétences vous travaillez, et ne pas oublier les deux autres ensembles de compétences. Les deux premiers ont tendance à venir avec la pratique, mais le dernier vient avec l'expérience.
.