Die Produktprinzipien von Intercom: Aufbau in kleinen Schritten, um maximalen Kundennutzen zu liefern

Veröffentlicht: 2022-09-07

Große Änderungen sind schwer zu verstehen und schwerer zu debuggen.

Bei Intercom liefern wir komplexe Änderungen in einer Reihe kleiner, kontrollierter, leicht verständlicher Schritte. Kleine Änderungen sind einfacher zu erstellen und schneller zu überprüfen, sodass wir unseren Kunden schneller einen Mehrwert bieten können.

Dies ist der siebte Beitrag in einer Serie, in der unsere Produktprinzipien erläutert werden . Hier erläutert Aidan unser Engineering-Prinzip „Bauen in kleinen Schritten“.

Niemand macht es immer richtig

Fehler passieren in jedem Team, in jedem Unternehmen auf der Welt. Sobald Sie akzeptieren, dass Sie es nicht immer richtig machen werden, können Sie sich auf zwei Arten anpassen:

  • Versuchen Sie, Fehler zu korrigieren, bevor Sie sie versenden, indem Sie Schritte unternehmen, um Ihre Arbeit zu validieren oder zu überprüfen.
  • Lassen Sie sich Raum, um falsch zu liegen, lernen Sie aus dem Fehler und passen Sie sich schnell an, um ihn zu korrigieren.

Wenn Sie bereits Wochen in eine Veränderung versunken sind, gibt es oft weniger Raum, sich zu irren. Dies kann dazu führen, dass Sie sich auf die Validierung verlassen, um Überraschungen beim Versand Ihrer Änderung zu vermeiden. Validierung hat ihren Platz, aber sie ist ein schlechter Ersatz dafür, etwas in der Realität einzusetzen. Je mehr Validierung Sie vor dem Versand durchführen müssen, desto länger dauert es, bis Sie iterieren oder zum nächsten Feature übergehen können – es verlangsamt Sie letztendlich.

Beim Versand einer Änderung wollen wir Folgendes kontrollieren:

  • Die Anzahl der betroffenen Variablen: Je mehr Variablen während einer Änderung betroffen sind, desto schwieriger ist es herauszufinden, welcher Teil der Änderung das Problem verursacht hat. Indem wir die Größe jedes Schritts verkleinern, straffen wir die Feedback-Schleife und bereiten uns darauf vor, bei Bedarf viel schneller zu lernen und uns anzupassen.
  • Die Größe der Änderung: Indem wir die Größe unserer Änderungen verkleinern, reduzieren wir auch den Explosionsradius jeder Änderung. Es ist wichtig, Änderungen zu testen, aber es gibt nur so viel, dass eine Vorab-Validierung erfasst wird. Bei kleineren Änderungen können wir unsere Aufmerksamkeit darauf richten, Ihr Ziel schrittweise zu erreichen, und uns nicht zu sehr damit beschäftigen, sicherzustellen, dass jede Änderung perfekt ist.
  • Welche Kunden erfahren die Änderung: Wir verlassen uns auf Feature-Flags, um Änderungen in der Produktion zu validieren und sie schrittweise für Kunden freizugeben.

Wir wissen nicht genau, ob die Funktion das Problem eines Kunden lösen wird, bis er es in seinen Händen hält. Diese Verpflichtung zum Versand kleiner Iterationen knüpft schnell an ein weiteres Intercom-Prinzip an: Ship to Learn.

Komplexität managen

Das Bauen in komplexen Systemen ist eine Herausforderung. Wenn Fehler bei großen Änderungen auftauchen oder aufgeblähte Funktionen das Ziel verfehlen, ist es schwierig, das spezifische Problem zu lokalisieren. Kleine Schritte machen es einfacher zu validieren, zu ändern und weiterzumachen – in der Gewissheit, dass Sie auf solidem Boden bauen.

