Bonjour,
Depuis quelques temps, et de plus en plus, je m’interroge.
J’ai un jeu que je gère et que je fais évoluer depuis 10 ans, c’est un moyennement gros projet perso qui compte quand même 15000 joueurs.
Les plus anciennes parties du code ont 10 ans. A l’époque, j’avais choisi Java pour le serveur de jeu, et PHP pour le site. C’est les deux seuls langages que je maîtrisais à ce moment-là (avec C++ pour le client, mais c’est hors de propos ici) Je ne connaissais pas non plus les frameworks plus que ça, et même si j’en avais vaguement entendu parler, je n’avais pas envie de m’y mettre. L’aspect "boîte noire" de ces géants m’ont toujours un peu rebuté.
La situation actuelle est donc une code base dont certaines parties n’ont pas été touchées depuis 2010:
- Pas de Spring, pas de Symfony, même pas de Maven
- Une implémentation perso, suffisante mais très approximative de websocket selon la RFC pour le serveur de jeu depuis 2012
- Côté Java, des god classes de 2000+ lignes, un certain nombre de méthodes dépassant les 200 lignes, la réimplémentation de certaines choses que j’aurais pu prendre dans la bibliothèque standard si j’avais su
- Côté PHP, une majorité de code uniquement procédural, et un joyeux mix mélangeant allègrement accès DB et affichage dans le même fichier
- ET le tout, sans aucun test
Depuis, j’ai terminé mes études, puis j’ai commencé à bosser dans une boîte d’informatique, Spring et konsor sont devenus beaucoup moins mystérieux, j’ai appris un certain nombre de principes pour faire du meilleur code…. enfin bref, je n’ai plus du tout la même façon de coder qu’il y a 10 ans. Encore heureux, me direz-vous.
Le corrolaire est celui-ci: j’ai de plus en plus de mal, je déteste de plus en plus aller faire des modifications dans mon code, et je suis de moins en moins motivé à le faire. Cela d’autant plus si ce qu’il y a à changer se trouve dans les parties les plus anciennes. De plus, je me suis résigné à la persistance de certains bugs et certaines failles. Certains existent depuis plus de 5 ans et j’ai abandonné tout espoir de les corriger. Certains de ces bugs sont même connus par coeur des joueurs les plus assidûs.
Pour en rajouter une dernière couche, mon projet ne scale pas. La nécéssité ne s’est jamais présentée jusqu’ici et j’ai toujours fait avec un serveur unique en fait, mais au plus fort du confinement, je me suis approché de quelques potentielles limites… plus de 900 joueurs simultanément connectés.
Si ça avait été un projet d’entreprise, on parlerait sans doute de dette technique, accumulée au fil des années.
D’Oû la grande question sur la vie, l’univers, et tout le reste … du projet:
Première grande question: est-ce que je devrais tout recommencer à zéro ?
Cela me permettrait de repartir sur de bonnes bases, peut-être essayer quelque chose de nouveau, et surtout, que ce soit à nouveau fun de travailler dessus comme cela le fût jadis. C’est un projet perso, fait sur mon temps libre, donc il faut que ça reste toujours fun.
Deuxième grande question: est-ce que je peux recommencer à zéro ?
Oui, parce que mine de rien, pendant le temps où je travaillerai sur une refonte en coulisses, il n’y aura pas (ou très peu) de nouveauté visible pour les joueurs. Comment l’expliquer ? J’ai beau dire que c’est gratuit et donc que je n’ai aucune obligation, les attentes n’en seront pas moins présentes. ON m’attend au contour.
JE sais ce que j’ai, ce que j’aimerais changer, et ce que je n’aimerais plus, mais est-ce que j’aurai le courage de tout reprendre et d’aller jusqu’au bout ? la question n’est pas non plus complètement anodine.
Troisième grande question: quitte à vouloir recommencer à zéro, à quel point devrais-je ou non tenter une toute nouvelle expérience ou recommencer avec ce avec quoi je suis à l’aise actuellement ?
J’ai un peu peur de partir sur du totalement nouveau, justement parce que c’est nouveau pour moi, et parce que, comme je l’ai déjà dit, la communauté m’attend au contour. En d’autres termes j’ai pas intérêt à me rater.
Par contre, est-ce que si je repars sur du Java+Spring parce que je mâitrise Java et parce que c’est c’est sur cet écosystème que je travaille professionnellement en ce moment, au final je ne vais pas regretter de n’avoir pas essayé autre chose / ne pas avoir été plus ambitieux ? Les projets persos sont justement là pour faire des choses différentes de ce qu’on fait au boulot non ?
Est-ce que vous avez des expériences à partager sur la vie à long terme d’un projet perso ? Vous avez essayé, et vous avez réussi, ou bien vous avez foiré une refonte totale ? Ou alors vous avez renoncé, et Vous regrettez peut-être d’avoir trop attendu ?
J’ai mis ce sujet dans le bar parce que le but premier n’est pas de parler purement technique, sauf si ça a joué un rôle clé dans votre cas. ON y reviendra sans doute dans un second temps, c’est probablement inévitable, selon comment le sujet va évoluer. Mais pour l’instant, pas la peine de venir dire que PHP c’est pour les bricolos, que Java c’est lourd et has been, ou que Ruby c’est mieux que Python.
Merci de m’avoir lu jusqu’au bout, et merci pour vos réponses.