Publié par Salvatore Sanfilippo, développeur et mainteneur du moteur de base de données Redis gratuitIl y a quelques mois, j'ai été écrit par le mainteneur d'un projet open source de système avec une communauté plutôt large et active. Il a écrit que pendant de nombreuses années, il avait du mal à soutenir son projet, mais qu'il souffrait d'un grave stress psychologique. J'ai demandé conseil. J'ai répondu que je pouvais à peine donner des conseils, mais j'ai promis d'écrire un blog sur ce que j'en pense.
Plusieurs semaines se sont écoulées, j'ai commencé à écrire ce billet plusieurs fois et j'ai arrêté parce que je n'avais pas le temps de bien y réfléchir. Maintenant, semble-t-il, j'ai terminé l'auto-analyse de mes faiblesses, de mes difficultés et de mon désir de liberté. Ces sentiments embrassent inévitablement l'esprit humain lorsqu'il se concentre sur une tâche, et un aspect négatif se manifeste pendant longtemps. Bien sûr, soutenir le projet Open Source apporte également beaucoup de joie et de plaisir. Les dix dernières années de ma vie professionnelle resteront certainement dans les mémoires pendant longtemps. Ce sont de bonnes années, mais pas les meilleures (c'était encore plus amusant lors du lancement). Mais ici, je vais me concentrer sur le côté négatif. N'oubliez pas qu'il y a des points positifs.
Avalanche de demandes
Je ne crois pas à «l'action rapide», la «pensée rapide», la «victoire dans le temps», etc. Je n'aime pas le monde de la surface avec le manque de concentration et d'attention dans lequel nous vivons à cause des réseaux sociaux, des forums de discussion, des e-mails et d'un calendrier rempli d'événements. Dans les premières années de Redis, j'avais encore beaucoup de temps. Lorsque la lettre est arrivée, j'ai pu me concentrer calmement sur ce que l'auteur essayait de dire. Je pourrais rappeler la partie pertinente du code Redis et, après avoir soigneusement examiné la question, exprimer enfin mes véritables pensées. Je crois que c'est ainsi que la plupart des gens devraient travailler, quel que soit leur travail.
Lorsqu'un projet logiciel atteint la popularité, comme Redis, et que la communication entre les gens est tellement simplifiée que dans les outils sociaux modernes, alors tout change. Les utilisateurs vous traitent comme une entité inanimée, et le nombre de messages, questions, demandes, suggestions augmente de façon exponentielle. Mais en même temps dans la communauté Redis (même s'il me semble que c'est un problème courant), le nombre de personnes capables de répondre de manière experte à ces questions croît très lentement. Une congestion évidente est créée. La plupart des gens sont trop pragmatiques à propos de ce problème. Nous fermons le ticket si le premier starter n'a pas répondu à notre question dans un délai de deux semaines. Fermez tous les billets avec des mots vagues. Et d'autres options pour le nettoyage mécanique du cours d'eau. Mais la réalité est qu'il faut du temps pour bien traiter les examens. Sinon, vous prétendez simplement que le projet a peu de tickets ouverts. Ce serait bien d'avoir beaucoup de ressources pour embaucher des experts rémunérés à temps plein pour soutenir chaque sous-système Redis pendant une journée complète, mais en réalité, cela n'est pas possible.
Alors qu'est-ce qui se passe? Vous commencez à prioriser davantage: ce qu'il faut considérer et ce qui ne l'est pas. Et vous vous sentez comme une merde, ignorant tant de questions et tant de gens, et les contributeurs pensent que vous ne vous souciez pas de leur travail. C'est une situation difficile. Habituellement, au final, seuls les problèmes critiques sont finalement résolus. Tout ce qui est nouveau est ignoré, car les nouvelles fonctions ne sont pas encore devenues basiques, et qui veut augmenter la base de code, obtenir encore plus de requêtes et de problèmes de tirage? Vous commencez peut-être à écrire du code plus déroutant que d'habitude. Plus le code est déroutant, plus il est difficile de suivre la cause première en cas d'erreur critique.
Changement de rôle
En raison de l'avalanche de demandes décrites ci-dessus, votre travail change également soudainement. Redis est devenu populaire parce que je sais comment concevoir et écrire du code. Et maintenant, à la place, je m'occupe principalement de la résolution de problèmes et des demandes d'extraction. Et il semble constamment que j'écrirais moi-même un meilleur code que dans ces demandes de tirage. Bien que parfois le code soit meilleur que je ne pourrais le faire moi-même, car il y a de meilleurs programmeurs dans la communauté Redis. Mais la
plupart sont simplement écrits pour résoudre un problème spécifique. Bien que je représente toujours le système dans son ensemble, parce que j'y travaille depuis de nombreuses années. Mais il n'y a plus de temps pour le faire. Ainsi, de nouvelles fonctions importantes sont moins organiquement intégrées dans le code principal. Que faire? Parfois, je passe juste plusieurs semaines sur des tickets et des pulls parce que je code ou conçois: c'est un travail que j'aime vraiment et que j'aime. Mais cela, à son tour, augmente la pression psychologique, car j'ignore tout le monde.
Pour faire ce que j'aime et savoir bien faire, il faut se sentir comme de la merde.
Le temps
Il y a deux problèmes de long travail sur un projet, du moins pour moi.
Premièrement, avant Redis, je
ne travaillais
jamais sans interruption, tous les jours ouvrables. Je pourrais travailler une semaine, m'arrêter pendant deux, puis travailler pendant un mois, disparaître pendant deux mois. Toujours. Les gens ont besoin de se ressourcer, de trouver une nouvelle énergie et de nouvelles idées, de faire preuve de créativité. Et la programmation de haut niveau est un travail créatif. Redis lui-même a vécu ainsi pendant les deux premières années, c'est-à-dire lorsqu'il s'est développé à vitesse maximale. Parce que l'épuisement total de mon travail quand je veux travailler est plus grand que quand je dois travailler tous les jours de manière durable.
Quand je travaillais seule, je pouvais me permettre un emploi du temps gratuit. Dès que j'ai commencé à recevoir de l'argent de Redis Labs, mon éthique ne le permettait plus. J'ai dû me forcer à travailler selon un horaire normal. C'est un combat sérieux avec moi-même, que je mène depuis de nombreuses années. De plus, je suis sûr qu'à cause de cela la qualité et le volume de travail ont diminué, mais il n'y a rien à faire: tout est arrangé dans ce monde. Je n'ai pas trouvé de moyen de résoudre ce problème. Je pourrais dire à Redis Labs que je veux revenir à mon ancien emploi du temps, mais cela n'a aucun sens, car en ce moment je «rapporte» à la communauté, et non à l'entreprise.
Un autre problème est que beaucoup de travail sur un projet est également une chose difficile, mentalement. Dans le passé, j'ai spécifiquement changé le projet tous les six mois. Je fais la même chose depuis dix ans maintenant. Pour garder mon esprit, j'ai commencé des sous-projets à l'intérieur de Redis. Une fois que j'ai créé un cluster, l'autre - le stockage sur disque (maintenant abandonné), puis HyerLogLogs, etc. Fondamentalement, ces choses sont utiles pour le projet, mais en substance, elles sont autre chose. Mais à la fin, vous revenez toujours à la même page avec les tickets et les demandes de tirage et faites la même chose tous les jours: "La réplique est déconnectée en raison d'un délai d'attente" et ainsi de suite. Eh bien, traitons-le encore une fois.
La peur
J'ai toujours eu peur de perdre le leadership technologique du projet. Non pas parce que je ne suis pas doué pour concevoir et développer Redis, mais parce que je sais que mes chemins ne correspondent pas à ce que veulent un grand nombre d'utilisateurs et à ce que la plupart des informaticiens considèrent comme un bon logiciel. Par conséquent, je dois constamment trouver un équilibre entre ce que je considère comme une bonne conception, un ensemble de fonctions, la vitesse de développement (lente), la taille du projet (minimale) et ce que je dois donner à la plupart des utilisateurs. Heureusement, il y a un pourcentage d'utilisateurs de Redis qui comprennent très bien Redis-way, donc au moins j'obtiens quelques mots de support de temps en temps.
Désaccord
Certaines personnes sont des imbéciles complets. Ils sont partout, c'est naturel. À mon avis, il y a beaucoup plus de bonnes personnes dans la programmation que dans d'autres domaines. Mais il y a toujours un certain pourcentage de connards absolus. En tant que leader du populaire projet OSS, vous devrez de toute façon y faire face. C'est peut-être l'une des choses les plus stressantes auxquelles j'ai dû faire face pendant le développement de Redis.
Futilité
Parfois, il me semble que même les logiciels les plus excellents ne dureront jamais éternellement, en tant que chef-d'œuvre de la littérature. Veuillez noter que ce n'est pas dû à sa qualité, mais comme effet secondaire de sa fonction utilitaire ... Il est utile dans la pratique. C'est pourquoi quelque chose de plus utile viendra le remplacer. J'aimerais avoir du temps pour d'autres cours. Par conséquent, il semble parfois que tout mon travail, en fin de compte, soit futile. Nous concevons et écrivons des systèmes, mais de nouveaux apparaîtront. En général, au moins un programmeur appliqué, et non un théoricien aux «grandes idées», est-il capable de laisser une trace quelconque? De temps en temps, je pense que j'ai eu l'occasion de travailler sur de grandes idées, mais je me suis concentré sur l'écriture du logiciel, plutôt que d'y penser. Par conséquent, je ne pouvais pas utiliser mon potentiel à cet égard. C'est l'opposé du syndrome de l'imposteur: désolé d'être plus modeste.
Néanmoins, j'ai pu travailler pendant de nombreuses années, faire ce que j'aimais vraiment, ce qui m'a donné des amis, de la reconnaissance, de l'argent. Cela ne veut pas dire que c'était une mauvaise affaire. Cependant, je comprends parfaitement que les gens sont confrontés à d'énormes défis dès que leur projet devient populaire. Cet article leur est dédié.