Arrêtez de débugger votre code et commencez par débugger votre emploi du temps

Vous passez des heures à traquer des bugs dans votre code, mais quand avez-vous débuggé votre emploi du temps pour la dernière fois ?

Pendant des années j’ai travaillé sans réelle stratégie d’organisation ou de planification. Cela me convenait très bien, je gardais les sujets importants dans ma tête. Mes mails, les dailys, les outils du projet me permettaient de rester à jour. Puis après quelques années je me suis heurté à un mur ! J’étais lead développeur d’une équipe de 10 développeurs et je n’arrivais plus à tout gérer. 

Au fil de votre carrière vous allez certainement prendre de plus en plus de responsabilités, vous aurez peut-être plusieurs projets à la fois, vous serez peut-être responsables de certaines tâches en interne. Vous deviendrez peut-être lead ou manager. En tout cas, il est fort probable que la gestion de toutes ces activités en parallèle devienne bien plus complexe qu’au début de votre carrière.

Votre agenda est comme un programme mal optimisé : des fuites mémoires, des dépendances bloquantes, des exceptions non gérées, des boucles infinies ! Il est temps de le refactorer et de corriger tous ces bugs !

Aujourd’hui j’aimerais vous partager mon expérience afin de vous permettre d’identifier les bugs dans votre gestion du temps et les corriger, comme vous le feriez avec votre code.Cela vous permettra de réduire votre stress et votre charge mentale tout en vous donnant les moyens de vous investir dans les projets qui vous tiennent à cœur. 

Disclaimer

Maîtriser son temps est très personnel. Je pense qu’il faut avant tout apprendre à se connaître et créer la méthode qui vous convient. Il existe de nombreuses méthodologies déjà existantes. Au cours de cet article je citerais celles dont j’ai emprunté des éléments et qui ont bien fonctionné pour moi, mais comme toujours je vous invite à faire des recherches et des tests par vous-même.

Détection des bugs

Tout comme il est parfois important d'arrêter de développer des nouvelles features pour corriger les problèmes présents dans la base de code, il faudra un peu de courage et d'honnêteté pour prendre du recul sur votre façon de travailler. Prenez le temps de vous arrêter au moins 1 heure pour vous auto-diagnostiquer.

Dans mon cas, il était urgent que je prenne le temps de ralentir mon activité pour faire ce diagnostic et comprendre quels étaient les bugs de ma gestion du temps. Pourquoi avais-je toujours cette impression de courir partout et de ne pas réussir à tout faire ?

Pour cette étape de diagnostic je vous propose d’établir votre liste de tâches et de les caractériser :

  1. Regardez votre agenda des dernières semaines (dans mon cas j’ai utilisé un sprint de 3 semaines comme référence) et faites la liste de toutes vos activités.
  2. Comparez cette liste à celle des tâches correspondants à votre poste.
  3. Évaluez l’importance de chaque action pour la réussite du projet (principale ou secondaire)
  4. Évaluer le temps que vous consacrez à chaque activité

Avec cette comparaison vous devriez vous rendre compte de ce qui vous prend le plus de temps. Est-ce que ce sont vraiment les tâches principales ?

Mon exemple 

Sur 25 tâches différentes j’ai trouvé 11 tâches que je n’avais simplement pas le temps de faire. Dont certaines très importantes pour le projet et d’autres pour lesquelles j’étais triste de ne pas pouvoir y consacrer du temps. Suite à la montée en charge de l’équipe je n’avais plus vraiment le temps de développer, encore moins de faire de la veille techno ou d’animer des coding dojo. Mais en parallèle de ça je consacrais parfois ½ journée à des tâches peu importantes.

De plus, j'ai remarqué que je consacrais parfois la moitié de mon temps de travail à répondre aux sollicitations des autres membres de l’équipe au détriment des mes propres tâches. 

Réalisme, indulgence et ténacité

Une fois ce constat fait, il faut maintenant changer vos habitudes. Pour cela il faudra faire preuve de 3 qualités : réalisme sur vos objectifs, indulgence sur vos résultats et ténacité face aux obstacles. Dans mon cas j’ai décidé de prendre 2 sprints de 3 semaines pour mettre en place certains conseils et une méthodologie de gestion du temps.

Refactorer sa liste de tâches avec la priorisation

Suite à mon analyse, il était devenu évident que j’avais un problème avec le nombre de tâches dont je m’estimais responsable. Il me fallait donc apprendre à mieux les prioriser et ne pas me disperser.

Tout comme un code bien organisé permet de gagner en efficacité, une liste de tâches et un agenda “clean” seront vos meilleurs alliés dans votre gestion du temps.

Distinguer l’importance de l’urgence

Pour faire rentrer dans mon planning hebdomadaire les tâches les plus importantes, j’ai utilisé une variante de la matrice d’Eisenhower. Celle-ci permet de déterminer 6 niveaux de priorités en fonction de l’importance et de l’urgence de la tâche à accomplir.

