Les programmeurs 10x sont un sujet chaud à discuter dans l’industrie du logiciel de nos jours, alors j’ai pensé que ce serait une bonne idée de partager mon point de vue à cet égard.
Honnêtement, je ne connais pas la définition exacte d’un programmeur 10x, mais je suppose qu’il se réfère à des programmeurs hyper productifs (qui peuvent ne pas correspondre à exactement 10 fois la productivité, mais à un niveau significatif proche ou supérieur à 10 fois).
Sur la base de quelques succès que j’ai eus en livrant des logiciels ultra-gros pour des startups et des entreprises, et de l’expérience de travail avec quelques développeurs de premier ordre, je peux partager quelques idées sur ce sujet.
Le programmeur 10x alors
Les logiciels développés il y a 20-30 ans étaient beaucoup plus simples par rapport aux logiciels modernes, en ce qui concerne les fonctionnalités, la sécurité, les performances et l’évolutivité. D’autre part, seule une poignée de bibliothèques ou de frameworks étaient disponibles à l’époque pour mettre en œuvre toutes les fonctionnalités.
Donc, les logiciels écrits il y a 20-30 ans impliquaient une quantité importante d’efforts de programmation.
Définir un programmeur 10x dans ce contexte est comparativement facile. La différence entre la quantité d’effort de programmation de base donnée pour mettre en œuvre le même ensemble de fonctionnalités par les programmeurs 10x et réguliers.
L’ingénieur 10x maintenant
Avant d’entrer dans des détails supplémentaires, faisons une chose claire : le développement de logiciels est un processus complexe, et la programmation est juste l’un des domaines pour contribuer à un logiciel moderne.
En raison de l’utilisation accrue des logiciels, en particulier sur Internet, à la fois par les consommateurs et les organisations, les logiciels sont très complexes, et il pourrait être une décision insensée de construire quelque chose à partir de zéro. Honnêtement, à moins qu’il s’agisse d’une plateforme ou d’un système d’exploitation complètement nouveau, la programmation de base requise pour développer un logiciel moderne est moins intense par rapport aux efforts plus anciens.
Bien que les connaissances et l’effort de programmation soient encore très importants, la quantité d’effort qui est requise pour construire un grand logiciel (sans bogue, sécurisé et vendable) est en ingénierie.
Donc sur le contexte actuel, un programmeur 10x peut ne pas apporter beaucoup de valeur dans l’industrie, mais un ingénieur 10x crée un impact très large dans le processus de développement.
J’aimerais ajouter mes 3 cents ici.
1. Ils font le meilleur usage de l’outillage
Le développement de logiciels est un processus complexe, qui implique beaucoup de différents types d’efforts. Outre le codage, il implique des efforts allant de la documentation du processus au formatage des données, de la lecture des données de journal à l’envoi de rapports, des tests automatiques aux tests manuels, du débogage complexe à l’investigation manuelle des problèmes, et ainsi de suite.
Un effort énorme peut être rendu extrêmement efficace en utilisant le bon ensemble d’outils et de plateformes (qui sont appropriés au budget du client et à d’autres contraintes).
Éditeurs
La rédaction d’un logiciel implique un ou plusieurs éditeurs, dont certains sont également appelés IDE (Integrated Development Environment). Les IDE modernes, tels que Visual Studio ou Eclipse, offrent une grande quantité de fonctionnalités pour rendre les développeurs productifs, mais une quantité importante de ces fonctionnalités ne sont pas connues par la plupart des développeurs.
Les IDE populaires ont également des plugins commerciaux et gratuits (tels que Resharper), qui permettent encore plus de productivité pour les développeurs.
En dehors des IDE, d’autres éditeurs tels que NotePad++, MarkdownPad, etc. sont également très utiles dans un contexte pertinent.
Utilitaires et services en ligne
Utilitaires et services en ligne tels que la lecture ou la recherche de gros fichiers journaux, les débogueurs http comme Fiddler, les outils de construction et de déploiement, etc.
Propres outils
Les ingénieurs 10x fabriquent également leurs propres ensembles d’outils pour effectuer des actions répétitives pour lesquelles le logiciel approprié peut ne pas être disponible à l’extérieur.
Dans beaucoup de cas, les propriétaires d’entreprise dans une maison de développement logiciel ne semblent pas être intéressés à investir beaucoup dans l’outillage pour les développeurs, mais l’utilisation du bon ensemble d’outils permettra une quantité surprenante de productivité.
Pour les développeurs de logiciels, qui font partie des personnes les plus chères à embaucher, dépenser de l’argent sur les bons outils pour eux vaut la peine.
En tant que chef d’équipe de développeurs .net, le développement d’un modèle de démarrage ASP.NET Core & Visual Studio suivant les dernières pratiques de codage .net a aidé mon équipe à stimuler la productivité globale trois fois.
2. Ils ne réinventent pas la roue
L’industrie du logiciel est devenue très mature au cours des trois dernières décennies. Presque tous les problèmes que les développeurs essaient de résoudre en codant ont été résolus et sont disponibles sous forme d’API (soit sous forme binaire, soit sous forme de services Web), dont certains sont commerciaux, tandis que d’autres sont gratuits.
En outre, les frameworks open source offrent également une grande flexibilité pour comprendre le comportement sous-jacent de l’API ou la personnalisation selon les besoins des utilisateurs.
Avant de se lancer dans la programmation, les ingénieurs de 10x s’assurent en fait que ce problème n’a pas été résolu entièrement (ou partiellement) auparavant ou, si c’est le cas, qu’ils ne sont pas disponibles pour être utilisés.
3. Ils écrivent (continuellement) du code magnifiquement conçu
Écrire de grands logiciels nécessite de définir une bonne architecture qui non seulement suit de bons modèles et principes de conception, mais tire également parti des infrastructures modernes. Produire un code bien conçu permet non seulement d’écrire de nouvelles fonctionnalités plus rapidement, mais aussi de réduire les bogues de manière significative.
Mais, une belle ingénierie nécessite une amélioration continue.
J’ai vu une quantité surprenante de code de mauvaise qualité dans différents projets logiciels au cours de ma carrière professionnelle, ce qui ajoute continuellement de la dette technique. Un projet simple qui a commencé il y a 5 ans est plein de code laid non conçu et nécessite 20+ personnes pour gérer le cycle de développement (où ils passent 80% de leur temps à corriger réellement les bugs).
L’une des principales raisons derrière cette situation affreuse, j’ai trouvé, est la « peur ».
Les organisations, en particulier les entités d’entreprise, ont surtout peur du changement.
Le développement de logiciels est une discipline qui évolue incroyablement vite en termes d’outils, de cadres et d’ingénierie, et qui nécessite un changement continu pour arriver au bon endroit.
Le changement fait peur, mais il n’est pas aussi dangereux qu’il n’y paraît, surtout dans l’industrie du logiciel (avec les bons ensembles d’outils et de personnes). Mais s’il n’est pas fait comme prévu, il ne faudra pas beaucoup de temps pour que le projet soit entièrement abandonné un jour.