Quand on a des patrons qui manquent de connaissances techniques, il y a un risque pour que les programmeurs leur racontent un peu n'importe quoi. Qui pourra prouver le contraire ? C'est un peu la situation que j'ai vécu cette semaine et qui m'a causé un brin de frustration et la réflexion qui s'en suit.
Je vote pour ça
Lors des réunions, des décisions sont à prendre, les idées sont lancées et débattues et c'est la nature humaine de tirer sur son bord de couverture pour faire adopter sa proposition, même si ce n'est pas la meilleure. Il y a une réelle auto-satisfaction pour l'ego de savoir que sa proposition est retenue. Les gens sont généralement prêts à suivre les gens qui ont l'air sûrs d'eux. Et c'est ainsi que les efforts collectifs sont mis dans une direction qui n'est pas nécessairement bénéfique pour l'entreprise. Dans le monde idéal, il faut demeurer objectif et savoir apporter des arguments qui prouvent ce qu'on avance.
Dans la salle de conférence
Durant une de ces réunions, ce que j'ai entendu sortant de la bouche d'un programmeur aussi expérimenté que moi m'a fait faire le saut. Il proposait d'instaurer une standardisation dans notre façon de programmer alors qu'il a lui-même refusé de suivre les standards de l'entreprise dès son arrivée. Il a ensuite convaincu un autre employé qu'il valait mieux tout balancer par-dessus bord et recommencer à leur façon sans en parler aux supérieurs. Pour moi, c'est une source de problème sur l'efficacité qui instaure un rapport de cause à effet direct sur le bon fonctionnement de l'entreprise et sa rentabilité (les chiffres parlent : les projets qui leur sont assignés dépassent régulièrement les temps estimés, donc les coûts de production et les profits générés). Il y a plusieurs causes mais le temps passé dans l'ombre à réinventer la roue n'est pas étranger à ce phénomène.
Le problème est un peu ça : au lieu de pousser collectivement dans la même direction, de se concerter et de faire le mieux dans l'intérêt de tous, des clans se forment selon les écoles de pensées. D'un côté ceux en faveur d'une solution, de l'autre, ceux qui se rangent derrière l'alternative. Chacun va chercher l'approbation de ses pairs avec qui il s'entend bien et ça devient politique (et on sait que quand c'est politique, c'est contre l'évolution, ça fait du sur place). Ce qui fait que les standards changent selon qui réalise le projet, et ce même si l'entreprise est claire face aux technologies à favoriser. De toute façon, personne n'ira vérifier si c'est conforme et une fois le fait accompli, c'est souvent difficile de reculer.
Ce que dicte l'entreprise devrait avoir préséance sur tout le reste. Les patrons, qui signent notre chèque de paye, ont tranché. À moins d'une justification assez forte pour remettre en question la technologie en place, on devrait respecter le choix des investisseurs. En revanche, ce sont nous les spécialistes qui peuvent suggérer des pistes technologiques mieux adaptées à nos besoins. Les patrons sont ouverts à écouter les arguments mais manquent parfois de connaissances techniques pour faire un choix éclairé. Ils s'en remettent donc à nos bons conseils. Et alors apparaîssent les abus de confiance.
Gare aux sophistes!
Ceci ouvre la voie à celui qui parle le plus fort, qui se montrera le plus persuasif. Je racontais la situation à un ami et il qualifiait cette attitude de sophiste (vous vous souvenez, les cours de philosophie au Cegep ?). C'est un peu vrai. Certains sont passés maître du discours en utilisant une série de buzzwords pour se montrer convainquants en présence de la direction. Voyez ce qu'en dit Wikipedia :
Les sophistes développent des raisonnements dont le but est uniquement l'efficacité persuasive, et non la vérité. Des raisonnements ou des arguments apparemment solides mais contenant en réalité un vice ou une perversion volontaire visant à manipuler ou à tromper l'auditeur .
Dès que je reconnais ce profil chez quelqu'un, je me méfie immédiatement, qu'il soit vendeur d'auto ou programmeur. Je me refuse de jouer le même jeu mais je sens au fond de moi que je dois réagir, faire quelque chose.
Programmation sans ego
Il est vrai que certains développeurs voient un idéal d'être indépendant face à des outils populaires qui ont fait leur preuves. Ils veulent à tout prix essayer quelque chose de nouveau même si l'ancienne méthode fonctionne bien. Ils ressentent un besoin d'enrichir leurs connaissances personnelles plutôt que de répondre au besoin immédiat du client. C'est bien de vouloir se perfectionner, mais il faut aussi choisir le bon moment. Adopter une attitude saine comme "l'egoless programming" est de mise.
Personnellement, je ne suis pas réfractaire au changement, au contraire. Mais l'histoire m'a prouvé que des décisions stupides sont prises ou imposées par des employés de passage et que ce sera la base d'employés stable (core team) qui sera prise avec les problèmes causés par des mauvaises décisions, à éteindre des feux et à rétablir un certain équilibre. Croyez-moi, j'ai déjà donné plus souvent qu'à mon tour.
Habituellement, le roulement d'employés fait qu'ils restent en poste 1 an ou 2 et quittent pour offrir leurs services ailleurs. Moi, ça fait déjà 8 ans que je suis au sein de la même entreprise. D'autres se poussent dès qu'ils sentent la soupe chaude, qu'ils devront faire face à la responsabilité qui viennent avec leurs choix et à se justifier. Combien de fois ai-je eu à réparer les pots cassés d'anciens programmeurs ? Souvent et je ne compte pas le nombre de fois que j'ai sacré...
Pour un patron, qui croire ? Un employé de longue date fidèle à l'entreprise ou le petit nouveau qui, même s'il compte autant d'expérience, prétend autre chose ?
Carriériste ?
Pas tout à fait. Développer une relation de confiance et équitable entre employé-employeur, c'est ce qui est payant à long terme. Un peu comme un mariage, autrement c'est un divorce assuré. Et d'un côté comme de l'autre, il ne faut pas abuser de cette confiance. Pierre Péladeau père disait à ses employés : si tu me fais faire de l'argent, tu vas en faire toi aussi. Ça résume bien mon état d'esprit professionnel. Avec ce mode de pensée, on finit par prendre des décisions éclairées pour l'entreprise plutôt que des décisions basées sur des préférences personnelles. On sait qu'on devra vivre avec notre choix à long terme. Pour moi, c'est aussi ça une attitude professionnelle. J'aime mieux réparer mes gaffes involontaires que réparer les pots cassés causés par des programmeurs insouciants.
Méritocratie
Et pourtant, face à certains choix, je suis découragé. Je me demande si je ne suis pas le seul à pouvoir me projeter à long terme dans une entreprise alors qu'on vit dans une culture d'instantanéité. Notre génération veut tout, tout de suite et on leur doit tout. Des enfants-rois. Merci à mes parents, je n'ai pas été élevé selon ces valeurs. Chez moi, on nous a inculqué le mérite. On met nos efforts à la bonne place pour mériter ce qu'on a. Et ne jamais s'assoir sur ses lauriers (prendre pour acquis). Le mérite est biodégradable et doit être renouvelable.
Passer à autre chose
Remarquez, j'ai peut-être un peu une écoeurantite. Malgré toute ma bonne volonté, j'ai parfois l'impression de nager à contre-courant et de ne pas être en mesure de renverser la situation. Peut-être ai-je besoin d'un nouveau départ ?
À la lumière de ce que me disent quelques personnes de mon entourage, j'ai le profil d'un travailleur autonome. Serais-je prêt à faire le saut en affaires ou dois-je chercher à prendre plus de responsabilités (dans cette entreprise ou une autre) ? Chose certaine, j'ai besoin de défis stimulants.
Peut-être est-il temps de me lever et de combattre de front cette attitude néfaste ? Est-ce que je prends mon rôle trop à coeur ? Est-ce une assez noble cause pour y mettre des efforts ou est-ce que je gaspillerais mon temps ? Suis-je assez mûr passer à un niveau supérieur ? Définitivement, un changement s'impose.
La suite demain... Sur la performance de Zend Framework.