10.1 „Menschen werden nicht mehr geboren, sie werden gezüchtet“
Also, wenn du immer noch hier bist, lass uns weitermachen. „Und ich werde dir zeigen, wie tief das Kaninchenloch ist“ (c)
Lass mich dir erzählen, wie der Prozess der Produktentwicklung abläuft. Wir gehen Schritt für Schritt vom höchsten, globalen Level bis zum untersten — dem Code-Schreiben. Ich denke, es erwartet dich so manche interessante Entdeckung…
Moderne IT-Produkte werden nicht mehr geschrieben: Sie werden erstellt. Sie werden aus Bibliotheken, Frameworks, fremden Programmen und Produkten zusammengesetzt oder es werden überhaupt entfernte kostenpflichtige oder kostenlose Internetdienste genutzt.
Ein modernes Produkt ist ein ganzer Zoo aus Technologien, Diensten, Lösungen und Prozessen. Ein Teil der Arbeit wird von Menschen gemacht, ein Teil automatisiert, und die restlichen 90% werden überhaupt von Cloud-Diensten in Rechenzentren ausgeführt. Die Welt ist nicht mehr, was sie einmal war.
Aber das Erste, worauf du achten wirst, sind die ständigen Änderungen. Du schreibst keine Programme mehr: du machst Änderungen daran.
10.2 Ständige Änderungen
Du wirst zur Arbeit gehen und dich einem 20-köpfigen Team anschließen, das bereits seit 5 Jahren an einem Produkt arbeitet. Den Benutzern steht jetzt die siebte Version zur Verfügung. Und deine Aufgabe wird es sein, an diesem Produkt Änderungen vorzunehmen. Kleine, um die derzeitigen aktiven Benutzer nicht zu verschrecken.
Und das wird nicht einfach sein, denn das Produkt funktioniert bereits. Es gibt Kunden, und sie zahlen Geld. Daher kann man nichts kaputt machen. Änderungen an einem bereits funktionierenden Produkt vorzunehmen, ist um ein Vielfaches schwieriger als an einem neuen. Dafür gibt es spezielle Standards, Protokolle, Migrationen und Dienstprogramme. Sofort kommt ein Witz in den Sinn:
Zwei alte Freunde treffen sich: Einer wurde Mechaniker, der andere Chirurg... jeder hat sein eigenes Leben, Sorgen, Freuden... Sie erzählen sich alles und dann kommt das Thema Gehälter auf. Der Automechaniker sagt: "Nun, ich verdiene 30 im Monat und bin damit sehr zufrieden, und du, wie viel?" Der Herzchirurg sagt: "Nun, ich bekomme etwa 100 Tausend pro Operation"... Da wird der Automechaniker neugierig: "Komisch, warum ist dieser Unterschied so groß, wir machen doch scheinbar dasselbe — Teile wechseln", darauf sagt der Chirurg: "Nun, komm zum Auto, starte den Motor"... Der Mechaniker startet den Motor, der Chirurg öffnet die Motorhaube und sagt zum Mechaniker: "Siehst du, der Motor läuft? Wechsel ihn! :)"
Selbst wenn ein Wunder passiert ist und dein Team ein ganzes Jahr lang ein Produkt von Grund auf geschrieben hat und es erst danach veröffentlicht hat, weißt du, was als nächstes passieren wird?
Wenn dein Produkt erfolgreich wird, wird der Produkthalter es weiterentwickeln wollen. Eine neue Version herausbringen, einige Funktionen hinzufügen. Oder zumindest ein paar Experimente durchführen. Und weißt du, was dann kommt? Änderungen.
10.3 Der Wert des Produkts
Aus der Sicht der modernen Produktentwicklung hat nur der Code Wert, der bereits veröffentlicht wurde, und die Feature, die von Benutzern genutzt wird. Wenn du Code geschrieben hast, der irgendwo gespeichert ist, funktioniert, aber nicht genutzt wird, dann ist sein Wert nahe Null. Deshalb sollte der gesamte Code so früh wie möglich in die Produktion gehen.
Dein Code sollte folgende Phasen durchlaufen:
- Du hast ihn geschrieben und sichergestellt, dass er funktioniert
- Dein TeamLead hat ihn reviewed und in den Hauptbranch in Git integriert
- Die Tests während des Build-Prozesses haben gezeigt, dass du nichts Wichtiges kaputt gemacht hast
- Integrationstests haben gezeigt, dass das Produkt wie gewünscht funktioniert
- Der Tester hat diesen Code geprüft und das Go für den Release gegeben
- Dann muss die neue Version des Produkts gebaut und auf dem Server veröffentlicht werden
- Die neue Version des Produkts muss in Docker Images verpackt und veröffentlicht werden
- Es kann notwendig sein, Migrationsskripte auszuführen und Änderungen an der Datenbank und/oder anderen Drittanbieterlösungen vorzunehmen
- Dann müssen auf dem Server Logs gesammelt werden, um sicherzustellen, dass alles wie gewünscht funktioniert
- Im Falle einer unvorhergesehenen Situation, wenn du etwas kaputt gemacht hast, musst du den Build zurückrollen, den vorherigen Zustand der Datenbank wiederherstellen und die Aktionen der Benutzer nicht verlieren, die die instabile Version des Produkts genutzt haben
In den meisten Unternehmen sind diese Aufgaben mittlerweile gelöst: Neue Prozesse sind aufgestellt, spezielle Personen eingestellt, spezielle Sicherheitsprotokolle und Qualitätskontrollstandards eingeführt.
Je größer das Unternehmen, desto weniger Zeit vergeht zwischen dem Schreiben von Code und dem Zeitpunkt, an dem er in die Produktion geht und Nutzen bringt — indem er den Menschen Nutzen bringt.
In den meisten Unternehmen durchläuft der Code diesen Weg in zwei Wochen, aber es gibt Unternehmen, die Releases jede Woche oder sogar jeden Tag machen. Einige besondere Unikate — mehrmals am Tag.
Der geschriebene Code ist wertlos. Wert bringt nur der Code, der in der Produktion läuft.
GO TO FULL VERSION