Comment Kiro m'a aidé à programmer un jeu

Par
NA

Nathan Peck

Developer Advocacy

Au cours des 6 derniers mois, j'ai mis Kiro, un nouvel IDE d'IA, à l'épreuve en construisant un jeu vidéo d'artisanat infini. Le résultat est Spirit of Kiro, une expérience vivante et à code source ouvert qui a poussé mes capacités de programmation à l'extrême et m'a appris des leçons précieuses sur la façon d'utiliser l'IA pour créer des logiciels.

Spirit of Kiro est un bac à sable original où vous pouvez combiner n'importe quel objet du jeu avec n'importe quel autre objet du jeu. Il n'y a aucune recette codée en dur qui limite ce que vous pouvez faire. Au lieu de cela, les grands modèles de langage modernes gèrent la logique d'artisanat à la volée. Les joueurs peuvent goûter à la même créativité « oui, et… » que je ressens en programmant avec Kiro.

Utiliser Kiro pour construire le jeu a changé la façon dont je prototype, dont j'écris du code et dont je pense à tout le métier du génie logiciel.

Commencez vite. Cassez des choses. Réécrivez. Répétez.

Une grande leçon que j'ai apprise de Spirit of Kiro, c'est que la programmation avec l'IA prospère grâce à l'idée du travail jetable. La plupart des projets logiciels comportent un peu de planification préalable — peut-être un ou deux prototypes — puis vous devez vous engager dans une direction et vous y tenir avec le code existant. Avec Kiro, j'ai découvert que l'IA me permettait d'explorer des dizaines de chemins de ramification potentiels, puis de choisir délibérément ce que je préférais. Chaque idée jetée a rendu le produit final plus précis.

Kiro facilite l'expérimentation et rend les réécritures moins pénibles. Besoin d'un serveur WebSocket rapide? Prototypez-le. Vous voulez essayer DynamoDB plutôt que Postgres? Demandez à Kiro de prototyper les deux. Vous vous demandez si Vue ou React est meilleur? Essayez les deux. Jetez ce que vous n'aimez pas. Gardez les idées utiles.

Fichiers Steering : un code cohérent et de qualité

Chargement de l'image...code editor showing a chat window, product.md, and, in the background, structure.md

Une chose que j'aime particulièrement chez Kiro, ce sont ses fichiers Steering : de petits aperçus de documentation qui guident Kiro pendant qu'il travaille sur chaque requête. Kiro m'a aidé à générer et à mettre à jour ces fichiers Steering. Par conséquent, j'ai pu passer beaucoup moins de temps à réfléchir à la rédaction de requêtes, et plus de temps à simplement demander ce que je voulais. Les fichiers Steering rendent Kiro nettement plus performant pour transformer des instructions vagues en résultats clairs et utiles, avec une qualité de code cohérente.

Des étapes plus petites pour un plus grand impact

Chargement de l'image...code editor showing requirements.md, tasks.md, and a chat window

L'IA et les humains fonctionnent tous les deux mieux lorsque les grandes tâches sont découpées en tâches plus petites. Bien que Kiro soit très capable de « programmation intuitive »; l'un de ses pouvoirs uniques est le développement piloté par les Specs.

Avec le développement piloté par les Specs, j'ai demandé à Kiro de tracer la voie pour de grandes fonctionnalités, comme une toute nouvelle fonctionnalité d'« évaluation » que je voulais ajouter au jeu. Cette fonctionnalité non triviale nécessitait des changements au client du jeu, au serveur du jeu et à l'infrastructure du jeu. Kiro m'a aidé à réfléchir à tous les cas limites et sous-tâches potentiels que j'aurais pu manquer. Il a généré une conception basée sur mon code réel. Ensuite, il a généré un plan étape par étape pour faire passer le code de son état actuel à l'état que je souhaitais.

Le développement piloté par les Specs fonctionne très bien avec les meilleures pratiques traditionnelles du génie logiciel, comme l'intégration continue. Je me suis retrouvé à travailler avec de petits commits, des fusions rapides, et moins de crainte de revenir en arrière pour tenter une nouvelle approche.

Langages fortement typés

Chargement de l'image...code editor with typescript error 'Object literal may only specify known properties...' and chat window showing fix

