Meilleure réponse
La vraie réponse est «Cela dépend!». Cela dépend de la tranche qui vous intéresse le plus – Front-end, Full-stack, Backend, Data-science, etc. La base de tout cela peut être résumée comme ci-dessous:
- Choisissez votre favori langage de programmation. Et apprenez chaque concept de ce langage en vous entraînant à lutiliser dans un problème de code ou un autre. Cela jettera une bonne base dans l’apprentissage d’un autre langage de programmation, même si son paradigme est complètement différent. Pour apprécier A, il faut avoir le goût de B, car dans un certain sens tout est relatif. Vous commenceriez à comparer les langues en fonction de la façon dont cela résout certains problèmes.
- Codez les katas. Essayez de résoudre le même problème de différentes manières. Réfléchissez aux différentes approches que vous avez essayées. Faites ceci pour tous les autres kata de code que vous faites. Ça aide!
- Faites un mini-projet pour résoudre un problème. Revisitez-le après un certain temps et voyez si vous pouvez ajouter des fonctionnalités. Vous devriez probablement vous maltraiter pour le mauvais travail que vous avez fait. Cest une bonne réalisation. Réfléchissez à vos erreurs, réfléchissez à la meilleure façon de procéder. Apprenez de vos erreurs. Voilà ce quest la vraie expérience. Lexpérience nest pas en nombre, mais ce que vous apprenez en travaillant sur les choses.
- Choisissez un mini-projet ou un code de bibliothèque sur Github et lisez le code pour voir comment un problème est résolu. Lire et réfléchir au code des autres en aide.
- Lisez des livres, des blogs, etc.
- Commencez à écrire vos pensées via les blogs. Cela facilite votre apprentissage à coup sûr.
- Assistez à des rencontres et à des conférences pour vous familiariser avec ce qui se passe. Cela pourrait induire votre apprentissage. Après tout, nous avons tous besoin dune dose de motivation et dun sens du but induits de temps en temps.
- Essayez de partager vos apprentissages lors de rencontres et de conférences. Cela fait de la magie sur vous – sérieusement.
Astuce spéciale: ai-je mentionné, en cours de route, que vous rencontrerez probablement de nombreux farceurs qui saperaient votre énergie et votre temps, vous décourageant de que faites vous. Apprendre à différencier les critiques des farceurs est un énorme sauvetage.
Cest ce que jai fait depuis le début de ma carrière et je continue à tout faire, même aujourdhui.
Réponse
Cela dépend de ce que vous entendez par ingénieur logiciel. L’expérience est la meilleure ressource en génie logiciel que j’ai trouvée. Restez avec moi un instant. La plupart des réponses ici semblent concerner la programmation, et il y a en effet beaucoup dexcellentes ressources sur la programmation (avec beaucoup de bons exemples dans les réponses ici). Jai toujours pensé que le problème se décomposait en trois catégories:
- Programmation. Choisissez un langage raisonnable pour les types de problèmes que vous aimez aborder aujourdhui. Apprenez-le bien. Beaucoup de pratique. Beaucoup de lecture dautres codes dexperts respectés. Écrivez un peu plus. Ajoutez un langage selon vos besoins ou selon vos intérêts.
- Algorithmes, structures de données, langages comparatifs et corpus de connaissances généralement appelé informatique. Cest ce qui soulève le jeu de la résolution de problèmes dans les petits, à la résolution de gros problèmes, en les résolvant efficacement (pas seulement efficacement), et en comprenant les limites des solutions afin que vous puissiez les expliquer.
- «Ingénierie logicielle »Est pour moi une chose différente des deux idées ci-dessus. C’est le processus par lequel le logiciel est livré aux «clients». Cest une livraison fiable et répétable cohérente de la solution. Il comprend qu’une interface graphique est utile pour créer des solutions de démonstration / prototypes initiales sur votre bureau, mais insuffisante pour la mise en «production». Il sagit de la compréhension du pipeline de livraison à chaque étape et de la raison pour laquelle chaque étape est effectuée. Cest toute lautomatisation et la discipline. Sans discipline, le logiciel n’est pas évolutif. Je n’ai pas encore vu de cours sur ce sujet, car il s’agit pour la plupart d’une formation en cours d’emploi. Et beaucoup dendroits se trompent. Les erreurs coûtent cher.
La meilleure métaphore que je puisse vous donner est peut-être la cuisine. Vous pouvez apprendre à cuisiner vous-même assez rapidement. Vous pouvez devenir bon dans une poignée de recettes et la pratique vous rend rapide. Intensifiez-vous pour cuisiner un repas raffiné pour vos amis et votre famille et vous sortez un peu de votre zone de confort, ayant peut-être besoin de nouvelles compétences, de nouveaux outils, de nouvelles recettes. Prenez un cours ou deux et vous pouvez considérablement améliorer votre jeu, et les cours couvrent tout, des cours du soir au collège local au Cordon Bleu. Ensuite, il y a létape du «restaurant» qui change tout. Il s’agit désormais de livrer de manière fiable et reproductible de la nourriture aux personnes qui ont des attentes. Vous approvisionnez, fournissez, préparez, préparez et utilisez différemment. «Lindustrialisation» du procédé est «lingénierie». Et vous faites maintenant partie dune équipe. Et il y a un client. Peu importe que vous soyez un stand de tacos ou un restaurant étoilé au guide Michelin, c’est différent. Aucun travail en salle de classe ne vous prépare pleinement à tout lapprentissage en cours demploi.
Et vous pouvez commencer à apprendre les trois à la fois. Comprenez simplement sur lequel des trois ensembles de compétences vous travaillez et n’oubliez pas les deux autres ensembles de compétences. Les deux premiers ont tendance à venir avec la pratique, mais le dernier vient avec lexpérience.