Große Änderungen beinhalten viele Annahmen:

  • Externe Annahmen darüber, wie sich Ihre Änderung auf die Arbeitsabläufe Ihrer Kunden auswirkt.
  • Interne Annahmen darüber, wie verschiedene Teile Ihrer Änderung interagieren und voneinander abhängen.

Während Sie Ihr Bestes tun können, um externe Annahmen zu überprüfen, ist es oft schneller und robuster, Ihre Änderung zu versenden und zu validieren oder anzupassen. Durch interne Annahmen kann sich Komplexität einschleichen. Wenn Ihre Änderung groß genug wird, um mehrere Bausteine ​​zu umfassen, die alle voneinander abhängen, kann es riskant sein, sie zusammen zu testen. Es ist viel sicherer, diese schrittweise freizugeben, eine über der anderen aufzubauen und die Auswirkungen zu überwachen, während Sie fortfahren.

Langlebige Geschwindigkeit baut Schwung auf

Geschwindigkeit ist großartig, aber dauerhafte, zuverlässige Geschwindigkeit ist bahnbrechend. Das Versenden einer großen Änderung bedeutet, dass viel mehr davon abhängt, ob sie erfolgreich ist, und ein höheres Risiko für Überraschungen im Vergleich zu einer Reihe kleiner, schneller Iterationen.

Ein enger Kreislauf aus dem Versand kleiner Änderungen, dem Lernen und Iterieren baut eine starke Dynamik auf“

Ein enger Kreislauf aus kleinen Änderungen, Lernen und Iterieren baut eine starke Dynamik auf. Es beseitigt die Notwendigkeit, gleich beim ersten Mal richtig zu liegen, fördert eine schnellere Entscheidungsfindung und reduziert den Explosionsradius von Fehlern. Darüber hinaus bedeutet die Aufteilung der Arbeit in kleinere Einheiten, dass die Ingenieure die Arbeit parallel fortsetzen können, wodurch das Team als Ganzes schneller vorankommen kann.

Bauen in kleinen Schritten erfordert die richtige Teamkultur

Bauen in kleinen Schritten geschieht nicht zufällig, sondern erfordert eine bewusste Absicht und das richtige Umfeld. Unsere Teamkultur und unser Infrastruktur-Stack spielen eine entscheidende Rolle für unsere Fähigkeit, kleine Änderungen schnell umzusetzen.

Sobald die Teams erkennen, wie wichtig es ist, kleine Änderungen schnell bereitzustellen, werden Peer-Reviews priorisiert und schneller abgeschlossen. Da kleine Änderungen leichter zu verstehen und zu überprüfen sind, besteht eine größere Chance, dass in jeder Phase Fehler entdeckt werden. Dieses Teamverständnis und die Dringlichkeit beschleunigen den gesamten Prozess.

Wir haben erheblich investiert, um sicherzustellen, dass es nach Überprüfung und Zusammenführung einer Änderung mit dem Master weniger als 15 Minuten dauert, bis sie in Produktion geht, einschließlich automatisierter Tests und Staging-Validierung.“

Wenn sich die Bereitstellungszeiten verlangsamen, neigen Ingenieure eher zu Batch-Änderungen, was zu einem Zyklus größerer Änderungen führt. Wir haben erheblich investiert, um sicherzustellen, dass eine Änderung, sobald sie überprüft und mit dem Master zusammengeführt wurde, weniger als 15 Minuten dauert, um die Produktion zu erreichen, einschließlich automatisierter Tests und Staging-Validierung. Es ist völlig automatisch und Ingenieure erhalten eine automatische Slack-Benachrichtigung, sobald die Änderung live ist.

Anwendung des Prinzips „Bauen in kleinen Schritten“ auf die Salesforce-Integration von Intercom

