5 Möglichkeiten, Software-Entropie für Startups zu beheben
Veröffentlicht: 2019-01-21Startups verbrauchen die meisten ihrer Ressourcen, um so schnell wie möglich auf den Markt zu kommen
Gute Qualität erfordert viel Zeit und Kosten, um sie zu erreichen, und hier leiden die meisten Startups
Schreiben und überschreiben Sie einen integralen Teil des Codes und machen Sie es sich zur Gewohnheit, dies im weiteren Verlauf zu tun
„Ein ‚Startup‘ ist ein Unternehmen, das verwirrt ist über – 1. Was sein Produkt ist, 2. Wer seine Kunden sind, 3. Wie man Geld verdient.“ – Dave McClure, Gründer von 500 Startups
Auf seiner Reise hat ein Tech-Startup drei Erfolgshebel: Kosten, Geschwindigkeit und Qualität.
Leider können Sie nur zwei gleichzeitig auswählen. Wenn Sie sich also für Geschwindigkeit und Kosten entscheiden, müssen Sie möglicherweise auf Qualität verzichten. Oder, wenn Sie sich für Geschwindigkeit und Qualität entscheiden, wird es Sie wahrscheinlich Millionen kosten. Diese Wahl von zwei über drei führt zu Software-Entropie, was ein Fall von „Was getan wurde, kann nicht rückgängig gemacht werden“ ist, wie Lady Macbeth sagt, oder in technischer Hinsicht würden Sie sagen: „In einem geschlossenen System wie der Software-Technologie, a Eine nachlassende Produktqualität kann nicht über einen längeren Zeitraum verbessert werden.“
Wir werden mehr über Software-Entropie, Faktoren, die dazu führen, und mögliche Lösungen diskutieren. Zuvor ist es wichtig zu verstehen, was zu Software-Entropie führt.
Drei Hebel für Startups
Geschwindigkeit
Sobald Sie in die Gewässer von Startups waten, erkennen Sie, dass Zeit die begrenzteste Ressource aller drei oben genannten Faktoren ist. Bis ein Startup in Bezug auf die Einnahmen eine gewisse Zugkraft sieht, wird es nie als Unternehmen bezeichnet.
Um die Bootstrap-Menge optimal zu nutzen, wird ein schnelles Produkt, das normalerweise als „Beta-Version“ bezeichnet wird und oft von „gedämpfter Qualität“ (im Vergleich zum Zielprodukt) ist, veröffentlicht, um den Markt so früh wie möglich zu erobern.
Startups verbrauchen den größten Teil ihrer Ressourcen, um so schnell wie möglich auf den Markt zu kommen, und setzen alles daran, „Geschwindigkeit“ zu erreichen, was in den meisten Fällen der beliebteste Hebel der drei ist.
Kosten
Im Zeitvergleich sind die Kosten in jeder Hinsicht greifbar. Es ist der Herzschlag eines Startups.
„Für ein Startup gibt es nur zwei Prioritäten: Den Markt erobern und nicht das Geld ausgehen.“ – Ben Horowitz
Je höher das Guthaben auf Ihrem Konto ist, desto länger überleben Sie. In der Anfangsphase eines Startups werden die meisten Ressourcen darauf verwendet, wichtige Vermögenswerte (auch Verbindlichkeiten) für Ihr Unternehmen zu arrangieren, z. B. die Bezahlung des Büros, der Möbel, des Internets, der Gehälter und vieles mehr.
In den meisten Fällen haben Startups aufgrund von Budgetbeschränkungen Schwierigkeiten, sich die Top-Entwickler aus der Industrie zu leisten. Normalerweise werden Top-Programmierer oder Senior-Manager für später übriggelassen, mit der Absicht, sie einzustellen, wenn Geld fließt.
Qualität
Gute Arbeit ist teuer, großartige Arbeit ist teurer und Qualitätsarbeit hat außergewöhnliche Kosten. Qualität ist am schwierigsten zu erreichen. Gute Qualität erfordert viel Zeit und Kosten, um sie zu erreichen. Und hier leiden die meisten Startups.
Die meisten Startups starten mit begrenzten Mitteln und streben danach, so schnell wie möglich Gewinne zu erzielen. Sie wollen produktionsbereit sein und verkaufen, bevor ihnen das Kapital ausgeht. Bis sich das Unternehmen in einer Wachstumsphase befindet, strebt ein Unternehmer danach, schnell zu produzieren und den Markt zu durchdringen. Dies ermöglicht es diesen Startups, Marktanteile zu gewinnen und zusammenzuarbeiten, um auf Kundenfeedback aufzubauen.
Die meisten Unternehmen beginnen mit einer „Beta-Version“, die eine gewisse Traktion erzeugen und ihre Anforderungen finanzieren kann, während sie in einem Markt, der durch einen harten Wettbewerb um ihr Produkt gekennzeichnet ist, die Leiter hinaufsteigen.
Startups stellen in der Regel frische Entwickler und Ingenieure ein (nur wenige haben das Budget, um erfahrene Entwickler einzustellen), die ihre Anforderungen verstehen, ein gewisses Gespür für Entwicklung haben und das Produkt mit den geringsten Ressourcen erstellen können. Und zweifellos sind diese Entwickler zu geringeren Kosten erhältlich. Sie sind leicht zu formen und können oft in ungeraden Schichten arbeiten.
Sagt Raghav Chandra, Mitbegründer/CTO von Urbanclap
„Qualität wird oft als Kompromiss zwischen Geschwindigkeit (längere Sprints, mehr Code-Schreiben/Testen usw.) und Kosten (mehr Ingenieure, bessere Infrastruktur usw.) angesehen. In den jüngeren Stadien ist eine gute Qualität jedoch ein enormer Geschwindigkeits- und Kostenschub.
Qualität hat mehrere Aspekte: Es ist das architektonische Design (!= infra), das in den frühen Tagen den größten Hebel ausübt.
Die größte Zeitverschwendung entsteht entweder beim Auffinden von Fehlern (Durchlaufen der Aufrufkette) oder beim Erstellen von Funktionen auf schlecht gestaltetem Code – beides Produkte einer schlechten Trennung und Wartung der Software.“
Wenn das Unternehmen zu wachsen beginnt und Gewinne erwirtschaftet, taucht die Anforderung auf, ein stabiles Produkt zu entwickeln. Die frühere Version des erstellten Produkts muss verbessert und Codes überarbeitet werden.
Wenn Kunden auftauchen, wird Qualität bald zu einer Priorität. Um diese Qualität zu verbessern, wird das Team um einen Mitarbeiter mit mehr Erfahrung und besserem Marktverständnis erweitert. Ältere Entwickler, die mit höheren Kosten verbunden sind, werden eingestellt, um an dem vorhandenen Produkt zu arbeiten. Diese Entwickler verbringen die meiste Zeit damit, alte Codezeilen zu verbessern und gleichzeitig schnell neue, hochwertige Funktionen zu entwickeln.
Die meisten Entwickler kämpfen damit, alte Codezeilen zu reparieren, um neue Funktionen zu entwickeln, um das gewünschte Ergebnis zu erzielen. Aber im Laufe der Monate und mit all den Bemühungen der Teams, ein Produkt zu verbessern, weigert sich die Qualität, sich zu verbessern.
Dieser Faktor wird als Software-Entropie bezeichnet.
Was ist Softwareentropie?
Basierend auf der Definition von Wikipedia kann die Unordnung in Bezug auf den zweiten Hauptsatz der Thermodynamik in einem geschlossenen System (in dem keine Eingabe oder Ausgabe erfolgt) nicht über einen bestimmten Zeitraum reduziert werden.
Dieses Gesetz scheint sogar für Softwaresysteme relevant zu sein; Wenn ein System im Laufe der Zeit modifiziert wird, nimmt seine Unordnung mit all der Anstrengung eher zu als ab.
Wenn neue Entwickler versuchen, den vorhandenen Code zu verbessern, um die Qualität zu verbessern, entfernt sich die Produktqualität immer weiter von den gewünschten Ergebnissen. Während die Änderungen vorgenommen werden, um die vorhandenen Codezeilen zu korrigieren, nimmt die „Entropie“ weiter zu, was zu komplexerem Code führt, der schwer zu beheben ist. Dies führt oft zu Frust bei den Entwicklern und Software-Ingenieuren. Meistens nehmen wachsende Startups den harten Weg, Codes von Grund auf neu zu schreiben, um diese Entropie zu beheben.
Für dich empfohlen:
In dem Buch The Pragmatic Programmer: From Journeyman to Master schreiben Andrew Hunt und David Thomas:
„Software-Entropie ist ansteckend und wird, wenn sie nicht kontrolliert wird, zu einer Epidemie.“
Wie können wir dann das Problem beheben und was wären die besten Maßnahmen, um einen Entwickler einzustellen, der in kürzerer Zeit und mit geringerem Budget qualitativ hochwertige Arbeit leisten kann?
Sollten sich Startups also auf Kosten, Geschwindigkeit oder Qualität konzentrieren?
Anand Thaker, CEO und Gründer von Intelliphi, sagt:
„Die Qualität des Systems sollte eine Mindestschwelle erreichen, damit es nicht ständig Kopfschmerzen mit der Erfahrung des Benutzers verursacht“
Es gibt Ausnahmen, bei denen Systeme kritische oder lebensgefährliche Operationen durchführen.
In diesen frühen Phasen finden Startups noch heraus, wie ihr Produkt zum Markt passt. In einer lauten und hart umkämpften SaaS-basierten Welt entscheidet der Produkt-Markt-Fit über oder unter einem Startup. Darüber hinaus befinden sich auch die Teamdynamik und Führung des Teams in einer sich rasant entwickelnden Phase. Aus diesem Grund ist das Lean Startup Fail-Fast-Billig eine gute Philosophie. Betrachten Sie es als die erste Entropie-Herausforderung.
Wenn sich der Produktmarkt verfestigt, plant ein Startup entweder hochwertige Umbauten von Teilen oder die gesamte Plattform komplett. An diesem Punkt wirken sich Qualitätsbemühungen, die zu besseren Kundenerlebnissen führen, auf das Wachstum aus. Gutes Wachstum sorgt für mehr Finanzierung und Kundenbindung.
Ich persönlich bevorzuge produktgeführte Startups und Startup-Gründer. Normalerweise sind die Lösungen und Visionen robust und ihr Ansatz beinhaltet Resilienz … und ihre Exits und Multiples sind weitaus größer (3- bis 5-mal mehr als bei anderen typischen Startups). Für diese Arten von Startups/Gründern respektieren sie die Entropie sehr wahrscheinlich, aber selbst ihr Verständnis der früheren Phasen dreht sich um Geschwindigkeit und Eignung, um eine entscheidende Anfangsdynamik zu erreichen.“
Wie können Startups die Software-Entropie reduzieren?
Beginnen Sie mit minimaler Technologie
Der CTO von UrbanClap spricht über die Verwendung minimaler und wiederverwendbarer Technologie als „die Unfähigkeit, Bedenken richtig zu trennen, was zu schlechten und aufgeblähten Teamdesigns und überhöhten Infrastrukturkosten führt. Um es gut zu lösen, besteht der größte und wichtigste Hebel darin, die Kultur des absichtlichen architektonischen Designs zu verbessern.
- starke Design-Review-Kultur, die sich auf Modularität und absichtliches Design zur Wiederverwendung konzentriert
- Frameworks statt Richtlinien – mit kleinen Teams ist die Evangelisierung von Best Practices ein langsamer Prozess. Es ist besser, Best Practices zu „automatisieren“, indem Ingenieure Frameworks und Tools erstellen, um verschiedene Teile des Engineerings zu standardisieren.“
Die meisten Startups beginnen mit einer bestimmten Idee, die sich im Laufe der Zeit weiterentwickelt, neue Ideen und Funktionen hinzufügt und manchmal zu einem völlig neuen Produkt wird. Stellen Sie sicher, dass Technologie A, die Sie in den ersten Tagen der Gründung verwenden, mit Technologie B kompatibel ist, die mit Technologie C verschmelzen kann, die Sie möglicherweise in Zukunft verwenden.
Wenn sich die Vision eines Unternehmens weiterentwickelt, entwickelt sich auch das Produkt, und während dieser Reise werden verschiedene Technologien eingeführt (oder unterbrochen). Stellen Sie sicher, dass Sie nur minimale Technologie verwenden, bis Ihr Produkt stabil und einsatzbereit ist. Optimieren Sie Ihren Code.
Erwägen Sie die Code-Optimierung
Schreiben und überschreiben Sie einen integralen Teil des Codes und machen Sie es sich zur Gewohnheit, dies im weiteren Verlauf zu tun. Dies hilft Ihnen, den Überblick über den gesamten Code zu behalten, der im Backend eines Hochglanzprodukts live geht.
Das Schreiben eines integralen Teils des Codes hilft einem neuen Mitarbeiter, wichtige Teile zu überarbeiten, bevor er einen neuen Commit einsendet. Integrale Teile helfen, den guten Teil des Codes vom schlechten zu unterscheiden.
Überprüfen Sie die Commits erneut
Schon mal einen Code begangen? Wenn nicht, setzen Sie es auf Ihre Bucket List.
Es ist ein Maß für den Aufwand und das Engagement, das Entwickler in eine Organisation stecken. Der erste Committed Code wird in den meisten Startups gefeiert. Es ist an der Zeit, diese Commits erneut zu überprüfen. Nicht der Erste, nicht der Letzte, aber alle.
Machen Sie es für Peers zur Pflicht, alle Code-Commits zu durchlaufen, um sicherzustellen, dass nichts unversucht bleibt, um den qualitativ besten Code herauszuholen.
Vergessen Sie bei der Einstellung nicht die Bewertungstools
Mit der Zeit werden Sie feststellen, dass Sie die schlechte Qualität der Codes gegenüber Ihren Kunden nicht rechtfertigen können, indem Sie Zeit und Kosten dafür verantwortlich machen.
Die Verwendung von Technologiebewertungssoftware von Ihrer ersten Einstellung an stellt sicher, dass Sie es mit Mitarbeitern zu tun haben, die Ihre Anforderungen verstehen und in der Lage sind, unter Druck Ergebnisse zu erzielen.
Jede falsche Einstellung in einem Startup kostet fast 18.000 US-Dollar, vom Gehalt und den Vergünstigungen bis hin zu allen Prozessen, die mit der Einstellung verbunden sind – am wichtigsten sind die Interview- und Bewertungsstunden, die ein kleines Team für die Arbeit an wichtigen Projekten aufwendet.
Technische Rekrutierungssoftware bietet Funktionen wie mehrere Programmiersprachen, automatische Testerstellung und detaillierte Kandidatenberichte. Umfangreiche Plagiatsfunktionen helfen den Teams, sich von der üblichen Mühe des „Augenaufhaltens“ zu befreien.
Aufgaben wie „Java-Projekt“ (Teil eines bestehenden Projekts, das als Aufgabe geteilt wird) könnten mit Kandidaten geteilt werden, die in einer echten Programmierumgebung arbeiten und tatsächliche Codes schreiben, was ein richtiges Bild von der zu erledigenden Arbeit vermittelt.
Mach deine Hausaufgaben
Machen Sie zu guter Letzt Ihre Hausaufgaben. Folgen Sie Influencern, lesen Sie Bücher, treten Sie mit Menschen in einem ähnlichen Bereich in Kontakt.
Es gibt viele Leute, die hart daran gearbeitet haben, die Softwareentropie in ihrem Unternehmen zu verbessern.
Anand Thaker sagt:
„Wissen und Kommunikation sind entscheidend für die Verbesserung der Entropie. Wir haben Entropie erlebt, wenn ein Teammitglied abgereist ist, das tiefgreifende Kenntnisse in einem Teil des Systems hatte.
Ein anderer ist, wenn bestimmte Teile der Software mehrere Monate oder Jahre lang unberührt bleiben. Stellen Sie sicher, dass Sie diese Funktionen und den zugrunde liegenden Code/die zugrunde liegende Logik regelmäßig überprüfen.
Erwägen Sie auch, einen Ton/eine Kultur in der Entwicklungsphilosophie festzulegen.
Entropie wird es immer geben, aber ihr Wachstum einzudämmen ist eine Kunst. Als technischer oder leitender Mitarbeiter wissen Sie das vielleicht bereits, aber die Softwareentwicklung ist ein disziplinierter Prozess. Gute Teammitglieder sind stolz auf ihre Arbeit. Die Anerkennung dieser Bemühungen durch ihre Kollegen ist ein langer Weg.“ Sprechen und besprechen Sie die Erkenntnisse, die die Menschen im Laufe der Zeit gelernt haben.
Fazit
Sollten Startups in der Anfangsphase auf Qualität setzen?
Schlechte Codequalität war einer der Hauptgründe für das Scheitern vieler Startups. Im Laufe der Zeit wurde viel Zeit, Geld und Mühe verschwendet, um es zu verbessern. Einfache Kommentare wie „der Code ist schlecht“ oder „diese Zeile verbessern“ sind besser, als nichts zu tun, um den Code zu verbessern.
Startups sind ein Wirtschaftsphänomen, das neue Wege geht und die Welt verändert.
Raghav Chandras Vorschlag für Startups, die unter Entropie leiden, lautet: „Für kleinere Teams habe ich einen besseren Hebel gefunden, wenn es darum geht, mehr Teams zu haben und die Organisation flach zu halten, wo jeder aktiv ist.
Als Tech Leads / Manager ist es wichtig, das Team darauf vorzubereiten, besser zu „denken“. Besseres Nachdenken ist das, was hilft, was dazu führt, dass später weniger Zeit für das Reparieren von Dingen benötigt wird.
Und Brainstorming und gründliches Nachdenken vor der Implementierung sind keine Kompromisse bei Zeit oder Kosten – es ist in der Tat die billigste Art, Qualität auf Systemebene zu entwickeln.“
Es ist an der Zeit, dass wir uns um die Entropie kümmern und die besten Entwickler einstellen, die helfen können, sie von den Produkten, die wir bauen, zu reduzieren.