Ce qui a fonctionné
- La phase de conception préalable a permis de bien cadrer le projet, en définissant à l'avance l'interface du projet, le nom des variables et les procédures à utiliser et en répartissant les tâches. Nous avons bien tenu les délais, tout le monde s'est bien entendu, ce sont des points essentiels.
- L'adoption de Git a offert de la souplesse au projet, qui a évolué chaque jours (plus de 80 commits). Si l'on considère que nous avons effecté des revues de code régulières (chaque jour ou presque), on peut parler d'un début de développement « agile ».
- Le choix de Github est assez motivant car on peut imaginer des contributions tierces, ce qui ouvre le projet sur les logiciels libres en général.
- Le code initial du projet (codage de la matrice et des algorithme de jeu) ne contenaient presque aucun bug, ce qui a facilité la phase finale de conception de l'interface.
- Nous avons réussi à faire cohabiter différents systèmes d'exploitation (MacOS, Linux et Windows) : 2 développeurs sous Linux, 1 sous MacOSX et 2 sous Windows.
- La perspective d'introduire l'intelligence artificielle est très motivante et apporterait un vrai plus au projet.
- Nous nous sommes tous montrés passionnés par ce projet et avons beaucoup travaillé. Nous espérons transmettre cet enthousiasme et ces valeurs à nos élèves.
Ce qui a moins bien fonctionné et qui nécessite un réflexion
- La prise en mains de Git a été douloureuse, car nous avons découvert qu'il était nécessaire de réconcilier les différentes versions d'un même code, avant de faire un commit. Avant de choisir un outil comme Meld, il a été difficile pour certains de faire un commit. Nous sommes toujours en phase d'apprentissage et il est relativement difficile d'intervenir sur un code en évolution quotidienne.
- Certains d'entre-nous ont trouvé que TkInter était documenté par plusieurs sources, donc que cela nécessitait des efforts. Mais c'est l'avantage et l'inconvénient d'un framework libre.
- Le choix d'une programmation procédurale n'est pas forcément idéal car on se retrouve à coder la logique et l'interface dans une même fonction. La présence de variables globales dans chaque procédure ou presque ne facilite pas la lecture et la maintenance du code. Le choix d'une architecture Modèle-vue-contrôleur et de la programmaton orientée objet serait certainement plus « propre » : peut-être une ouverture pour un nouveau projet l'année prochaine.