9 projets de programmation pour devenir un meilleur développeur

TThe Coding Koala
컎퓚터/소프튞웚얎자êČ©ìŠ/í‰ìƒê”ìœĄAI/ëŻžëž˜êž°ìˆ 

Transcript

00:00:00Savez-vous ce qui est plus frustrant que de bĂątir un projet ? Ne pas savoir quoi bĂątir.
00:00:04À un moment donnĂ© de votre parcours de dĂ©veloppeur, vous atteignez cette phase Ă©trange.
00:00:08Créer une éniÚme application CRUD avec un framework JavaScript devient ennuyeux,
00:00:11mais crĂ©er un systĂšme d'exploitation Ă  partir de zĂ©ro semble impossible. Vous ĂȘtes coincĂ© entre les deux.
00:00:16Vous ne voulez pas de la facilité. Vous ne voulez pas de l'impossible. Vous voulez juste quelque chose de significatif.
00:00:21Un défi suffisant pour progresser, mais pas trop accablant pour ne pas abandonner à mi-chemin.
00:00:26Croyez-moi, je suis passé par là. Dans cette vidéo, je vais donc vous donner d'excellentes idées de projets.
00:00:32Je les ai divisées en trois niveaux. Niveau un : bùtir vos fondations. Niveau deux : stockage,
00:00:38bases de données et systÚmes de données. Et niveau trois : systÚmes avancés et architecture interne.
00:00:44Si vous réalisez ces projets, vous ne ferez pas que mieux coder. Vous commencerez à penser comme un
00:00:49ingénieur. Commençons par le niveau un. Le premier projet consiste à créer votre propre serveur HTTP
00:00:55de A Ă  Z. Si vous regardez ceci, vous savez probablement ce qu'est un serveur HTTP. Chaque fois que vous ouvrez
00:01:01un site web ou appelez une API, une requĂȘte et une rĂ©ponse s'Ă©changent en coulisses.
00:01:06Mais jusqu'ici, vous n'avez interagi avec cela qu'à travers des frameworks comme Express. Créer votre propre mini
00:01:12serveur HTTP vous force à comprendre ce qui se passe réellement en dessous. Vous apprendrez comment les sockets TCP
00:01:19envoient et reçoivent des donnĂ©es, comment les requĂȘtes HTTP sont analysĂ©es, comment les rĂ©ponses sont formatĂ©es, et comment
00:01:25gĂ©rer plusieurs requĂȘtes simultanĂ©ment. Si vous vous sentez dĂ©jĂ  dĂ©passĂ© par la maniĂšre de
00:01:30réaliser ces projets, j'ai une petite solution pour vous à la fin de cette vidéo. Ne
00:01:35manquez pas ça. Passons maintenant au deuxiÚme projet : créer votre propre shell. Vous avez utilisé
00:01:40des commandes comme cd, ls, pwd des centaines de fois. Mais avez-vous déjà pensé à ce qui traite
00:01:46rĂ©ellement ces commandes ? En crĂ©ant votre propre shell, vous concevez ce systĂšme vous-mĂȘme. Vous apprendrez
00:01:52à lire et analyser les entrées utilisateur, à exécuter des processus, à gérer les appels systÚme,
00:01:58et à comprendre les concepts de l'OS comme les processus et les commandes. En bùtissant votre propre shell de zéro,
00:02:04vous comprendrez l'informatique en profondeur. Maintenant, les choses deviennent intéressantes. Voyons
00:02:09quels sont les projets du niveau deux. Le premier projet ici est de créer votre propre Redis. Redis est un
00:02:15entrepÎt de données en mémoire utilisé comme cache, base de données, courtier de messages, etc. C'est incroyablement rapide. Mais
00:02:21tant que vous n'en aurez pas construit un vous-mĂȘme, vous ne comprendrez pas vraiment pourquoi. En implĂ©mentant votre propre clone
00:02:26de Redis, vous apprendrez le fonctionnement des structures de données en mémoire. Vous implémenterez les commandes de base.
00:02:32Vous comprendrez le protocole Redis. Vous gérerez efficacement plusieurs connexions clients à l'aide de boucles
00:02:38d'événements. Ce ne sont que des points saillants. Il y a encore beaucoup de choses que vous apprendrez une fois que vous
00:02:43commencerez. Vous réaliserez que l'ingénierie logicielle est bien plus que la simple création d'applications CRUD.
00:02:48Le projet suivant est de créer votre propre GIT. Vous utilisez GIT tous les jours. Mais savez-vous vraiment comment il fonctionne ?
00:02:54Lorsque vous construisez vous-mĂȘme un systĂšme de contrĂŽle de version simplifiĂ©, tout devient clair. Vous comprendrez
00:03:00comment les commits sont stockés en interne. Vous implémenterez le hachage et le stockage adressable par contenu.
00:03:05Vous organiserez les instantanés de fichiers en arbres de commits. Et il y a tellement plus à apprendre et à implémenter.
00:03:11Et l'avantage de construire à partir de zéro, c'est que vous pouvez le modifier pour qu'il fonctionne comme vous le souhaitez.
00:03:16Enfin, notre troisiÚme projet est de créer votre propre base de données SQLite. SQLite est un moteur de
00:03:22base de données sans serveur qui stocke tout dans un seul fichier. Contrairement à MySQL ou Postgres, il n'y a pas
00:03:29de processus serveur séparé. C'est léger mais incroyablement puissant. En construisant votre propre version,
00:03:34vous comprendrez comment les données sont organisées via des structures comme les B-trees. Vous analyserez et exécuterez
00:03:39des requĂȘtes simples. Vous implĂ©menterez l'indexation pour une rĂ©cupĂ©ration plus rapide. En tant que dĂ©veloppeur, on n'Ă©chappe pas
00:03:45aux bases de données. Mais une fois que vous aurez compris l'interne, vous ferez partie des rares développeurs avertis.
00:03:52Au niveau trois, nous allons plus loin. Le premier projet ici est de créer votre propre mini langage de programmation.
00:03:58Oui, votre propre langage. Vous créerez quelque chose qui lit du code, le comprend et exécute
00:04:04des instructions. MĂȘme si cela semble intimidant, c'est l'un des projets les plus gratifiants que vous puissiez rĂ©aliser.
00:04:10Vous apprendrez et implémenterez des outils comme un lexer, un parseur et un arbre de syntaxe abstraite. Surtout, vous
00:04:17comprendrez comment fonctionnent réellement les interpréteurs et les compilateurs. C'est un projet génial car vous
00:04:22comprendrez enfin comment nous communiquons vraiment avec les ordinateurs. Et vous pourrez vous vanter d'avoir créé
00:04:27un langage de programmation en le nommant comme vous voulez. Le deuxiÚme projet consiste à créer votre propre
00:04:32client BitTorrent. C'est ici que les systÚmes distribués entrent en jeu. BitTorrent est un systÚme de partage de fichiers
00:04:38en pair-Ă -pair oĂč les utilisateurs tĂ©lĂ©chargent des fragments de fichiers depuis plusieurs pairs au lieu d'un seul serveur.
00:04:44En bĂątissant cela, vous implĂ©menterez la dĂ©couverte de pairs, gĂ©rerez les connexions entre nƓuds, diviserez les fichiers en
00:04:50fragments, assurerez l'intégrité des fichiers et gérerez la communication distribuée. Ce n'est pas un projet facile.
00:04:57Je parie que vous n'avez mĂȘme pas compris la moitiĂ© de ce que je viens de dire. Mais cela vous enseigne comment les
00:05:02systÚmes distribués à grande échelle fonctionnent réellement. Et enfin, notre dernier projet est de créer votre propre
00:05:08assistant de code. Quelque chose de similaire à Claude Code. Les outils d'IA modernes sont géniaux, mais sous le capot,
00:05:14ce sont des systÚmes intégrant des modÚles de langage avec une architecture logicielle traditionnelle. En en
00:05:20construisant un, vous intégrerez une API de LLM dans une application. Vous analyserez et indexerez les fichiers du projet
00:05:27pour fournir du contexte. Vous gérerez les prompts et contrÎlerez les réponses. Vous concevrez un systÚme qui
00:05:32mĂȘle l'IA aux principes rĂ©els d'ingĂ©nierie. Une fois que vous travaillerez dessus, vous comprendrez
00:05:38comment ces outils de codage par IA populaires fonctionnent vraiment. Et pas seulement ça : comme l'IA est trÚs
00:05:44en vogue aujourd'hui, c'est un projet stimulant qui peut vraiment vous faire sortir du lot. Soyons
00:05:50honnĂȘtes : certains de ces projets sont difficiles. CrĂ©er son propre Redis, Git ou client BitTorrent n'est pas
00:05:55quelque chose que l'on finit tranquillement en un week-end. Vous allez bloquer. Vous allez douter de vous. Parfois,
00:06:01vous ne saurez mĂȘme pas si vous l'implĂ©mentez correctement. Et c'est gĂ©nĂ©ralement lĂ  que la plupart des gens
00:06:05abandonnent. Pour remédier à cela, il existe une plateforme appelée CodeCrafters. C'est une plateforme d'apprentissage
00:06:11par projet oĂč vous reconstruisez des outils comme Redis, SQLite, des serveurs DNS ou HTTP, Ă©tape par Ă©tape. Ils ne vous
00:06:19donnent pas la solution. Ils vous donnent des tests et des jalons structurés. Et vous implémentez tout
00:06:23vous-mĂȘme. Je l'ai personnellement utilisĂ©e pour ces projets. Et honnĂȘtement, avoir cette direction
00:06:29structurée a fait la différence entre abandonner et finir. Donc, si vous aimez ces idées de projets mais
00:06:34voulez ĂȘtre guidĂ© tout en faisant le vrai travail, je laisserai un lien en description. Mais que vous utilisiez
00:06:39une plateforme ou que vous soyez en solo, l'important est de construire par vous-mĂȘme. Si vous avez aussi
00:06:45écumé Internet à la recherche du prochain projet à bùtir, j'espÚre que cela vous a éclairé.
00:06:51Cela peut paraßtre effrayant au début, mais l'eau froide ne se réchauffe que lorsqu'on y plonge. Si vous avez aimé
00:06:57ce genre de vidéo, n'oubliez pas de liker, de vous abonner, et dites-moi par quel projet vous allez commencer.
00:07:02On se voit dans la prochaine.

