Le fait qu'ils soient intéressants à résoudre ne signifie pas que quelqu'un en a besoin
«Un groupe de personnes réfléchit sur un ordinateur portable et une feuille de papier», photo de Stefan Stefanchik de UnspalshDe nombreux facteurs conduisent à la création de logiciels médiocres: le choix des outils, la communication d'équipe, le désintérêt personnel des développeurs pour la réussite, la méthodologie de test. Il me semble que tout cela a pour cause principale: ce sont des problèmes imaginaires.
Un logiciel excessivement complexe ou non fonctionnel n'a pas été conçu comme tel. Il est simplement conçu pour autre chose et non pour une tâche réelle.
Supposons que vous publiez des podcasts et que vous ayez besoin d'un site Web où vous pouvez vendre des produits connexes, gagner de l'argent sur la publicité et, surtout, publier des podcasts, des vidéos et des blogs.
La configuration requise pour cette petite application Web pourrait ressembler à ceci:
- Téléchargement rapide pour l'Amérique du Nord avec diffusion de podcasts en direct
- Pas d'échecs dans les 15 premières minutes pour 99,99% des utilisateurs, de préférence un manque total d'échecs
- Bonne intégration avec Google Adwords et éventuellement d'autres systèmes publicitaires tiers si vous avez le temps
- Liens dynamiques vers les derniers produits de la boutique et, si possible, recommandations aux utilisateurs en fonction des pages consultées.
- Intégration avec Facebook Live Player. Si vous pouvez facilement créer une solution de streaming alternative sans Facebook, alors encore mieux
Vous donnez ces spécifications à l'équipe des entrepreneurs et leur parlez un peu. Tout semble être sur la même longueur d'onde. Mais quand ils montrent un prototype en deux mois, votre visage est rempli de sang. Vous avez dépensé 15 000 $ pour un déchet - et vous voulez récupérer votre argent.
Lorsque vous ouvrez pour la première fois l'application se bloque. Vous demandez comment choisir le type de bannières - et elles vous montrent une interface utilisateur laide et incompréhensible. La moitié des liens vers les marchandises dans le magasin sont rompus ou il n'y a pas d'images, et la diffusion en direct via Facebook est en retard!
Mais l'équipe de développement ne comprend pas votre colère. En fait, de leur point de vue, ils ont réussi à faire un travail extrêmement difficile.
Ils mettent leur âme dans la création de l'application, elle a des fonctionnalités étonnantes:
- Le système de recommandation le plus avancé
- Algorithme de décryptage de texte en temps réel pour tous les flux audio
- La page d'accueil se charge plus rapidement que 200 ms dans le monde entier
- Le protocole de streaming et le client sont faits presque à partir de zéro, sauf si vous voulez vous fier à Facebook Live
- Un service a été développé qui facilite l'intégration de plus de 20 échanges publicitaires
Le problème est que vous avez demandé un produit de base avec plusieurs fonctionnalités supplémentaires, à condition qu'elles soient assez simples à implémenter. Et l'équipe de développement a compris différemment. Ils ont entendu des tâches passionnantes à faire ... et de nombreuses fonctionnalités de base ennuyeuses qui ne valent pas beaucoup d'attention et des tests rigoureux.
Pire encore, vous n'avez pas communiqué directement avec les développeurs - vous avez parlé via un téléphone endommagé. Vous avez parlé avec un vendeur qui a eu des réunions avec des managers de niveau intermédiaire. Ils ont écrit quelques spécifications commerciales pour le chef de projet, qui a rédigé les spécifications techniques - et les a données au chef d'équipe ou à l'architecte, et lui et son équipe ont commencé à développer le produit. Chaque lien a introduit une distorsion en cours de route.

Les problèmes imaginaires sont souvent plus intéressants à résoudre que les vrais. Les personnes avec un excès d'intelligence jouent à des jeux compétitifs, inventent et résolvent des problèmes mathématiques et écrivent des livres pour répondre à des questions abstraites sur la nature humaine - et tout cela est gratuit, juste pour le plaisir. Mais un programmeur médiocre est susceptible de vous facturer des frais élevés pour la création d'une application Android simple. Ce n'est pas parce que les programmeurs médiocres sont plus difficiles à trouver que les génies, mais parce que les premières activités sont intéressantes et les dernières assez ennuyeuses.
La plupart des programmeurs veulent être payés et s'amuser en même temps. Bien sûr, la définition de «intéressant» est différente pour tout le monde, mais pour de nombreux ingénieurs, il s'agit de résoudre des problèmes intéressants et complexes qui relèvent de la solvabilité.
Donnez à une personne intelligente trop de tâches ennuyeuses qui ne peuvent pas être automatisées et vous finirez par le rendre fou. Cependant, le cerveau humain, après des milliards d'années d'évolution, est devenu très inventif pour maintenir la raison. Tout comme les victimes de privation ou d'abus d'enfants trouvent le salut dans les livres de science-fiction, les victimes des programmes d'entreprise et les pigistes recherchent le salut pour résoudre des problèmes imaginaires.