L’urgence d’une tâche augmente au fur et à mesure que son échéance approche.

L’importance d’une tâche est proportionnelle aux risques liés à sa non-réalisation et aux gains de sa réalisation.  

Vous pouvez utiliser le tableau de priorisation  suivant pour déterminer la priorité de chaque tâche (de P1 à P6).

Les tâches P1 à P3 sont très importantes pour moi ou les autres.
Celles de P4 à P6 sont des tâches moins importantes.
Les P1 et P4 sont urgentes pour aujourd'hui
Les P2 et P5 sont urgentes pour cette semaine
Les P3 et P6 ne sont pas urgentes pour cette semaine

Selon le niveau de priorité la façon de traiter la tâche doit être différente :

  • P1 Je réalise la tâche immédiatement
  • P2 et P3 Je programme cette tâche dans mon agenda
  • P4 Je délègue ou je réalise seulement si je n’ai aucune tâche P1 à P3 de prévu aujourd’hui
  • P5 Je délègue ou je raye de la liste
  • P6 je raye de la liste

En détectant et en supprimant les tâches P4 à P6 vous vous dégagerez le temps d’accomplir sereinement les tâches les plus importantes.

Anticipation à 3 semaines

De plus, les P1 (et même les P2) devraient être exceptionnelles. En effet, il est rare de découvrir une tâche importante au dernier moment. Et même si c’est devant le mur qu’on voit le mieux… le mur, il est trop tard pour l’éviter.

Planifier vos tâches P3 à l’avance permet d’utiliser tout l’arsenal des solutions disponibles (analyser, déléguer, demander de l’aide, organiser une réunion… etc) plutôt que de traiter seul et dans le rush car la deadline approche. Avec de l’anticipation il est souhaitable de consacrer 60% de son temps aux tâches P3 (les plus importantes mais non urgentes). 

 Fix: Planification et Time blocking

Maintenant que vous avez les idées claires grâce à cette analyse et ce refacto, il devient beaucoup plus facile de corriger les bugs ! Une liste de tâches caractérisées et priorisées est bien plus facile à insérer dans un emploi du temps. 

Construire un agenda réaliste

Voici ma méthode pour construire mon agenda. J’ai choisi de construire celui-ci sur 3 semaines car c’est la durée d’un sprint et que cela permet d’anticiper suffisamment à l’avance les tâches P3. J’utilise principalement la méthodologie “Time-blocking”. Cela consiste à réserver à l’avance des plages de travail pour vos activités.

L’agenda se compose de 2 types de créneaux

  1. Les tâches programmées. Programmer une tâche signifie lui dédier un horaire fixe. 
    1. Définissez les limites de vos journées. Soyez réalistes sur vos heures de début et de fin de journée. De même que pour vos temps de pauses. Cela vous évitera de déborder sur votre vie perso.
    2. Programmez à l’aide d’un rdv (si ce n’est pas déjà fait) toutes les réunions récurrentes (daily meeting, rétrospective, point d’équipe… etc)
    3. Programmez un créneau pour vos activités récurrentes même si cela ne concerne que vous.

L’ensemble des éléments programmés ne doit pas dépasser 30% de votre temps. Ce sont les points fixes de votre agenda et permettent d’avancer en terrain connu. Si elles sont trop nombreuses vous perdrez en souplesse. Si c’est le cas pour vous, il est important de questionner ces créneaux et de se demander si cela concerne vraiment votre activité principale.

  1. Les tâches planifiées. Planifier une tâche c’est réserver du temps pour cette tâche mais sans réserver un créneau précis. Idéalement 40% de votre temps devrait leur être dédiés. Pour celles-ci j’ai pris l’habitude de définir des créneaux mais sans préciser à l’avance ce que je ferais exactement : (2h de développement, 1h de pair programming, 1h de veille technique… etc). Cela me permet de sanctuariser du temps pour les tickets.

Répondre aux sollicitations

De mon côté j’avais 2 problèmes principaux. J’étais invité à beaucoup trop de réunions pour me laisser le temps de réaliser mes tâches personnelles, de plus j’étais souvent interrompu par des sollicitations extérieures du fait de la taille de mon équipe.

Le Time Blocking m’a beaucoup aidé à résoudre ces problèmes. Je sais d’avance que si j’accepte d’aider un collègue sur un des créneaux dédiés à un développement cela aura un impact sur le délai de réalisation de mon ticket. Je peux ainsi décider si j’ai le temps d’aider ce collègue ou si mon ticket est plus prioritaire. Lorsque je suis sur une tâche critique je peux signaler aux autres mon indisponibilité et quand je serai en mesure de les aider.

De la même manière, cette vision de mon agenda sur 3 semaines me permet de savoir quand je dois refuser une réunion ou envoyer un autre développeur à ma place.

Laissez respirer votre planning ! 

Le fait de remplir son agenda à 100% est un autre bug très courant. Il est important de laisser des créneaux libres pour les imprévus dans l’emploi du temps. On estime qu’il faut entre 20 à 30% du temps libre pour gérer sereinement ces imprévus. 