Key Takeaway

Pour devenir un ingénieur logiciel accompli, il faut s'éloigner des frameworks de haut niveau et reconstruire des outils systÚme fondamentaux à partir de zéro.

Highlights

Le passage des applications CRUD basiques vers l'ingénierie systÚme réelle pour progresser.

L'importance de comprendre les protocoles fondamentaux comme HTTP et TCP/IP sans frameworks.

La reconstruction d'outils quotidiens tels que Git et Redis pour maßtriser la gestion de données.

L'exploration des systĂšmes complexes incluant les langages de programmation et le peer-to-peer.

L'intégration de l'intelligence artificielle avec des principes d'architecture logicielle classique.

L'utilisation de plateformes structurées comme CodeCrafters pour surmonter les phases de blocage.

Timeline

Introduction et le dilemme du développeur

L'orateur aborde la frustration commune des développeurs bloqués entre les applications CRUD trop simples et les systÚmes d'exploitation impossibles à créer seuls. Il souligne que la progression réelle nécessite de trouver un juste milieu avec des projets significatifs et stimulants. Cette vidéo propose neuf idées de projets divisées en trois niveaux de difficulté croissante. L'objectif est de transformer la maniÚre de coder en une véritable pensée d'ingénieur. Ce segment pose les bases de l'état d'esprit nécessaire pour aborder les défis techniques suivants.

