Warum haben große Unternehmen wie Google immer noch Bugs in ihren Produkten?

Warum haben große Unternehmen wie Google immer noch Bugs in ihren Produkten?
Ich höre oft die Frage, wie ein Unternehmen wie Google - mit Tausenden der besten Ingenieure der Welt - immer noch so viele Fehler in seinen Produkten haben kann. Sind die Softwareentwickler von Google nicht so gut, wie alle behaupten, dass sie es sind? Ist das Unternehmen so schlecht schlecht geführt, dass es einfache Probleme mit Web-Seitenlayouts oder E-Mail-Versandsystemen nicht beheben kann?

Ich höre oft die Frage, wie ein Unternehmen wie Google - mit Tausenden der besten Ingenieure der Welt - immer noch so viele Fehler in seinen Produkten haben kann. Sind die Softwareentwickler von Google nicht so gut, wie alle behaupten, dass sie es sind? Ist das Unternehmen so schlecht schlecht geführt, dass es einfache Probleme mit Web-Seitenlayouts oder E-Mail-Versandsystemen nicht beheben kann?

Die Antwort ist natürlich, dass alle Unternehmen technische Schulden anhäufen, wenn sie wachsen. Sogar große Ingenieurteams können & ldquo; zurückfallen & rdquo; auf Feature-Entwicklung und Bug-Fixes wegen der großen Menge an Wartungsarbeiten, die entstehen, wenn Code-Basen in der Größe zunehmen.

Die Arbeit, die zur Entwicklung jedes neuen Features erforderlich ist, beschränkt sich nicht nur auf den speziell für dieses neue Feature geschriebenen Code, sondern umfasst auch alle automatisierten Softwaretests, Qualitätssicherungsprozesse, Codedokumentation und Bereitstellungsprozesse und Skalierbarkeitsprobleme, die angesprochen werden müssen, um diese neue Funktion zu unterstützen.Ein derartiger technischer Overhead neigt dazu exponentiell zuzunehmen, wenn die Anzahl neuer Merkmale zunimmt.

Verwandte: Top-Vorhersagen für die Einstellung und Erhaltung von Software-Entwicklern

Unternehmen allgemein & ldquo; lebe mit & rdquo; bestimmte Bugs mit niedriger Priorität, weil deren Behebung nicht so wichtig ist wie die Tilgung anderer, kritischerer technischer Schulden. Riesige gewinnbringende Unternehmen wie Google haben das Glück, große Mengen an technischem Overhead absorbieren zu können, dank großer Barreserven, geduldiger Investoren und Horden der weltbesten Ingenieure.

Aber Startups (und die meisten anderen Unternehmen) haben diesen Luxus nicht. Viele vielversprechende Unternehmen sind unter der Last der technischen Schulden zusammengebrochen und haben sich in einer Situation wiedergefunden, in der sie nicht in der Lage sind, schnell genug zu reagieren, um auf sich ändernde Geschäftsrealitäten zu reagieren.

Startup-CEOs und -CTOs sollten den Trade-off zwischen dem Aufbau neuer Features und der Rückzahlung ihrer technischen Schulden vorsichtig verwalten, bevor sie zu sehr auf Interesse stoßen. Bei Brainscape haben wir sehr sorgfältig auf die Verwaltung unserer technischen Schulden geachtet, und wir haben auf diesem Weg viele wertvolle Lektionen gelernt.

1. Öffnen Sie nicht zu viele Dosen Würmer.

Wenn Sie Ihr Produkt mit neuen Funktionen ausstatten möchten, sollten Sie unbedingt Ihre Ingenieure konsultieren, um zu verstehen, wie viel fortlaufend für die Aufrechterhaltung dieser Funktion benötigt wird. Sie sollten an diese Wartungskosten in Bezug auf die Gehälter der Ingenieure und Manager denken, deren Zeit (und geistige Ablenkung) das erfordert. Ist das neue Feature wirklich all die potenziellen Komplexitäten und Ablenkungen wert, die es später einführen könnte?

2. Betrachten Sie einen frühen Code-Refactor.

Wenn Ihr Unternehmen wie die meisten Startups ist, hat es wahrscheinlich mit einer Vielzahl von verschiedenen Funktionen und Benutzererfahrungen experimentiert, bevor Sie sich mit der richtigen Produktkonfiguration vertraut machen. Es besteht eine gute Chance, dass die Relikte dieser Artefakte immer noch in deinem Code vergraben sind und jeden neuen Entwickler, der deinem Team beitritt, verwirren.

Es ist daher oft eine kluge Idee, viel von Ihrem Code neu zu schreiben - oder zumindest & ldquo; reinig 'es auf & rdquo; - Bevor Sie das Produkt weiter skalieren oder zu viele neue Ingenieure einstellen. Dies ist besonders gültig, nachdem Sie Geld gesammelt haben, während Sie den Luxus einer langen Cash-Runway haben.

