Fork me on GitHub

Vouloir trop bien faire et ne rien faire

Pour cet article, j’ai prévu un workflow simple et durable. Pour vous résumer rapidement : j’écrirai cet article avec Vim… dans une console Hyper… installée dans un conteneur Docker… tout ça pour écrire dans un fichier Markdown… qui sera versionné avec git… synchronisé sur un serveur Gitlab… hébergé sur un serveur auto-hébergé… avec de l’intégration continue pour générer les pages HTML… avec Jekyll… avec un joli template… 100 % accessible… optimisé… éco-responsable… Bref si avec tout ça, ça ne marche pas, j’arrêterai tout. Mais là dans l’immédiat, il faut que je progresse, il faut que j’étudie comment mettre en place tout ça, sinon je ne vais pas y arriver, mal faire, accumuler de la dette technique et me faire bâcher.

Vous l’aurez compris, si je m’étais arrêté à tout ça, je me serais noyé comme j’ai l’habitude de le faire avec mes idées de side project, alors je profite de cette super occasion (#nowwwel) pour mettre fin à cette boucle infernale avec vous à travers différentes astuces que j’ai pu rassembler.

Faites « des trucs »

C’est le meilleur conseil qu’on ne m’ait jamais donné (c’était à Sud web 2015). À mes yeux, c’est l’unique moyen de progresser : vous aurez beau assister à de nombreuses conférences, lire tous les livres et articles que vous trouverez, si vous n’appliquez pas, vous finirez par oublier ou ne jamais vraiment savoir faire (ça revient un peu au même…). Et quel meilleur moyen d’expérimenter que les side projects ? Avec ces projets, vous avez zéro obligation : vous pouvez vous faire plaisir et utiliser la techno que vous souhaitez sans avoir de compte à rendre à personne (même si c’est jQuery, puisque après tout, on est tous passé par là et ça nous a permis de mieux appréhender ce qui a suivi, donc pas de quoi rougir, foncez !). Enfin, si vous pouvez, montrez-les, ça ne peut-être que positif : ça pourra inspirer des confrères, attirer de potentiels recruteurs et vous pourriez être surpris de voir une pointure (ou un collègue) vous aider avec bienveillance.

« Release early, release often »

Vous voilà motivés à réaliser plein de side projects. Mais avant de vous lancer, pensez à affiner vos objectifs : n’ayez pas les yeux plus gros que le ventre, visez les « petites victoires », essayez d’obtenir un MVP avant d’envisager de poursuivre, d’abandonner ou de tout recommencer, préférez les petites itérations aux longs tunnels desquels vous ne verrez jamais le bout.

Guillaume Ayoub a fait une très belle démonstration cette année à la PyCon-fr en développant en 30 minutes seulement une appli permettant de convertir un fichier SVG en Bitmap. Pour atteindre cette performance, il a commencé par une étude rapide (< 2min) des spécifications du format SVG et du parser XML de Python puis, après avoir trouvé une bibliothèque de dessin, il s’est fixé successivement ces différents objectifs : créer un PNG vide, lire le premier élément du fichier XML (celui qui contient les dimensions), créer un PNG vide ayant les bonnes dimensions, lire les enfants du premier élément XML (qui correspondent aux différents objets du dessin), séparer les différentes commandes du XML, dessiner ces commandes et enfin mettre les couleurs. À chaque objectif atteint, il s’auto-félicitait et partageait sa joie avec le reste de la salle.

Dernier piège dans lequel il ne faut surtout pas tomber : ne cherchez pas à appliquer toutes les bonnes pratiques, vous n’y arriverez pas. Oui, vous pouvez souvent entendre que « l’accessibilité / la sécurité / l’ergonomie / l’éco-conception, etc. doivent se prévoir dès le début du projet ». Sauf qu’en pratique, si vous cherchez à tout appliquer tout de suite (pour la première fois), au mieux vous resterez paralysé, au pire vous vous noierez sous une tonne de documentation. La bonne pratique en matière de bonne pratique (la méta bonne pratique ;-)) est de n’en prendre que quelques unes (de nouvelles) et de garder les autres pour les prochaines itérations. « Le mieux est l’ennemi du bien. »

« Fail fast ! »

Qu’on se le dise, votre projet ne sera jamais vraiment terminé, jamais parfait, il ne satisfera jamais tout le monde. Et je vais être encore plus négatif : il n’y aura sûrement que les insatisfaits qui se manifesteront. Pour autant, ce serait dommage de baisser les bras, surtout quand on sait qu’on est absolument tous passé par là : pour apprendre à marcher, pour apprendre à parler/lire/écrire… Si on avait attendu d’être au top pour commencer, on attendrait encore. Il n’y a pas de secret, il faut se lancer, se planter, analyser/comprendre et (on ne le dira jamais assez →) itérer.

L’exemple ultime

Un collègue m’a récemment fait découvrir ce message datant du 25 août 1991 :

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.  This has been brewing
since april, and is starting to get ready.  I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want.  Any suggestions
are welcome, but I won't promise I'll implement them :-)

            Linus (torv...@kruuna.helsinki.fi)

PS.  Yes - it's free of any minix code, and it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.

( « je fabrique un système d’exploitation (gratuit- c’est juste un passe temps, ça ne grandira pas et ne sera pas professionnel comme GNU) pour les processeurs 386(486) AT clones. […] J’ai porté bash(1.08) et gcc(1.40), et ça a l’air de marcher. […] ça ne supportera sans doute rien d’autre que les disques dur AT, vu que c’est tout ce que j’ai :-( » )

Il n’était pas plus visionnaire que vous et moi, finalement on suit plus ou moins tous le même chemin, alors foncez. ;-)

Si vous voulez approfondir, je vous suggère l’article Aide-toi, le Web t’aidera de Marie Guillaumet.

Merci encore à tous les contributeurs sans qui cet article n’aurait pas vu le jour. J’ai hâte d’avoir vos retours.

Comments !

social