Pourquoi y a-t-il tant de logiciels moche dans le monde?

Nous sommes littéralement entourés de logiciels de merde. Les fonds de pension tombent sur des scripts de lots vieux de plusieurs décennies avec des hypothèses erronées . Plus de cent millions de numéros de sécurité sociale et autres données sensibles sont divulgués par les établissements de crédit . Et cela sans parler du tas de logiciels bogués et ennuyeux créés par les petits fournisseurs et les grandes entreprises.



Une telle incompétence n'aurait jamais échappé à d'autres disciplines de l'ingénierie. En aucun cas, nous n'accepterons des ponts contenant autant de bogues que le système logiciel moyen. Pourquoi la situation de conception de logiciel est-elle si désastreuse? Pourquoi y a-t-il autant de programmes de figues dans le monde?



Pour comprendre la raison de cela, nous devons d'abord comprendre comment la compétence d'un développeur est liée à l'utilité du logiciel qu'il crée pour résoudre un problème spécifique.





Dans la première catégorie, nous voyons des "développeurs" qui sont essentiellement incompétents. Il existe un large éventail de compétences dans cette catégorie, mais tout le monde y est similaire en ce que leur produit final est fonctionnellement inutile. Les ordinateurs sont impitoyables à cet égard - si vous ne savez pas comment faire compiler votre application, vous pourriez aussi bien ne pas l'écrire du tout. Si vous ne savez pas comment créer les fonctionnalités de base de votre application, personne ne l'utilisera. En dessous d'un certain seuil de compétence, vous ne pouvez pas créer de logiciel utilisable. La plupart des «développeurs» de cette catégorie expérimentent le code pendant leur temps libre et créent rarement des logiciels professionnels.



Cependant, une fois que nous franchissons le seuil, la situation change radicalement. Au bas du graphique se trouvent les développeurs capables de créer un minimum de systèmes logiciels viables. Et si ces développeurs s'améliorent, l'utilité de leur logiciel augmente également rapidement. Une application qui «fonctionnait» mais qui était lente, boguée, dangereuse et déroutante devient progressivement moins boguée, plus performante, plus sûre et plus facile à comprendre. Contrairement aux deux autres catégories, à mesure que les développeurs de cette catégorie développent des compétences, le logiciel qu'ils créent devient nettement meilleur.



Enfin, lorsque les développeurs atteignent un certain seuil de compétence, ils le franchissent.