3. Stellen Sie den richtigen CTO ein.

Viele Start-ups im Frühstadium beginnen mit einer Mitbegründung & ldquo; CTO & rdquo; Wer ist frisch aus der Schule oder ein Coding Boot Camp. Diese Person hat normalerweise ein großes & ldquo; Hackermentalität & rdquo; und ist in der Lage, Funktionen schnell, auf eine agile Art und Weise mit einer Vielzahl von vorgefertigten Prototyping-Tools und APIs zu erstellen. Solch ein Know-how ist oft perfekt für die Bedürfnisse eines modernen Lean-Startup-Startups.

Related: Die 5 nicht-technischen Fähigkeiten, die jeder große Entwickler benötigt, um voranzukommen

Doch während das Startup zu einem echten Unternehmen wird, multipliziert sich die Anzahl der Skalierbarkeitsprobleme exponentiell und die Geschwindigkeit, mit der das Unternehmen kann Entwicklung seiner technischen Architektur wird zu einem entscheidenden Faktor für seinen Erfolg.Es ist daher äußerst hilfreich, einen CTO zu beauftragen, der mindestens zwei Jahre lang an mindestens einem großen Entwicklungsteam an einem Produkt mit hunderttausenden Zeilen Code gearbeitet hat.

Es gibt keinen Ersatz für die intelligenten technischen Praktiken, die aus solchen Erfahrungen gewonnen werden.

4. Mach ein paar Dinge auf die harte Tour.

Der richtige Entwickler schreibt (oder verwaltet) den Code nicht so schnell, sondern nutzt die Funktionen so schnell wie möglich. Stattdessen berücksichtigt er oder sie die vollständigen langfristigen Auswirkungen jeder Funktion. Wie wirkt sich diese Funktion auf die Ladezeit des Produkts aus, wenn die Benutzerbasis wächst? Wie schwer wird es bleiben, wenn wir neue Funktionen hinzufügen?

Der richtige Techniker versteht die richtigen Kompromisse zwischen Entwicklungsgeschwindigkeit, Leistung, Skalierbarkeit, Stabilität, Sicherheit, Zuverlässigkeit und Wartbarkeit . Der richtige Ingenieur kann zunächst doppelt so lange brauchen, um ein Feature zu entwickeln, um das Risiko zu vermeiden, dass es später 10 Mal länger dauert, um neu zu schreiben. Diese Fähigkeit, zu wissen, wo man die Linie zeichnen muss, kommt mit Erfahrung.

5. Minimieren Sie den Entwicklerumsatz.

Jedes Mal, wenn ein Software-Entwickler Ihr Team verlässt, lässt er / & ldquo; Legacy-Code & rdquo; Das müssen neue Entwickler lernen. Diese Lernkurve (und der unvermeidliche Code schreibt Dinge neu, die "der letzte Typ" "den falschen Weg" gemacht hat) ist oft eine große Zeitverschwendung und eine große Quelle von technischen Schulden. Achte auf deine Entwickler, damit du deinen Umsatz begrenzen kannst!

6. Erstellen Sie Team-Redundanzen.

Um die durch potenzielle Entwicklerfluktuation verursachte technische Verschuldung zu reduzieren, hilft es sicherzustellen, dass mindestens zwei oder mehr Ingenieure mit jedem Teil Ihrer Codebasis vertraut sind. Dies kann durch eine rotierende Aufteilung der Zuständigkeiten und / oder eine regelmäßige Praxis der Paarprogrammierung oder Code-Reviews erleichtert werden.

Wenn Ihr Unternehmen am stärksten ist, wird es wahrscheinlich einen ständigen Kompromiss zwischen den Business- und den Engineering-Seiten geben. & ldquo; Geschäftsjungen & rdquo; tendieren dazu, für schnelleres Wachstum und mehr Funktionen zu pushen, mit wenig Verständnis dafür, wie hübsche Dinge unter der Haube aussehen. Unterdessen drängen gute Ingenieure in der Regel auf bessere technische Lösungen, die Software im Laufe der Zeit wartungsfähiger machen.

Das richtige Gleichgewicht zwischen Wachstum und & ldquo; Technische Schulden verwalten & rdquo; ist eine der wichtigsten Determinanten für den langfristigen Erfolg von Startups.

Dieser Artikel wurde von einem Mitglied des AlleyNYC Contributor Network geschrieben. AlleyNYC ist einer der größten Innovationszentren der Welt und trägt dazu bei, das Wachstum von Start-ups an seinem Flagship-Standort in New York City zu fördern. Media ist Partner und Investor von AlleyNYC. Wenn Sie mehr über AlleyNYC erfahren möchten und wie Sie sich für eine Mitgliedschaft bewerben können, besuchen Sie bitte hier.

Related: Brauchen Sie einen Software Engineer? Hier ist, wie viel Sie erwarten können zu zahlen. (Infografik)