Skip to content

Commit c7ae2ac

Browse files
Copilotsunix
authored andcommitted
Article : GitHub Issues Driven Development
Update sun tan linkedin url Apply suggestions from code review Co-authored-by: Jean-Michel Doudoux <144702096+jmdoudoux-sciam@users.noreply.github.com> Apply suggestions from code review Co-authored-by: Jean-Michel Doudoux <144702096+jmdoudoux-sciam@users.noreply.github.com> Apply suggestions from code review Co-authored-by: Jean-Michel Doudoux <144702096+jmdoudoux-sciam@users.noreply.github.com> Add image new-repository-with-copilot-prompt.png Apply suggestions from code review Add screenshot of Copilot prompt in repository creation form Co-authored-by: sunix <650571+sunix@users.noreply.github.com> Update _posts/2025-12-12-github-issue-driven-development.md fix image Signed-off-by: Sun S. D. Tan <sunix@sunix.org>
1 parent 3b61211 commit c7ae2ac

File tree

8 files changed

+163
-1
lines changed

8 files changed

+163
-1
lines changed

_data/authors.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,4 +264,15 @@ saidboudjelda:
264264
picture: saidboudjelda.png
265265
socials:
266266
linkedin: "bmscomp"
267-
github: "bmscomp"
267+
github: "bmscomp"
268+
269+
suntan:
270+
name: "Sun Tan"
271+
bio: "Sun est un ingénieur logiciel et tech lead expérimenté avec plus de 15 ans d'expertise dans le développement d'applications Java et de solutions cloud-native. Anciennement chez Red Hat, il a contribué à des projets open-source majeurs tels que Eclipse JKube, Fabric8 Kubernetes Java Client, Eclipse Che et Eclipse Theia. Actif dans la communauté Java, Sun fait partie de l'équipe ParisJUG depuis 2015 et a occupé le rôle de JUG Leader de 2019 à 2023. En 2024, Sun rejoint Sciam en tant que consultant tech lead, apportant son expertise dans l'accompagnement des entreprises vers des solutions innovantes et performantes. Passionné par l'apprentissage continu et le partage de connaissances, Sun intervient régulièrement lors de conférences et reste impliqué dans de nombreux projets open-source. Pendant son temps libre, Sun brasse sa propre bière dans sa cuisine, combinant sa passion pour la technologie et la création artisanale."
272+
job: "Consultant Tech Lead"
273+
pagesciam: "https://www.sciam.fr/equipe/sun-tan"
274+
picture: suntan.jpg
275+
socials:
276+
linkedin: "sun-seng-david-tan-b05a684"
277+
github: "sunix"
278+
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
---
2+
layout: post
3+
title: "GitHub Issues Driven Development : terminer ses side projects pendant ses pauses café"
4+
author: suntan
5+
date: 2025-12-12 10:00:00 +0100
6+
toc: true
7+
tags: ['GitHub Copilot', 'IA', 'Développement assisté par IA', 'PWA', 'Productivité']
8+
excerpt: "Découvrez comment j'ai enfin terminé un side project grâce à GitHub Copilot et une méthode que j'appelle GitHub Issues Driven Development. Un workflow où l'IA devient un véritable binôme de développement."
9+
vignette: coffee_hourglass.png
10+
categories: software
11+
---
12+
13+
# GitHub Issues Driven Development : terminer ses side projects pendant ses pauses café
14+
15+
Comme beaucoup de développeurs, ma vie est remplie de side projects inachevés. J'en commence un, ça me prend trois week-ends… puis il finit dans le cimetière des bonnes intentions. Mais cette fois, quelque chose a changé : j'ai enfin terminé un side project, et presque sans écrire de code moi-même.
16+
17+
Dans cet article, je présente une approche que j'appelle **GitHub Issues Driven Development (GIDD)** : un workflow où GitHub Copilot, associé à GitHub Issues, devient un véritable binôme. Pour chaque fonctionnalité ou correction de bug, je crée une issue, je l'assigne à Copilot, et je reviens lors de ma prochaine pause café pour faire la revue. Je lui fais des retours, il ajuste, et on avance ainsi de manière entièrement itérative… sans jamais ouvrir un IDE.
18+
19+
## Le problème : gérer mes cartes cadeaux
20+
21+
Mon épouse travaille chez Red Hat et, comme dans beaucoup d'entreprises, elle bénéficie d'un programme CSE (Comité Social et Économique). L'un des avantages est de recevoir des cartes cadeaux avec des réductions, notamment une remise de 5% chez une grande enseigne de supermarché. Super, non ?
22+
23+
Le souci, c'est que j'utilisais Google Wallet sur mon téléphone pour gérer ces cartes, sans jamais réussir à maintenir le solde à jour. Après chaque course, j'oubliais de le mettre à jour. Résultat : arrivé en caisse, je ne savais jamais si la carte était suffisamment approvisionnée. À la longue, cette situation est devenue assez frustrante pour que je décide de créer quelque chose de mieux : une application simple qui me permettrait d'afficher le code-barres à scanner en magasin et de mettre à jour le solde manuellement, sur place.
24+
25+
## Un énième side project… ou pas ?
26+
27+
"Allez, c'est reparti," ai-je pensé. Un autre side project que je commencerais avec enthousiasme et abandonnerais à mi-parcours. Mon cimetière numérique de projets inachevés était déjà plutôt bien rempli.
28+
29+
![Comic strip sur les side projects](/images/2025/github-issue-driven-development/side-project-comic.png)
30+
*[Source: CommitStrip.com](https://www.commitstrip.com/en/2014/11/25/west-side-project-story/?setLocale=1) - Une histoire que nous connaissons tous trop bien.*
31+
32+
Mais cette fois, c'était différent. J'avais testé des outils d'IA pour le développement d'applications ou de site web. J'avais récemment utilisé ChatGPT pour créer le site web de mon club de tennis [tc11.fr](https://tc11.fr) en quelques jours seulement. C'était incroyablement efficace. Avant de commencer cette application de cartes cadeaux, j'ai même consulté ChatGPT sur la stack technologique : devrais-je créer une PWA (Progressive Web App) ou aller vers du natif avec Kotlin ? À la suite de ces échanges, j’ai opté pour une PWA pour ses avantages cross-platform et sa maintenance plus facile.
33+
34+
Néanmoins, j'étais sceptique. Allais-je vraiment terminer celle-ci ?
35+
36+
## Le game changer : la découverte de GitHub Copilot dans GitHub Issues
37+
38+
Puis j'ai découvert quelque chose qui a tout changé : la possibilité d'assigner des projets entiers à GitHub Copilot directement dans GitHub Issues. Pas seulement de la complétion de code ou des suggestions, mais une véritable création de projet et développement de fonctionnalités.
39+
40+
J'ai décidé de tenter le coup. J'ai créé une issue avec mes besoins et je l'ai assignée à Copilot. Mon premier prompt était simple :
41+
42+
> Créer une Progressive Web App pour gérer des cartes cadeaux. L'application doit permettre aux utilisateurs de :
43+
> - Stocker les informations des cartes cadeaux (nom, numéro de code-barres)
44+
> - Générer et afficher des codes-barres à scanner en magasin
45+
> - Suivre et mettre à jour les soldes des cartes
46+
> - Fonctionner hors ligne
47+
> - S'installer comme une application mobile
48+
49+
Et ensuite… j'ai attendu. Copilot s'est mis au travail. Il a créé une structure de projet, mis en place l'infrastructure PWA, implémenté les fonctionnalités de base, le tout dans une Pull Request. C'était comme avoir un développeur junior qui travaillait incroyablement vite mais avait parfois besoin d'assistance.
50+
51+
![Assigner une issue à Copilot](/images/2025/github-issue-driven-development/copilot-issue-assignment.png)
52+
*Quand vous assignez une issue à Copilot, il crée immédiatement une Pull Request "[WIP]" et commence à travailler.*
53+
54+
![Prompt Copilot dans le formulaire de création de repository](/images/2025/github-issue-driven-development/new-repository-with-copilot-prompt.png)
55+
*J’ai découvert plus tard qu’il y avait un champ « Prompt » pour Copilot dans le formulaire de création d’un repo, donc pas besoin de créer une issue la première fois : une PR est créée automatiquement.*
56+
57+
## La réalité : quand l'IA a besoin de direction
58+
59+
Bien sûr, ce n'était pas parfait. Le système de génération de codes-barres créé par Copilot était problématique. Au lieu d'utiliser une bibliothèque existante, Copilot a essayé de réimplémenter la génération de codes-barres Code128 from scratch. Bien que les codes-barres générés semblaient visuellement corrects, ils n'étaient pas compatibles avec les lecteurs de codes-barres réels des magasins. Il y a des nuances dans les standards de codes-barres (Code128, Code39, EAN-13, et d'autres), chacun avec des règles d'encodage spécifiques qui doivent être précises au pixel près.
60+
61+
J'ai créé une issue pour le corriger, mais les améliorations n'étaient toujours pas tout à fait bonnes. Je me suis senti frustré et j'ai fait ce que tout développeur ferait : j'ai demandé de l'aide à ChatGPT séparément, ouvert mon IDE, commencé à déboguer manuellement. Finalement, j'ai découvert [bwip-js](https://github.com/metafloor/bwip-js), une bibliothèque de génération de codes-barres fiable qui gère toute la complexité correctement. J'ai manuellement modifié [la PR de Copilot](https://github.com/sunix/gift-card/pull/3) pour intégrer bwip-js, et enfin, les codes-barres fonctionnaient parfaitement en magasin.
62+
63+
Ce n'est que plus tard que j'ai découvert ce que j'aurais dû faire dès le départ : simplement mentionner `@copilot` dans les commentaires de l'issue ! Quand vous avez besoin que Copilot ajuste quelque chose, effectue une action, ou corrige un problème, vous n'avez pas besoin de démarrer un tout nouveau workflow. Commentez simplement l'issue ou la PR, mentionnez @copilot, et il répondra et fera les changements nécessaires. Cela a été un game-changer pour moi.
64+
65+
## Trouver mon rythme : le workflow parfait
66+
67+
Une fois que j'ai compris comment travailler efficacement avec Copilot, j'ai développé un rythme qui me convenait vraiment :
68+
69+
1. **Créer une issue** : écrire ce que je veux en termes clairs et spécifiques
70+
2. **L'assigner à @copilot** : le laisser faire le gros du travail
71+
3. **Réviser la PR** : regarder ce que Copilot a créé
72+
4. **Fournir des retours** : utiliser les mentions `@copilot` dans les commentaires pour les ajustements
73+
5. **Itérer** : répéter les étapes 3-4 jusqu'à satisfaction
74+
6. **Merger et avancer** : déployer et créer l'issue suivante
75+
76+
Ce que j'ai le plus aimé, c'était la visibilité sur le processus de "réflexion" de Copilot. Je pouvais voir les logs de session, le regarder raisonner sur les problèmes, et même voir les captures d'écran qu'il prenait lors des tests avec Playwright. C'était comme faire du pair programming avec quelqu'un qui documente tout ce qu'il fait.
77+
78+
![Checklist des étapes de Copilot](/images/2025/github-issue-driven-development/copilot-checklist.png)
79+
*Copilot vous montre exactement quelles étapes il prend, avec des cases à cocher montrant la progression. Vous pouvez voir le prompt original et le regarder travailler sur chaque tâche.*
80+
81+
![Changements de code par Copilot](/images/2025/github-issue-driven-development/copilot-pr-diff.png)
82+
*La Pull Request montre tous les changements que Copilot a faits, comme n'importe quelle autre PR. Vous pouvez réviser le diff et demander des modifications.*
83+
84+
Le workflow est devenu presque méditatif. Je créais des issues pendant ma pause café, je les confiais à Copilot, puis je revenais plus tard pour relire et commenter. Plus besoin de longues sessions de code.
85+
86+
## Le résultat : un projet terminé
87+
88+
Après plusieurs itérations sur quelques semaines, j'avais une application fonctionnelle. Pas seulement un PoC, mais quelque chose que j'ai réellement déployé et que j'utilise régulièrement :
89+
90+
- 📱 **Progressive Web App** qui s'installe sur mon téléphone
91+
- 📊 **Génération de codes-barres** utilisant bwip-js qui fonctionne de manière fiable avec les scanners en magasin
92+
- 💰 **Suivi de solde** que je peux mettre à jour en déplacement
93+
- 🔒 **Support hors ligne** pour fonctionner partout
94+
- 🎨 **UI épurée** qui est simple et fonctionnelle
95+
96+
Vous pouvez consulter le code sur [GitHub](https://github.com/sunix/gift-card) et essayer l'[application en ligne](https://sunix.github.io/gift-card/) vous-même.
97+
98+
Mais voici ce qui compte vraiment : **je l'ai terminé**. Pour la première fois depuis des années, j'ai finalisé un side project du début à la fin. Il est déployé. Il est utilisé. Il résout mon problème réel.
99+
100+
## Ce que j'en ai appris
101+
102+
Travailler avec GitHub Copilot m'a appris plusieurs choses :
103+
104+
1. **L'IA est un collaborateur, pas un remplacement** : vous devez toujours guider, réviser, et prendre des décisions
105+
2. **La communication claire compte** : plus vos descriptions d’issues sont claires, meilleurs sont les résultats.
106+
3. **L’itération est essentielle** : mieux vaut avancer, recueillir des retours et améliorer progressivement que chercher la perfection dès le départ.
107+
4. **Exploitez pleinement les outils** : comprendre des fonctionnalités comme les mentions `@copilot` fait gagner énormément de temps
108+
5. **Avancer par petites étapes** : diviser le travail en issues et laisser l'IA les gérer une par une fonctionne vraiment
109+
110+
## Le GitHub Issues Driven Development (GIDD)
111+
112+
Cette approche que j'ai développée, je l'appelle **GitHub Issues Driven Development (GIDD)**. C'est un workflow où :
113+
114+
- Chaque fonctionnalité ou bug devient une issue GitHub
115+
- Copilot est assigné comme responsable de l'issue
116+
- Vous revenez pendant vos pauses pour faire des revues de code
117+
- Les retours sont donnés via des mentions @copilot dans les commentaires
118+
- Le développement progresse de manière asynchrone et itérative
119+
120+
Le GIDD change fondamentalement la façon dont j'aborde les side projects. Au lieu de penser "J'ai besoin de consacrer un week-end pour coder ça," je pense "Je peux diviser ça en issues et progresser pendant mes pauses café."
121+
122+
## La cerise sur le gâteau
123+
124+
Envie d'une anecdote amusante ?
125+
Cet article de blog a lui-même été rédigé avec l'aide de Copilot. J'ai simplement créé une issue décrivant l'article que je voulais écrire, fourni la structure souhaitée, puis itéré sur le brouillon à coups de mentions `@copilot` jusqu'à ce qu'il reflète fidèlement ma voix et mon expérience.
126+
127+
Bref, la boucle est bouclée.
128+
129+
## Réflexions finales
130+
131+
Je suis vraiment enthousiaste à l’idée de cette nouvelle façon de développer des applications. GitHub Copilot ne m'a pas seulement aidé à terminer un projet : il a changé la façon dont j'aborde entièrement les side projects. La barrière pour terminer des projets n'est plus seulement le temps ou les compétences. C'est d'avoir le bon modèle de collaboration. Pour moi, ce modèle est maintenant : moi et l'IA, travaillant de manière asynchrone, itérant sur des issues, et livrant vraiment.
132+
133+
Si vous avez déjà enterré différents side projects, peut-être que c'est le moment d'essayer GitHub Copilot. Créez une issue. Assignez-la à @copilot. Voyez ce qui se passe. Vous pourriez bien, pour une fois, aller au bout d'un projet.. 😆
134+
135+
Et vous verrez, ça fait vraiment du bien !
136+
137+
## Pour aller plus loin
138+
139+
Si vous êtes intéressé par cette approche, voici quelques ressources :
140+
141+
- [Documentation GitHub Copilot](https://docs.github.com/en/copilot)
142+
- [Mon projet de cartes cadeaux](https://github.com/sunix/gift-card) : exemple concret d'un projet terminé avec GIDD
143+
- [Article original en anglais](https://blog.sunix.org/articles/howto/2025/11/14/building-gift-card-app-with-github-copilot.html) : la version détaillée de cette expérience
144+
145+
Que vous soyez sceptique ou déjà convaincu par le développement assisté par IA, j'espère que cet article vous a donné une méthode concrète, reproductible, et des astuces pour enfin, vous aussi, terminer votre prochain side project.
146+
147+
Bonnes pauses café productives ! ☕
148+
149+
---
150+
151+
*Avez-vous déjà utilisé GitHub Copilot ou d’autres assistants de codage basés sur l’IA dans vos projets ? Quel a été votre retour d’expérience ? N’hésitez pas à en parler dans les commentaires.*
156 KB
Loading
39.8 KB
Loading
158 KB
Loading
87.8 KB
Loading
530 KB
Loading

images/authors/suntan.jpg

20 KB
Loading

0 commit comments

Comments
 (0)