Niveau 1 : Construire les fondations

Le premier niveau se concentre sur les bases du web et de l'OS avec la crĂ©ation d'un serveur HTTP et d'un shell. CrĂ©er un serveur HTTP force Ă  comprendre les sockets TCP, l'analyse des requĂȘtes et le formatage des rĂ©ponses sans l'aide d'Express. Le projet de shell permet d'apprendre l'exĂ©cution des processus, les appels systĂšme et la gestion des entrĂ©es utilisateur comme les commandes cd ou ls. Ces exercices sont essentiels pour comprendre ce qui se passe rĂ©ellement sous le capot des outils que nous utilisons quotidiennement. L'orateur insiste sur le fait que ces connaissances distinguent les codeurs des vĂ©ritables ingĂ©nieurs systĂšme.

Niveau 2 : Stockage et systÚmes de données

Ce niveau intermĂ©diaire explore la persistance et la gestion des donnĂ©es Ă  travers des clones de Redis, Git et SQLite. En construisant un clone de Redis, le dĂ©veloppeur apprend les structures de donnĂ©es en mĂ©moire et les boucles d'Ă©vĂ©nements pour gĂ©rer plusieurs clients. Le projet Git dĂ©mystifie le contrĂŽle de version en implĂ©mentant le hachage, le stockage adressable par contenu et les arbres de commits. Enfin, recrĂ©er SQLite enseigne l'organisation des donnĂ©es via des structures comme les B-trees et l'indexation pour la performance. Ces projets montrent que l'ingĂ©nierie logicielle dĂ©passe largement la simple manipulation d'API externes pour toucher Ă  la structure mĂȘme de l'information.

Niveau 3 : SystÚmes avancés et IA

Le niveau final propose des défis complexes comme la création d'un langage de programmation, d'un client BitTorrent et d'un assistant de code IA. Le langage de programmation implique la création d'un lexer, d'un parseur et d'un arbre de syntaxe abstraite pour comprendre la communication homme-machine. Le projet BitTorrent introduit les concepts de systÚmes distribués, de partage pair-à-pair et d'intégrité des fragments de fichiers. L'assistant de code permet d'intégrer des API de modÚles de langage (LLM) avec une indexation de fichiers projet pour un contexte réel. Ces projets haut de gamme sont conçus pour faire sortir un candidat du lot lors de recrutements techniques exigeants.

Ressources et conclusion

L'orateur admet que ces projets sont difficiles et que le doute ou l'abandon guettent souvent les développeurs en solo. Il recommande la plateforme CodeCrafters qui offre une approche structurée avec des tests et des jalons pour guider l'implémentation sans donner la solution. Cette méthode de travail permet de transformer des concepts théoriques intimidants en une série d'étapes réalisables. Il conclut en encourageant l'audience à plonger directement dans le code, car la pratique est le seul moyen de s'améliorer. La vidéo se termine par un appel à l'action pour choisir un premier projet et s'engager dans ce parcours d'apprentissage intensif.

Community Posts

View all posts