Le nombre de problèmes imaginaires qu'un ingénieur logiciel peut créer pour lui-même dépend de son imagination et de la complexité des problèmes réels qui doivent être résolus.
Il convient de noter que ce problème n'est pas propre aux développeurs. La direction, les ventes, les ressources humaines, le support, les services juridiques et même comptables - ont tous leurs propres façons de créer des problèmes imaginaires. Certains tentent d'entrer dans le processus décisionnel lorsque leur présence à la réunion est simplement une formalité ou n'est pas du tout requise. D'autres surestiment le problème mineur associé à leur rôle ou emploient beaucoup plus d'employés que nécessaire pour démontrer leur importance.
Lorsque les problèmes sont trop stupides, les personnes intelligentes trouveront un moyen de rectifier la situation.
Mais les problèmes imaginaires ne viennent pas seulement des développeurs ennuyés. Ils résultent également de longues chaînes de communication.
Quand je viens de commencer à chercher des clients en tant que pigiste, je ne pouvais pas me permettre de développer la communication à ma discrétion. J'ai donc dû faire face à de longs fils de discussion contenant des centaines de lettres, où des détails mineurs sur le MVP interne ont été discutés. Pendant la semaine, les gens ont changé chaque exigence du projet. J'ai eu des clients qui ont posé de telles questions: "Sera-t-il compatible avec l'ICO?" ou "Puis-je ajouter de l'IA ici?"
Bien sûr, la plupart des clients ont suffisamment d'expérience, mais même ils manquent souvent de connaissances pour formuler ou construire certaines exigences. C'est normal, car une partie de mon travail en tant que «technicien en informatique» consiste à aider les gens à comprendre ce qu'ils font et ce dont ils n'ont pas besoin, en fonction de leur situation spécifique. Mais il est beaucoup plus difficile de déterminer s'il y a plusieurs joints entre vous et le client.
Les exigences changent parce que quelqu'un a mal compris l'intention ou a tenté de faire face à l'ennui susmentionné
La plupart des entreprises aiment démarrer un vendeur qui harcèle les clients potentiels, négocie et décrit généralement le produit. Il existe également des
spécialistes ayant des compétences de communication avancées pour discuter avec le client de spécifications et d'exigences plus détaillées: il s'agit généralement du même vendeur, mais un peu avec un titre de poste différent. Et il y a un système interne d'entreprise, différents niveaux de gestion et, éventuellement, une certaine hiérarchie dans l'équipe technique.
Lorsque la liste des exigences d’un client passe par tant de personnes, même si ces personnes ont les meilleures intentions, quelque chose est inévitablement perdu dans le processus. Cela se produit parfois parce que l'exigence d'origine n'avait pas de sens ou doit être modifiée. Peut-être que le vendeur a dit au client: "En seulement 39 999, nous le ferons sur la blockchain d'en haut." Il a accepté, mais tout le monde doit deviner ce que cela signifie de faire sur la blockchain.
Le plus souvent, les exigences changent soit parce que quelqu'un a mal compris l'intention, soit essayé de faire face à l'ennui susmentionné, en essayant de rendre leur travail ou le travail de leur équipe plus intéressant et impressionnant.
Derrière tout cela, les exigences initiales sont perdues - les vrais problèmes qui doivent être résolus. Ils sont remplacés par des problèmes et des vides imaginaires, et vous avez beaucoup de gens qui sont prêts et désireux de combler ces vides avec leurs problèmes imaginaires, parce que les vrais problèmes qu'ils doivent résoudre sont ennuyeux, et remplir les vides leur donne satisfaction.
Complexité excessive et sélection naturelle
Il y a souvent une raison plus sombre pour l'apparition de problèmes imaginaires: de tels problèmes aident une équipe ou une entreprise à se développer, ils peuvent même devenir une partie intégrante de son travail.
«Les personnes qui sont retirées, sélectionnées et encouragées à rechercher des solutions complexes ne sont pas incitées à introduire des solutions simplifiées.»
- Nassim Nicholas Taleb
Avez-vous entendu parler de ces trois programmeurs qui ont trouvé une solution vraiment simple pour des services bancaires en ligne sécurisés? Ils ont développé un logiciel bancaire sans faille à partir de zéro en utilisant une méthodologie de conception fonctionnelle et des langages sécurisés, puis ont commencé à transférer les grandes banques vers leur incroyable infrastructure.
Vous n'en avez peut-être pas entendu parler, car ils n'existent pas. Mais il existe de nombreuses équipes de
milliers de développeurs qui ne sont pas en mesure d'apprendre des concepts simples, tels que «revenir à l'ancienne version» , et ils sont constamment occupés à créer des logiciels bancaires.
Le stockage et la transmission de numéros ne sont pas un problème particulièrement difficile. Indexer tout le contenu d'Internet et afficher le résultat correspondant pour une requête en langage naturel en une fraction de seconde est une autre affaire.
Mais seuls quelques gars intelligents ont réussi à résoudre ce problème.
Le problème chronique des services bancaires en ligne est que l'écosystème bancaire a vraiment excellé dans sa propre hiérarchie d'appropriation monétaire. Ses dirigeants sont
des sangsues corrompues qui collent au corps de la société, mais les chefs d'organisation ne reflètent que l'état de l'ensemble du système.
Je ne dis pas que la plupart des employés de banque ordinaires sont des personnalités vicieuses et nuisibles. Pas du tout. En règle générale, ce sont des gars sympathiques qui gagnent de l'argent pour la nourriture, le logement et l'éducation de leurs familles. Mais leur principale motivation n'est pas de réparer les logiciels bancaires, mais d'économiser du travail. La perte d'un emploi dans l'économie moderne est un problème grave pour certaines personnes, et dans le secteur bancaire, un mot imprudent ou une initiative excessive est un moyen facile de se présenter devant un comité de discipline.
Ainsi, les systèmes bancaires restent les mêmes - non pas parce qu'ils sont efficaces, mais à cause de l'inertie. Cette inertie se manifeste sous la forme de la résolution de problèmes imaginaires afin d'éviter de résoudre des problèmes réels - dont la solution, comme nous l'avons déjà noté, menace le travail des autres. La résolution de ces problèmes réels peut entraîner le licenciement ou, dans le cas de certaines «institutions» particulièrement désagréables comme Goldman Sachs, plusieurs lettres qui ruinent la vie de l'ancien employé et se terminent par un
étrange suicide .
"Il est difficile d'amener une personne à comprendre quelque chose si son salaire dépend de ce qu'il ne comprend pas!"
- Upton Sinclair
Les sociétés ordinaires ignorent le fait que la haute direction passe 90% de son temps à «rencontrer des clients», y compris des voyages dans les îles tropicales et des millions de budgets pour les «frais généraux». À son tour, la haute direction ferme les yeux sur la corruption dans les rangs.
Alors que les managers de niveau intermédiaire encouragent leurs fantasmes de Wall Street à la manière d'un loup, la direction ferme les yeux sur le comportement de ces managers qui achètent des bureaux excentriques, embauchent trois secrétaires et une dizaine de stagiaires.
Comme les gestionnaires ordinaires ne se plaignent pas de leurs fantasmes dictatoriaux et de leur soif de pouvoir, les gestionnaires de niveau intermédiaire ferment les yeux sur le fait qu'au lieu de réduire les coûts, ils passent du temps sur la présentation de PowerPoint «Améliorer notre méthodologie agile agile».
Comme les chefs d'équipe ne remarquent même pas que leurs patrons ne savent même pas comment utiliser Excel et se rendent au bureau deux fois par semaine, les gestionnaires ordinaires ferment les yeux lorsque les chefs d'équipe et les architectes parlent de «la prochaine génération d'interaction entre nos systèmes via JRPC et les microservices utilisant Hibernate et Spring »lorsque ces fichues requêtes MySQL sont exécutées pendant plus d'une journée.
Étant donné que les développeurs ne semblent pas remarquer que leurs chefs d'équipe n'écrivent pas de code autre que des diagrammes, les chefs d'équipe ne se plaignent pas de leurs développeurs, qui, au lieu d'expliquer les freins de la demande ci-dessus, refont l'interface utilisateur pour la dixième fois en un an en utilisant le nouveau cadre JavaScript.
C'est un cercle vicieux pour résoudre des problèmes imaginaires: du PDG qui ne comprend pas que voler 30 millions supplémentaires ne lui donnera pas l'amour parental, au stagiaire qui ne comprend pas que le nouveau bouton "Soumettre" sur Angular-Material-Bootstrap 19.13.5 ne changera pas que les mots de passe sont stockés en texte brut (et sont utilisés pour vérifier les cookies).
Mais tout le monde doit continuer à résoudre des problèmes imaginaires, car s'ils cessent de le faire, ils commenceront à se concentrer sur de vrais problèmes - et ils comprendront que tout le système est en panne. Ils peuvent comprendre que dans le coin du bureau, Debra examine les graphiques de disponibilité du cluster de serveurs depuis dix ans, bien qu'il y ait cinq ans, la société soit passée à AWS. Ils peuvent comprendre que 99% de leurs tâches sont nécessaires uniquement pour sauver le travail de quelqu'un d'autre. Et cette prise de conscience difficile à accepter, j'ose le dire, est même impossible pour la majorité. Par conséquent, la plupart trouvent un moyen de s'adapter.