Avant toute chose, je tiens à féliciter grandement David pour la création de son activité freelance il y a quelques temps. Je le dit un peu en retard.. mais bon. Bravo à toi David, j'espère que tout se passera bien, tant au niveau professionnel que personnel (car ce genre d'activité peut perturber la vie privée). Mais je ne me fais pas trop de soucis, tu es quelqu'un que j'estime beaucoup, je connais ta qualité, et je suis persuadé que tu réussiras ta démarche. Et qui sait, peut-être que nous auront l'occasion de travailler sur des projets communs.. entre pythoneux !

Maintenant passons à un autre sujet, mais pas si éloigné.

Une des difficultés lorsque l'on est freelance, et surtout au début de sa carrière, est de réaliser des devis qui tiennent la route en ce qui concerne la durée d'un projet.

Vous avez sous les yeux votre cahier des charges, maintenant il faut estimer le temps nécessaire à sa réalisation. Et là.. ce n'est pas si facile. Il faut coller le plus possible à la réalité, en se laissant un peu de marge pour les contre-temps, mais pas de trop sinon le client va se retrouver avec un gros devis, qu'il refusera. Ça paraît simple sur le papier, mais la réalité est toute autre. Tous ceux qui ont déjà fait l'expérience voient de quoi je parle.. L'idéal, serait de disposer d'une liste de tâches classiques qu'on est susceptible de réaliser régulièrement dans des projets, avec le temps mis pour chacune.

Il faut pour cela utiliser des outils de time tracking. Le gros problème, encore faut-il déjà penser à utiliser ces logiciels, est que ces derniers reposent presque toujours sur l'action consciente et volontaire de l'enregistrement du temps. Seulement lorsqu'on prend 10/15 secondes pour faire autre chose, on ne va pas couper l'enregistrement puis le redémarrer, on ne ferait que ça de la journée. Mais si on ne compte pas ces coupures, au bout d'un certain temps elles commencent à peser dans la balance, et faussent le résultat. C'est donc un travail fastidieux, et souvent approximatif.

Je ne vais pas proposer une révolution, beaucoup de monde doit même déjà utiliser cet outil et cette technique, mais il est bon de rappeler son existence. Sous Linux, nous avons ce que l'on appelle des "bureaux virtuels", qui permettent de placer un grand nombre de fenêtres sur votre environnement de travail sans être surchargé. Ils permettent aussi et surtout de séparer les applications par domaine. Par exemple, on peut utiliser le bureau 1 pour le "geekage" : email, IRC, surf, etc. Le bureau 2 pour travailler sur un projet X, le 3 sur un projet Y, le 4 pour faire autre chose, et le 5 pour... rien.

L'environnement de bureau KDE propose un outil (utilisable bien sur sous un autre environnement) nommé KArm. Ce petit outil permet de créer des tâches, des sous-tâches, et de jouer avec. En bref, comme tous les autres outils de ce genre. Mais on peut l'utiliser d'une manière intelligente. En effet, KArm peut assigner un bureau à une tâche, et compte le temps. Pour cela, créez une tâche sous KArm, puis éditez la. Cochez la case "suivi automatique", et sélectionnez le ou les bureaux concerné(s) par la tâche. Ensuite, lorsque vous allez travailler sur votre tâche le temps sera compté, dès que vous faîtes autre chose, une autre tâche est activée, ou bien le comptage s'arrête. À la fin, vous saurez exactement combien de temps vous avez passé sur telle ou telle tâche et combien de temps vous avez perdu à ne rien faire.

C'est donc très utile pour chiffrer au mieux vos futurs devis, mais également pour tracker le temps que vous passez à discuter sur IRC ou surfer plutôt que de travailler.

Grâce à cela je me suis rendu compte que mes estimations étaient en général un tout petit peu sous-estimées en terme de durée (sûrement à cause des bugs, dont on ne connait évidement pas la durée de résolution), mais j'ai également eu quelques surprises : des fonctionnalités à des logiciels qui me prennaient un temps fou comparé à mon estimation, et d'autres qui étaient ridiculement rapides à réaliser, étonnamment.

Il existe très certainement une méthode similaire pour MacOS X et pour Windows, si vous les trouver n'hésitez pas à m'en faire part pour compléter ce billet.

Bonne journée, et bonnes estimations