5 façons de corriger l'entropie logicielle pour les startups
Publié: 2019-01-21Les startups drainent la plupart de leurs ressources pour atteindre le marché le plus tôt possible
Une bonne qualité nécessite beaucoup de temps et d'argent pour être atteinte, et c'est là que la plupart des startups souffrent
Écrivez et réécrivez une partie intégrante du code et prenez l'habitude de le faire au fur et à mesure que vous avancez
"Une 'startup' est une entreprise qui est confuse sur - 1. Quel est son produit, 2. Qui sont ses clients 3. Comment gagner de l'argent." – Dave McClure, fondateur de 500 startups
Au cours de son parcours, une startup tech a trois leviers de succès : le coût, la rapidité et la qualité.
Malheureusement, vous ne pouvez en choisir que deux à la fois. Donc, si vous choisissez la vitesse et le coût, vous devrez peut-être sacrifier la qualité. Ou, si vous choisissez la vitesse et la qualité, cela risque de vous coûter des millions. Ce choix de deux sur trois conduit à l'entropie logicielle, qui est un cas de « ce qui est fait ne peut être défait », comme le dit Lady Macbeth, ou en termes techniques, vous diriez : « Dans un système fermé tel que la technologie logicielle, un la qualité appauvrissante du produit ne peut pas être améliorée sur une période de temps.
Nous discuterons plus en détail de l'entropie logicielle, des facteurs qui y conduisent et des solutions possibles. Avant cela, il est important de comprendre ce qui conduit à l'entropie logicielle.
Les trois leviers des startups
La rapidité
Une fois que vous avez pataugé dans les eaux des startups, vous vous rendez compte que le temps est la ressource la plus limitée des trois facteurs susmentionnés. Jusqu'à ce qu'une startup commence à voir une certaine traction en termes de revenus, elle n'est jamais qualifiée d'entreprise.
Pour tirer le meilleur parti de la quantité amorcée, un produit rapide généralement appelé la "version bêta" et souvent d'une "qualité modérée" (par rapport au produit cible), est lancé pour conquérir le marché le plus tôt possible.
Les startups drainent la plupart de leurs ressources pour atteindre le marché le plus tôt possible, mettant tout en œuvre pour atteindre la « vitesse », qui, à bien des égards, est le levier le plus populaire des trois.
Coût
Par rapport au temps, le coût est tangible dans tous les sens. C'est le battement de cœur d'une startup.
"Il n'y a que deux priorités pour une startup : gagner le marché et ne pas manquer de liquidités." –Ben Horowitz
Plus le solde de votre compte est élevé, plus vous survivez longtemps. Au cours de la phase initiale d'une startup, la plupart des ressources sont consacrées à l'organisation d'actifs importants (lire également les passifs) pour votre organisation, tels que le paiement du bureau, du mobilier, d'Internet, des salaires et bien plus encore.
Le plus souvent, les startups ont du mal à s'offrir les meilleurs développeurs de l'industrie en raison de contraintes budgétaires. Habituellement, les meilleurs codeurs ou cadres supérieurs sont laissés pour plus tard, avec l'intention de les embaucher lorsque l'argent affluera.
Qualité
Un bon travail coûte cher, un excellent travail coûte plus cher et un travail de qualité a un coût exceptionnel. La qualité est le plus difficile à atteindre. Une bonne qualité nécessite beaucoup de temps et d'argent pour être atteinte. Et c'est là que la plupart des startups souffrent.
La plupart des startups démarrent avec des fonds limités et s'efforcent de réaliser des bénéfices dès que possible. Ils visent à être prêts pour la production et à vendre avant de manquer de capital. Tant que l'entreprise n'est pas en phase de croissance, un entrepreneur s'efforce de produire rapidement et de pénétrer le marché. Cela permet à ces startups d'acquérir des parts de marché et de collaborer pour tirer parti des retours clients.
La plupart des entreprises commencent avec une "version bêta" qui peut générer une certaine traction et financer leurs besoins à mesure qu'elles gravissent les échelons dans un marché caractérisé par une concurrence féroce pour leur produit.
Les startups embauchent généralement de nouveaux développeurs et ingénieurs (peu ont le budget pour embaucher des développeurs seniors) qui comprennent leurs exigences, ont un certain sens du développement et peuvent créer le produit avec le moins de ressources. Et sans aucun doute, ces développeurs viennent à moindre coût. Ils sont faciles à mouler et peuvent souvent travailler en équipes irrégulières.
Raghav Chandra, co-fondateur/CTO, Urbanclap, déclare
"La qualité est souvent considérée comme un compromis entre la vitesse (sprints plus longs, plus d'écriture/de test de code, etc.) et le coût (plus d'ingénieurs, une meilleure qualité d'infra, etc.). Cependant, dans les étapes les plus jeunes, une bonne qualité est un énorme coup de pouce pour la vitesse et le coût.
La qualité a plusieurs aspects : c'est la conception architecturale (!= infra) qui joue le plus grand levier dans les premiers temps.
La plus grande perte de temps se produit soit lors de la recherche de bogues (en passant par la chaîne d'appels), soit lors de la création de fonctionnalités sur un code mal conçu - à la fois des produits d'une mauvaise ségrégation et de la maintenance du logiciel.
Au fur et à mesure que l'entreprise commence à se développer et à réaliser des bénéfices, l'exigence de créer un produit stable apparaît. La version précédente du produit créé doit être améliorée et les codes doivent être retravaillés.
Au fur et à mesure que les clients commencent à apparaître, la qualité devient rapidement une priorité. Pour améliorer cette qualité, un employé ayant plus d'expérience et une meilleure compréhension du marché s'ajoute à l'équipe. Les développeurs seniors qui viennent à un coût plus élevé sont embauchés pour travailler sur le produit existant. Ces développeurs passent la plupart de leur temps à améliorer d'anciennes lignes de code tout en développant rapidement de nouvelles fonctionnalités de qualité supérieure.
En corrigeant les anciennes lignes de code pour développer de nouvelles fonctionnalités, la plupart des développeurs ont du mal à obtenir le résultat souhaité. Mais au fil des mois, et avec tous les efforts des équipes pour améliorer un produit, la qualité refuse de s'améliorer.
Ce facteur est appelé entropie logicielle .
Qu'est-ce que l'entropie logicielle ?
Sur la base de la définition de Wikipedia, en ce qui concerne la deuxième loi de la thermodynamique dans un système fermé (où aucune entrée ou sortie n'est effectuée), le désordre ne peut pas être réduit sur une période de temps.
Cette loi semble être pertinente même dans le cas des systèmes logiciels ; comme un système est modifié sur une période de temps, son désordre tend seulement à augmenter plutôt qu'à diminuer avec tous les efforts.
Au fur et à mesure que de nouveaux développeurs essaient d'améliorer le morceau de code existant pour améliorer la qualité, la qualité du produit s'éloigne des résultats souhaités. Au fur et à mesure que des modifications sont apportées pour corriger les lignes de code existantes, « l'entropie » ne cesse d'augmenter, conduisant à un code plus complexe et difficile à corriger. Cela conduit souvent à la frustration des développeurs et des ingénieurs logiciels. La plupart du temps, les startups en pleine croissance empruntent la voie difficile consistant à écrire des codes à partir de zéro pour corriger cette entropie.
Recommandé pour vous:
Dans le livre The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt et David Thomas écrivent,
"L'entropie logicielle est contagieuse et si elle n'est pas contrôlée, elle devient une épidémie."
Alors, comment régler le problème et quelles seraient les meilleures mesures pour embaucher un développeur capable de produire un travail de qualité en moins de temps et de budget ?
Alors, les startups doivent-elles se concentrer sur le coût, la rapidité ou la qualité ?
Anand Thaker, PDG et fondateur d'Intelliphi, déclare :
"La qualité du système doit atteindre un seuil minimum afin qu'il ne crée pas de maux de tête constants avec l'expérience de l'utilisateur"
Il y a des exceptions où les systèmes opèrent des opérations critiques ou de vie-mort.
Au cours de ces premières étapes, les startups sont encore en train de déterminer leur adéquation produit-marché. Dans un monde bruyant et hautement concurrentiel basé sur le SaaS, l'adéquation produit-marché fait ou défait une startup. De plus, la dynamique d'équipe et le leadership de l'équipe sont également à un stade de développement rapide. Le lean startup fail-fast-cheaply est une bonne philosophie pour cette raison. Considérez-le comme le premier défi d'entropie.
Au fur et à mesure que le marché des produits se solidifie, une startup planifie des reconstructions de qualité sur des pièces ou sur l'ensemble de la plate-forme. À ce stade, les efforts de qualité qui se traduisent par une meilleure expérience client ont un impact sur la croissance. Une bonne croissance permet un meilleur financement et une plus grande fidélisation de la clientèle.
Personnellement, je privilégie les startups axées sur les produits et les fondateurs de startups. Habituellement, les solutions et la vision sont robustes et leur approche intègre la résilience… et leurs sorties et multiples sont bien plus importantes (3 à 5 fois plus que les autres startups typiques). Pour ces types de startups/fondateurs, ils sont très susceptibles de respecter l'entropie, cependant, même leur compréhension des étapes précédentes concerne la vitesse et l'aptitude à acquérir un élan initial critique.
Comment les startups peuvent-elles réduire l'entropie logicielle ?
Commencez avec une technologie minimale
Le CTO d'UrbanClap parle de l'utilisation d'une technologie minimale et réutilisable comme de "l'incapacité de séparer correctement les préoccupations, ce qui conduit à des conceptions d'équipe mauvaises et gonflées et à des coûts d'infra sur-gonflés. Pour bien le résoudre, le levier le plus important et le plus important est de maîtriser la culture de la conception architecturale intentionnelle.
- solide culture d'examen de la conception axée sur la modularité et la conception intentionnelle pour la réutilisation
- des cadres plutôt que des lignes directrices – avec de petites équipes, l'évangélisation des meilleures pratiques est un processus lent. Il vaut mieux "automatiser" les meilleures pratiques par les ingénieurs qui créent des cadres et des outils pour standardiser différentes pièces d'ingénierie. »
La plupart des startups commencent avec une certaine idée, et elle évolue sur une période, ajoutant de nouvelles idées, fonctionnalités et parfois elle se transforme en un produit complètement nouveau. Assurez-vous que la technologie A que vous utilisez pendant vos premiers jours de la fondation est compatible avec la technologie B qui peut fusionner avec la technologie C que vous pourriez utiliser à l'avenir.
Au fur et à mesure que la vision d'une entreprise évolue, le produit évolue également, et diverses technologies sont introduites (ou perturbées) au cours de ce voyage. Assurez-vous d'utiliser un minimum de technologie jusqu'à ce que votre produit soit stable et prêt à l'emploi. Optimisez votre code.
Pensez à l'optimisation du code
Écrivez et réécrivez une partie intégrante du code et prenez l'habitude de le faire au fur et à mesure que vous avancez. Cela vous aide à garder une trace de tout le code mis en ligne à l'arrière d'un produit brillant.
L'écriture d'une partie intégrante du code aide un nouvel employé à réviser des parties importantes avant d'envoyer un nouveau commit. Les parties intégrales aident à différencier la bonne partie du code de la mauvaise.
Revérifier les commits
Avez-vous déjà commis un code ? Sinon, mettez-le sur votre liste de choses à faire.
C'est une mesure de l'effort et de l'engagement que les développeurs mettent dans une organisation. Le premier code engagé est célébré dans la plupart des startups. Il est temps de revérifier ces commits. Pas le premier, pas le dernier, mais tous.
Rendre obligatoire pour les pairs de passer par tous les commits de code pour s'assurer que rien n'est laissé au hasard pour obtenir le meilleur code de qualité.
N'oubliez pas les outils d'évaluation lors de l'embauche
Au fil du temps, vous vous rendrez compte que vous ne pouvez pas justifier la mauvaise qualité des codes auprès de vos clients, en blâmant le temps et le coût.
L'utilisation d'un logiciel d'évaluation technologique dès votre première embauche garantit que vous traitez avec des employés qui comprennent vos besoins et sont capables de produire des résultats sous pression.
Chaque mauvaise embauche dans une startup coûte près de 18 000 $, du salaire et des avantages à tous les processus impliqués dans l'embauche - le plus important, les heures d'entretien et d'évaluation passées par une petite équipe, travaillant sur des projets importants.
Le logiciel de recrutement technique est livré avec des fonctionnalités telles que plusieurs langages de programmation, la création automatisée de tests et des rapports détaillés sur les candidats. De nombreuses fonctionnalités anti-plagiat aident les équipes à rester à l'abri des tracas habituels de «garder un œil».
Des tâches telles que « Projet Java » (partie d'un projet existant partagé en tant que devoir) peuvent être partagées avec des candidats qui travaillent dans un environnement de codage réel en engageant des codes réels, ce qui donne une bonne image du travail qui doit être fait.
Fais tes devoirs
Enfin et surtout, faites vos devoirs. Suivez les influenceurs, lisez des livres, connectez-vous avec des personnes dans un domaine similaire.
De nombreuses personnes ont travaillé dur pour améliorer l'entropie logicielle dans leur organisation.
Anand Thaker dit,
« La connaissance et la communication sont essentielles pour améliorer l'entropie. Nous avons connu l'entropie lors du départ d'un membre de l'équipe qui avait une connaissance approfondie d'une partie du système.
Une autre est lorsque certaines parties du logiciel restent intactes pendant plusieurs mois ou années. Assurez des révisions régulières de ces capacités et du code/logique sous-jacent.
Envisagez également de donner un ton/une culture à la philosophie du développement.
L'entropie existera toujours, mais limiter sa croissance est donc un art. En tant que responsables techniques ou exécutifs, vous le savez peut-être déjà, mais le développement de logiciels est un processus discipliné. Les bons membres de l'équipe sont fiers de leur travail. La reconnaissance de cet effort par leurs pairs va très loin. Parlez et discutez des apprentissages que les gens ont appris au fil du temps.
Conclusion
Dans leur phase initiale, les startups doivent-elles miser sur la qualité ?
La mauvaise qualité du code a été l'une des principales raisons de l'échec de nombreuses startups. Beaucoup de temps, d'argent et d'efforts ont été perdus pour l'améliorer sur une période de temps. De simples commentaires comme « le code est mauvais » pour « améliorer cette ligne » valent mieux que de ne rien faire pour améliorer le code.
Les startups sont un phénomène économique qui innove et change le monde.
Les suggestions de Raghav Chandra pour les startups souffrant d'entropie sont les suivantes : "Pour les petites équipes, j'ai trouvé un meilleur effet de levier en ayant plus d'équipes et en gardant l'organisation plate, où tout le monde est actif.
En tant que Tech Leads / Managers, il est important de préparer l'équipe à mieux "penser". Les efforts déployés pour mieux penser sont ce qui aide, cela se traduit par moins de temps pour réparer les choses plus tard.
Et le brainstorming et la réflexion approfondie avant la mise en œuvre ne sont pas un compromis sur le temps ou le coût - c'est en effet le moyen le moins cher de construire pour la qualité au niveau du système.
Il est temps de nous soucier de l'entropie et d'embaucher les meilleurs développeurs qui peuvent aider à la réduire à partir des produits que nous construisons.