et tombent dans la troisième catégorie. Dans une catégorie où chacun a atteint un niveau de compétence si élevé (par rapport à la tâche qu'il est en train de résoudre) qu'une croissance personnelle supplémentaire aura un effet minimal sur le produit final. Par exemple, tout ingénieur sélectionné au hasard sur Google peut créer une application CRUD ainsi que Jeff Dean .






Dans un monde idéal, les seuls développeurs des première et deuxième catégories seraient des étudiants ou de jeunes professionnels. Et tous les systèmes logiciels professionnels seraient principalement créés par des développeurs de la troisième catégorie. Des développeurs qui maîtrisent parfaitement toutes les compétences nécessaires pour résoudre leur problème et créer des solutions très proches de l'idéal théorique. Dans un monde aussi incroyable, tous les logiciels qui nous entourent seraient à peu près au même niveau de qualité élevé, fonctionneraient exactement comme prévu, avec des performances optimales et sans failles de sécurité. Dans ce monde, la société réagirait à tous les logiciels avec joie et non avec agacement.



Cependant, il y a deux problèmes entre nous et cette utopie.



Premièrement, le nombre de développeurs dans la troisième catégorie est extrêmement faible par rapport à la deuxième catégorie. La programmation est «facile à apprendre mais difficile à maîtriser». Des millions de personnes peuvent écrire un script fonctionnel, mais très peu ont maîtrisé l'art de la conception de logiciels. En outre, il n'y a aucun obstacle à entrer dans l'industrie du développement de logiciels - il n'y a pas d'analogue pour les programmeurs à l'American Medical Association ou à l'International Bar Association. Il n'est pas étonnant qu'il y ait beaucoup plus de personnes possédant des compétences initiales et intermédiaires par rapport au nombre de spécialistes compétents.



Deuxièmement, la demande de développeurs est incroyable. Les développeurs de logiciels ont la possibilité d'apporter d'énormes contributions à pratiquement n'importe quel secteur. Comparé à des professions plus niches telles que l'astronomie, où les opportunités sont sévèrement limitées, le développement de logiciels est un domaine qui manque cruellement de talents. Autrement dit, le principal problème est de trouver des développeurs de logiciels talentueux, de ne pas leur trouver des emplois qui leur conviennent.



Si vous combinez ces deux problèmes, il s'avère que la plupart des entreprises qui souhaitent embaucher des développeurs experts n'ont pas la possibilité de le faire. Il n'y a pas assez de bonnes personnes à embaucher, et ceux sur le marché reçoivent souvent des offres incomparablement meilleures de la part d'entreprises de niveau FANG ou de startups en plein essor.



Par conséquent, toutes les autres entreprises font le choix le plus optimal dans une telle situation. Ils embauchent des développeurs de la deuxième catégorie. Développeurs que l'on peut généralement qualifier de «assez bons». Leurs applications présentent des bogues, des vulnérabilités de sécurité et ne peuvent pas gérer des charges élevées. Mais au moins, ces personnes sont capables de créer quelque chose de «qui fonctionne». Quelque chose de plus utile que le statu quo. Quelque chose qui peut être déployé en production avec une analyse critique minimale.






On peut induire en erreur que cette situation est naturelle pour le monde entier et tous les professionnels. Mais en fait ce n'est pas le cas.



Il existe de nombreux postes qui nécessitent une formation sérieuse, mais qui entrent dans la catégorie des «faciles à apprendre». Ce sont des professions comme un chauffeur de taxi, un ouvrier du bâtiment ou un barman. Dans ces professions, il y a une grande proportion de travailleurs qui ont atteint la catégorie des compétences élevées, et une nouvelle amélioration des compétences n'apporte pratiquement aucun avantage.



Il existe également de nombreuses professions dans lesquelles les opportunités sont si limitées que les employeurs préfèrent n'embaucher que d'excellents spécialistes. Par exemple, cela s'applique aux pianistes. Les pianistes amateurs peuvent être trouvés dans de nombreuses familles, mais ils ne joueront jamais dans une salle de concert, car le nombre de pianistes talentueux dépasse de loin le nombre de concerts prévus.



Enfin, il existe des professions difficiles à maîtriser et offrant de nombreuses opportunités, mais qui présentent des barrières réglementaires à l'entrée. Par exemple, la pratique médicale. Il y avait beaucoup de gens dans le monde pré-Obamacare qui ne pouvaient pas se payer une assurance maladie et qui choisiraient volontiers "au moins certains" soins de santé au lieu de rien du tout (cela vaut-il la peine de faire cela est une autre question difficile)... Cependant, en raison de règles strictes, seuls ceux qui ont prouvé leur haute compétence peuvent fournir des services médicaux. La situation est similaire dans de nombreuses disciplines de l'ingénierie soumises à un contrôle réglementaire rigoureux, comme la construction de ponts et de gratte-ciel et la fabrication de matériel médical.






Le développement de logiciels est devenu une curieuse intersection de tout ce qui précède. C'est facile à apprendre, il existe donc des légions de développeurs «assez bons» à travers le monde. Des développeurs qui créent des solutions logicielles assez utiles, mais pleines de bogues et de vulnérabilités de sécurité. Dans le même temps, ce métier est difficile à maîtriser à un niveau élevé, il est donc beaucoup plus difficile de trouver des développeurs capables d'éviter de tels écueils.



L'industrie du logiciel est si riche en opportunités que la plupart des entreprises trouvent qu'il est presque impossible d'embaucher de bons professionnels. Il est si riche en opportunités que s'il existe des légions de développeurs débutants à travers le monde, il y a du travail pour chacun d'entre eux.



Enfin, dans le développement logiciel, il n'y a pas de contrôle d'entrée. Tout le monde peut suivre un programme de formation au codage, suivre quelques cours de codage en ligne et commencer à offrir ses services sur Upwork le lendemain. Et le produit de leur travail peut être immédiatement mis en production sans aucun contrôle réglementaire.



En mettant tout cela ensemble, vous pouvez comprendre pourquoi il y a tant de logiciels boiteux dans le monde. Les logiciels rongent le monde, accompagnés de bugs et de failles de sécurité.






: , , . , .



, , . CEO, «» — , .



image



All Articles