Je tiens à dire tout de suite que je n'ai jamais rencontré quelqu'un qui connaisse parfaitement le C++. Je doute que même Björn Straustrup connaisse 100% du C++. La question de savoir si la sémantique C++ peut être formalisée, c'est-à-dire si elle est mathématiquement réalisable, fait l'objet d'un débat sérieux.
Quoi qu'il en soit, il y a cinq choses auxquelles vous devez prêter attention pour devenir un expert dans le domaine de la programmation informatique. Je ne veux pas vous induire en erreur et je ne vais donc pas suggérer quelque chose que je n'ai pas essayé moi-même.
Tout d'abord, vous devez programmer beaucoup, beaucoup. Essayez de travailler sur des projets différents. Parmi tous les éléments clés et les plus utiles auxquels il faut prêter attention, le plus important est ce que l'on appelle le "design pattern". C'est l'art d'inventer des noms pour des choses que vous connaissez déjà. Cela vous apportera beaucoup de bonnes idées. Mais le plus important est que vous deviendrez ainsi un expert dans ce que vous faites. Travaillez sur des projets libres et ouverts. Créez vos propres projets pour le plaisir. Encore et encore.
Le deuxième aspect le plus important est une compréhension approfondie des algorithmes et de la programmation en général. La programmation est un mélange très inhabituel de mathématiques et de logique. Étudiez l'algèbre de la logique, mais pas seulement les bases, mais l'ensemble du système. Comprendre comment la logique peut être appliquée à l'algèbre. Étudier les algorithmes et les structures de données, les graphes et la théorie des ensembles. Étudier la complexité et l'optimisation des algorithmes ainsi que les mathématiques discrètes. La maîtrise des systèmes numériques ne sera pas non plus superflue. Ce sont plus que des moyens d'apprendre à programmer, ce sont des moyens de comprendre le fonctionnement de vos programmes.
La troisième consiste à comprendre le fonctionnement du matériel informatique. C'est la partie que la plupart des programmeurs négligent ; et, à cause de cela, beaucoup de choses sont perdues. Essayez de travailler sur "Arduino" (une plateforme open-source conçue pour développer rapidement et facilement une variété d'appareils électroniques). Écrivez quelque chose pour cette plateforme.
La compréhension des personnes est le quatrième aspect. Tout cela va bien au-delà de l'" interface utilisateur " et de l'" interface utilisateur " ou de tout autre terme utilisé cette semaine 🙂 Chaque programme que vous créez sera utilisé par des personnes, même si vous êtes le seul à l'écrire. Étudier la sociologie, la psychologie et les sciences cognitives. Étudier la littérature et la poésie, les langues et les cultures étrangères.
Le cinquième aspect, curieusement, consiste à comprendre les différents aspects techniques, car vous y serez souvent confronté. Vous entendrez beaucoup de mots utilisés dans le jargon professionnel, ainsi que de nombreuses méthodologies de développement. Vous réaliserez que vous savez en fait toutes les choses que vous pensiez ne pas comprendre. C'est juste que tout a été appelé avec d'autres mots.
Si vous faites tout ce qui précède, vous apprendrez des choses que personne d'autre ne pourra vous enseigner. C'est la différence entre un expert et un simple travailleur compétent en programmation informatique. Vous comprendrez les principes sous-jacents. Plus important encore, vous verrez des opportunités que les autres ne voient pas.
En faisant ce que j'ai énuméré, vous deviendrez un expert. Mais laissez-moi vous dire d'emblée qu'il n'est pas du tout nécessaire de devenir un expert, même si vous voulez faire carrière. La plupart des personnes qui engagent d'autres personnes ne sont pas elles-mêmes des experts, c'est pourquoi elles engagent des experts.
Mais si vous êtes déterminé à aller jusqu'au bout, voici quelques informations supplémentaires pour vous.
Quand vous faites quelque chose, rendez-le plus difficile pour vous. Différents cadres et bibliothèques résolvent un grand nombre de problèmes et encapsulent une grande partie de la logique dans des méthodes. Mais vous ne pouvez pas vraiment apprécier une fonctionnalité sans savoir comment elle fonctionne en interne et ce que cela signifie de travailler sans elle. Travailler sur des projets avec des ressources limitées. Créez un additionneur binaire en utilisant des dominos. Fabriquez une horloge numérique fonctionnelle avec une lampe au néon, des résistances, des condensateurs, des diodes, des fils et une prise murale. Créez une machine de Turing à partir de blocs LEGO.
Voici quelques projets que je vous recommande de réaliser :
1-Solution récursive du puzzle de la Tour de Hanoi.
2-Un jeu d'aventure en mode texte.
3-Un jeu de société comme "Tic-Tac-Toe" ou "Reversi".
4-Un jeu vidéo interactif animé comme "Space Invaders".
J'ai choisi ces projets en partie parce qu'ils sont intéressants, mais aussi parce qu'ils peuvent vous apprendre beaucoup de choses.