Kiro excelle en TypeScript. J'ai constaté que l'utilisation d'un langage fortement typé donne au grand modèle de langage des informations contextuelles supplémentaires, ce qui se traduit par un code de meilleure qualité. Dans Spirit of Kiro, même lorsque j'ai utilisé Bun (qui ne vérifie pas strictement les types à l'exécution), garder les types TypeScript dans le mélange a donné à Kiro exactement ce dont il avait besoin pour assembler des fonctions, des interfaces et des flux de données avec une précision surprenante. J'ai aussi pu utiliser Kiro pour exécuter ma construction, détecter les erreurs, puis les corriger automatiquement.

Le refactoring est amusant et facile avec Kiro

Chargement de l'image...code editor showing SellDialog.vue

Si vous avez déjà fixé un énorme fichier de code en vous demandant où ça a dérapé, je vous comprends. Les fichiers courts et bien délimités sont plus faciles à lire, à comprendre et à enrichir, tant pour les humains que pour l'IA.

Utiliser Kiro m'a appris que le code propre et maintenable est un choix délibéré, quel que soit l'outil utilisé. La programmation assistée par l'IA ne consiste pas seulement à livrer des fonctionnalités. Parfois, il est temps d'utiliser l'IA pour un « refactoring intuitif ». Je me suis retrouvé à demander à Kiro de réécrire du code selon le modèle du « retour anticipé », ou de découper de grandes fonctions en fonctions plus petites et plus courtes.

J'ai même demandé à Kiro d'examiner mon code à travers les yeux d'ingénieurs logiciels célèbres comme Martin Fowler. Ensuite, Kiro m'a aidé à découper du code monolithique en modules bien nets. Le résultat a été des limites plus claires, et beaucoup de place pour continuer à enrichir le jeu au fil du temps.

Le code orienté événements est meilleur pour l'IA

Chargement de l'image...code editor showing inventory-system.ts and Workbench.vue

Que votre code soit monolithique ou modulaire n'est que le début. Le facteur suivant est le degré de couplage du code. Sans surprise, les ingénieurs logiciels humains et l'IA bénéficient tous deux de systèmes plus faiblement couplés. Plutôt que de faire invoquer directement les fonctions d'autres systèmes de jeu par chaque composant de jeu, j'ai demandé à Kiro d'implémenter un système d'événements découplé.

Les composants du jeu émettent des événements, puis d'autres composants ou systèmes du jeu peuvent s'abonner à l'événement pour y réagir. Cela garde les systèmes du jeu séparés, ce qui est parfait pour l'itération rapide. Une fois que j'ai donné des exemples clairs de la façon de brancher les événements, Kiro pouvait répéter le modèle encore et encore.

Le résultat a été un jeu qui évolue mieux, et où je peux continuer à intégrer de nouvelles fonctionnalités au fil du temps.

Idéation et investigation

Chargement de l'image...Code editor showing physics-system.ts

Le développement assisté par l'IA ne signifie pas que vous remettez tout le travail de génie logiciel à l'IA. Kiro ne m'a pas remplacé pendant ce processus de programmation. Je suis resté impliqué et engagé tout au long. J'ai constaté que j'ai tiré une valeur énorme du fait de demander à Kiro de générer cinq à dix idées pour résoudre quelque chose, puis j'ai fait le choix final. J'ai aussi appris en posant des questions de suivi. Si Kiro générait du code que je ne comprenais pas immédiatement, je demandais toujours « pourquoi? » et « comment? »

La plupart du code généré par Kiro était excellent, mais parfois le code ne fonctionnait pas tout à fait correctement. J'ai tout de même tiré une valeur énorme de certains de ces faux départs et impasses en cours de route. Discuter avec Kiro des problèmes dans le code m'a aidé à identifier où se trouvaient les lacunes dans mes connaissances qui m'empêchaient de faire des demandes plus précises. Par exemple, à un moment donné, je voulais refactoriser le magasin de données principal du jeu, mais j'ai réalisé qu'en faisant cela, Kiro avait brisé la réactivité que Vue utilise pour actualiser automatiquement les composants lorsque les données changent. En fin de compte, c'était une mauvaise requête de ma part, car je ne connaissais pas assez les fondamentaux de la réactivité pour prédire ce résultat. Une requête de suivi via Kiro m'a dirigé vers la documentation approfondie de Vue sur la réactivité, où j'ai pu combler certaines de mes lacunes personnelles.

Maintenir un esprit curieux et engagé m'a permis d'utiliser l'IA pour construire, tout en continuant à développer mes propres compétences et capacités.

Et ensuite?

Spirit of Kiro n'est pas terminé. La feuille de route est longue et le dépôt à code source ouvert est maintenant disponible pour être bifurqué, remixé ou modifié comme vous le souhaitez. J'ai hâte de voir comment d'autres bâtisseurs vont expérimenter dans des directions que je n'ai même pas encore imaginées.

Si vous ne retenez qu'une seule chose de mon projet, que ce soit celle-ci : Kiro est un multiplicateur de vos capacités. Si vous êtes curieux et voulez explorer, vous pouvez utiliser Kiro pour tester de nouvelles idées audacieuses plus rapidement. Si vous voulez un code de haute qualité, vous pouvez utiliser Kiro pour itérer sur le code encore et encore jusqu'à ce que tout soit parfait. Mais surtout, si vous aimez programmer et que vous vous amusez à le faire, alors Kiro est aussi un multiplicateur de ce plaisir.

Si vous voulez en savoir plus ou essayer Spirit of Kiro par vous-même, consultez le dépôt ou le tutoriel guidé dans la documentation.