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