Letztes Jahr haben wir versucht, Intercom tiefer in Salesforce zu integrieren, damit Kunden automatisch Salesforce-Fälle aus Intercom-Gesprächen erstellen können. Wir haben die Komplexität schnell verstanden; Konversationen und Fälle lassen sich nicht immer direkt abbilden, und die Synchronisierung von Daten über eine Viele-zu-Viele-Beziehung wäre sowohl aus technischer als auch aus gestalterischer Sicht eine Herausforderung. Darüber hinaus gab es große Unterschiede in der Art und Weise, wie Kunden diese Funktion nutzen wollten, und sie musste in die bestehende Integration passen, auf die sich die Kunden stark verlassen.

Nachdem wir die vielen Implikationen und Designkompromisse durchgearbeitet hatten, parkten wir das Projekt zugunsten von etwas, von dem wir glaubten, dass es eine zuverlässigere Wirkung erzielen würde. Wir hätten es fast nicht gebaut, weil wir es als große Veränderung angegangen sind und nicht als eine Reihe kleiner Schritte.

Wir haben das Projekt mit einem anderen Ansatz erneut besucht

Es dauerte nicht lange, bis unser Verkaufsteam zurückkam, um hervorzuheben, wie wichtig diese Funktion für unsere Kunden war – und wir beschlossen, ihr einen anderen Blick zu geben. Diesmal haben wir einen anderen Ansatz gewählt, indem wir mit der kleinstmöglichen Version begonnen und einen Teil der Komplexität umgangen haben, bis wir erfahren konnten, was die Kunden wirklich brauchen.

Die Kunden, mit denen wir zusammengearbeitet haben, schätzten das Tempo, mit dem das Team Iterationen durchführte, und die tägliche Weiterentwicklung der Funktion, geleitet von ihrem Feedback.“

In zwei Wochen haben ein anderer Ingenieur und ich die einfachste Version dieser Funktion erstellt, die wir mit Kunden teilen konnten. Wir haben dies in vielen kleinen Schritten getan, um sicherzustellen, dass wir keinen der bestehenden Workflows unterbrechen, die Kunden bereits verwenden. Dadurch wurde das Feature deutlich greifbarer und Kunden konnten konkretes Feedback zu Produktlücken und -verbesserungen geben.

Sobald die Kunden es nutzten, iterierte das Team in kleinen Schritten, um die Funktion schnell flexibler zu machen. Als die Flexibilität zunahm, wuchs auch die Anzahl der Kunden, die es nutzten, und wir erweiterten die Beta schnell.

Es stellte sich heraus, dass die Viele-zu-Viele-Beziehung die Kunden nicht daran hinderte, die Funktion zu nutzen, und wir haben sie erfolgreich sicher und ohne diese zusätzliche Komplexität eingeführt, was wir nur entdeckten, indem wir klein anfingen und schnell iterierten. Die Kunden, mit denen wir zusammengearbeitet haben, schätzten das Tempo, mit dem das Team Iterationen durchführte, und die tägliche Weiterentwicklung der Funktion, geleitet von ihrem Feedback.

Bauen in kleinen Schritten funktioniert für alle

Wir bauen hauptsächlich in kleinen Schritten, weil es uns hilft, Kundennutzen schneller, sicherer und dauerhafter zu liefern. Aber außerdem ist es als Ingenieur eine schönere Art zu arbeiten. Es ist weitaus weniger stressig als große Änderungen zu versenden, bei denen es darauf ankommt, dass Sie beim ersten Mal alles richtig machen – und Sie erhalten jedes Mal einen regelmäßigen Dopaminschub, wenn Sie das, woran Sie arbeiten, in die Produktion schicken.

Wenn Sie also nichts in diesem Blog-Beitrag davon überzeugt, auf Risikominderung zu optimieren und Mehrwert zu liefern, sollten Sie es tun, weil es einfach mehr Spaß macht.

Möchten Sie mehr darüber erfahren, wie wir bei Intercom arbeiten? Finde mehr heraus.

Karriere CTA - Engineering (horizontal)