De plus, essayez au maximum de garder ces créneaux libres jusqu’au dernier moment. Cela vous permettra de gérer les urgences sereinement. On ne sait jamais quand un bug critique surgira en prod ou quand l’un de vos développement prendra du retard.

Dans le cas où tout va bien, ces créneaux me permettent souvent d’aller aider mes collègues et de répondre aux nombreuses sollicitations que j’ai mises de côté plus tôt dans la journée.

Amélioration continue - la weekly review

Une des choses les plus importantes à accepter pour bien gérer son temps est que cela prend du temps. Tout comme j’étais déjà convaincu du gain de temps apporté par les tests unitaires et les code review, ma dernière expérience m'a convaincu de l'intérêt de cette weekly review.

Il faut impérativement consacrer un peu de temps à la planification pour ne pas se laisser submerger par les tâches et ne pas se faire surprendre par des urgences.

Vers le futur

Pour cela je vous conseille de réserver un créneau hebdomadaire d’1 heure pour faire le point. Cette pratique est souvent appelée la weekly review. C’est un moment que vous prenez toutes les semaines pour anticiper les 3 prochaines semaines à venir. C’est le moment d’appliquer la méthodologie expliquée dans le chapitre précédent. 

  • Vérifier vos mails et messageries instantanées pour ajouter les tâches à votre liste de tâches. 
  • Priorisez les tâches qui ne le seraient pas encore.
  • Programmez dans votre agenda les réunions récurrentes. N’oubliez pas d’ajouter un créneau pour préparer la réunion et pour faire un compte rendu.
  • Programmez ou planifiez des créneaux pour traiter vos tâches de priorités P2 et P3
  • Programmez des créneaux pour gérer les imprévus. 

Mais aussi le passé

Cette review est aussi le moment parfait pour faire le point avec vous-même sur les semaines précédentes. Tout comme une rétrospective en méthodologie agile c’est un temps consacré à l’amélioration continue. Cet aspect est particulièrement important lors des 6 premières semaines de changement dans votre façon de vous organiser.

Relancez-vous dans une phase de diagnostic et de debug ! Etes-vous satisfait de comment vous vivez vos semaines de travail ? Avez-vous eu le temps d’accomplir vos tâches importantes ?

Bilan de journée

Il sera souvent nécessaire d’actualiser votre agenda quotidiennement. Pour cela, réservez-vous 10 minutes pour faire le bilan de la journée. Personnellement j’aime bien le faire en fin de journée mais vous trouverez peut-être plus facile de faire ce bilan en arrivant le matin.Avez-vous terminé toutes les tâches importantes qui étaient prévues ? Si ce n’est pas le cas, il sera nécessaire de modifier votre plan pour la prochaine journée.

Est-ce que de nouvelles tâches importantes ou urgentes doivent être planifiées ? 

Dans le cas échéant, il est important de bien prendre le temps de modifier votre liste de tâches et votre agenda pour les jours suivants. Dans le cas contraire, vous serez très content de réaliser que vous avez terminé tout ce que vous deviez faire aujourd’hui !

Le "Pair Programming" du lead

Afin de me libérer du temps dans la semaine j’ai eu besoin d’apprendre à mieux déléguer. Il y avait trop de tâches que je faisais seul et l’information ne circulait pas assez dans l’équipe. Finalement un lead dev qui ne délègue pas c’est comme une fonction qui fait tout : plus personne ne sait ce qu’elle fait vraiment…

La solution évidente à ce problème est de travailler en pair. Pour cela nous avons d’abord réalisé ces tâches ensemble puis quand les développeurs ont été autonomes j’ai pu complètement leur confier ces responsabilités.

Le fait de confier certaines tâches à d’autres membres de l’équipe était indispensable, au vu de la taille de l’équipe, et a permis à tout le monde de progresser et de mieux communiquer. En plus de cela j’y ai trouvé une satisfaction personnelle car j’ai réussi à retrouver le temps de développer. J’avais en effet moins de tâches différentes à accomplir et de réunions à suivre.

Conclusion 

En tant que développeur.se, la gestion du temps est trop souvent survolée ou oubliée. Cependant il est très important de prendre soin de son emploi du temps, tout comme vous prenez soin de votre code.

Réserver des créneaux pour planifier mes semaines et accomplir mes tâches a vraiment été salvateur en tant que lead dev. Cela m’a pris plusieurs sprints pour reprendre le contrôle sur mon agenda mais je pense que le travail d’introspection accompli m’a énormément fait progresser. Je vous invite fortement à faire de même, avant de vous retrouver complètement sous l’eau !

Soyez courageux pour prendre du recul et détectez vos bugs.

Consacrez du temps à la gestion de votre agenda pour simplifier le reste de votre semaine et vous alléger l’esprit.

Anticipez et priorisez vos tâches pour créer de la confiance.

Sources