Fallstudie: Trulia
Trulia ist einer der führenden Marktplätze der Immobilenbranche. Trulia versorgt Immobiliensuchende mit den Informationen, die sie brauchen, ist eine Ende-zu-Ende-Lösung für Immobilienmakler und bietet Immobilienanzeigen für die gesamten Vereinigten Staaten von Amerika an.
Nach beinahe zehn Jahren raschen Wachstums hatten die Software-Entwickler von Trulia das Gefühl, dass sie zu viel Zeit mit der Wartung des vorhandenen Programmcodes verbrachten. Es wurde zunehmend aufwendiger, neue Features zu liefern, und die Software performant zu halten, wurde zu einer echten Herausforderung.
thePHP.cc zeigte den Trulia-Entwicklern, wie sie den richtigen Umgang mit dem Legacy-Code finden und sich davon nicht einschränken lassen, indem sie neuen Programmcode nachhaltiger und besser testbar gestalten.
Opfer des eigenen Erfolges?
Seit 2005 hat Trulia eine Software-Plattform entwickelt, die das rasante Wachstum der Gesellschaft ermöglicht und unterstützt hat. Dazu war ein strikter Fokus auf das Hinzufügen von neuen Features notwendig, die für die Benutzer werthaltig waren. Nach zehn Jahren mit dieser Arbeitsweise zeigten sich einige negative Effekte, die schnelles Wachstum naturgemäß mit sich bringt. Die Entwickler von Trulia verbrachten immer mehr Zeit mit der Wartung der vorhandenen Software, um deren Performance aufrechtzuerhalten und die Plattform weiter zu skalieren.
Eine solche Situation ist nicht ungewöhnlich für ein erfolgreiches Unternehmen. Mit wachsender Nutzerzahl und Datenmenge ist es letztlich nur eine Frage der Zeit, bis man auf Grenzen einer vorhandenen Implementierung stösst. Die Codebasis von Trulia lief Gefahr, ein Opfer des eigenen Erfolges zu werden.
Innovation und Herausforderung
Um zu vermeiden, dass das Hinzufügen neuer Features zu Regressionen führt, entschied sich Trulia für mehr Testautomation. Ein großer Teil der Entwickler hatte allerdings das Gefühl, dass es nicht möglich sei, den vorhandenen Legacy-Code mit realistischem Aufwand zu testen. Daher wandte sich Trulia an thePHP.cc, um sich beraten zu lassen.
Im ersten Schritt analysierte thePHP.cc ausgesuchte Teile der Codebasis von Trulia. Dies ermöglichte es den Beratern, zu verstehen, in welchen Denkmustern die Entwickler dachten, welche Best Practices sie umsetzten, und an welchen Stellen es Verbesserungspotential gab. Aufbauend auf den Ergebnissen dieses Reviews erstellten zwei Berater einen Zeitplan für eine ganze Woche, in der sich Trainings, Präsentationen und Workshops mit indiviuellem Coaching der Entwickler abwechselten.
Ein erfolgreicher Coach stellt vorhandene Arbeitsweisen und Lösungen in Frage. Der Schlüssel zum Erfolg ist nicht nur, bessere Ansätze zu präsentieren, um Probleme zu lösen, sondern auch mit den Entwicklern zu arbeiten und sie dabei zu unterstützen, die Theorie in die Praxis umzusetzen und dies unmittelbar zu einem Teil der täglichen Arbeit zu machen. Kombiniert man Workshops, welche die Entwickler inspirieren und ihnen neue Ansätze aufzeigen mit Coaching von Entwicklern, die in Paaren arbeiten, sind gute Ergebnisse garantiert.
Wie auch in der agilen Software-Entwicklung ist allerdings ein Plan niemals in Stein gemeißelt. Daher wurde die Agenda auf Basis der gemachten Erfahrungen und des Feedbacks der Entwickler laufend angepasst, während die Berater vor Ort waren.
Den Fokus verändern
Das Code-Review hatte gezeigt, dass die Entwickler von Trulia mehr darauf achten mussten, einheitliche Lösungen für die gleichen oder ähnliche Probleme zu finden, um effiziente Lösungen zu implementieren, die duplizierten Code und unnötigen Aufwand vermeiden. Die Agenda legte daher einen besonderen Schwerpunkt darauf, den Know-How-Transfer zwischen den Teams zu verbessern und sowohl in den einzelnen Teams als auch teamübergreifend eine Diskussion über Best Practices zu beginnen. Eine Woche ist natürlich nicht ausreichend, um für alle wichtigen Themen zwischen 80 Entwicklern einen Konsens zu finden, aber die Zeit ist ausreichend, um einen Grundstein für ein gemeinsames Verständnis zu legen, damit in den darauf folgenden Wochen konstruktive Diskussionen entstehen.
"Wenn Entwickler Probleme bei der Testautomatisierung haben, müssen sie meist die Art und Weise ändern, wie sie Code schreiben", sagt Sebastian Bergmann, Autor von PHPUnit, dem meist verwendeten Werkzeug für automatisierte Tests in PHP und einer der beiden Principal Consultants, die vor Ort mit Trulia gearbeitet haben. Gemeinsam mit Stefan Priebsch, einem erfahrenen Experten für Software-Architektur und Enterprise-Entwicklung, wurde erreicht, dass die Trulia-Entwickler einen stärkeren Fokus auf Testbarkeit legen würden. Die beiden Berater stellten sicher, dass jeder in kleinen Schritten entwickeln würde und häufig zwischen dem Schreiben von Code und dem Ausführen von Tests hin- und herwechseln würde. Dies stellt ein schnelles Feedback sicher und vermeidet unnötige Arbeit. Auf diese Weise werden auch die meisten Fehler schnell erkannt und direkt beseitigt, während der Code geschrieben wird, anstelle dies beim Testen eines fertigen Features zu tun.
In die Zukunft
"Ich begann, Tests für eine Klasse zu schreiben, an der ich gerade gearbeitet habe, und habe dabei mehrere Fehler gefunden", sagt einer der Entwickler bei Trulia, und bestätigt damit, dass der neue Ansatz erfolgreich ist.
Die Berater von thePHP.cc legten zudem größten Wert darauf, dass Legacy-Code die Qualität von neu geschriebenem Code nicht beeinflussen darf. Neuer Code sollte immer unter Verwendung aller Best Practices wie Clean Code- und SOLID-Prinzipien geschrieben werden. Das Refactoring von Legacy-Code ist kostenintensiv und riskant. Stattdessen sollten Brückentechnologien zum Einsatz kommen, um alten und neuen Code zu integrieren, so dass nur minimale Anpassungen am alten Code notwendig sind.
Ein eigener Workshop zum Thema Brückentechnologien und mehrere Stunden Hands-On-Erfahrungen mit verschiedenen Fokusgruppen stellten sicher, dass die Integration von neuem Code mit Legacy-Code am Ende der Woche bereits eine erprobte und aktiv eingeübte Best Practice für die Entwickler von Trulia waren.
Als wir unsere Arbeit vor Ort begannen, hatten die meisten Entwickler das Gefühl, dass der Legacy-Code sie davon abhalten würde, qualitativ hochwertigen Code zu schreiben. Wir zeigten ihnen, dass das Schreiben von sauberem, neuen Code und der Umgang mit Legacy-Code sich nicht gegenseitig ausschließen.
Stefan Priebsch, Mitgründer und Principal Consultant, thePHP.cc
Sebastian und Stefan haben uns gezeigt, wie unsere Entwickler kontinuierlich Geschäftswert liefern können, ohne dass sie durch unseren Legacy-Code eingeschränkt werden. Und sie haben uns aufgezeigt, wie wir zukünftig deutlich mehr Gemeinsamkeiten zwischen all unseren Entwickler-Teams finden können.
Dave Rochwerger, Director Engineering, Trulia
Über Trulia
Seit 2005 hat sich Trulia darauf konzentriert, den lebendigsten und wertvollsten Marktplatz der gesamten Immobilienbranche zu entwickeln. Trulia bietet Verbrauchern Informationen, die es ihnen ermöglichen, bessere Entscheidungen zu fällen, liefert für Immobiliensuchende Einsichten und einzigartige Informationen nicht nur zu den Objekten selbst, sondern auch über die ganze Wohngegend und Maklern im ganzen Land. Immobilienmakler können auf das branchenweit erste Ende-zu-Ende-Angebot zurückgreifen, das erstklassige Marketing-Werkzeuge und eine umfassende Sammlung von Softwarewerkzeugen bietet, mit dem sie ihr Unternehmen aufbauen und verwalten können. Trulias Mietmarkt bietet Anzeigen für die gesamte USA in Form von Apps und einer Website. Für Kaufinteressierte gibt es personalisierte Angebote in Echtzeit von Kreditgebern aus der ganzen Nation. Trulia wird jeden Monat von über 51 Millionen Immobiliensuchenden genutzt. Das Hauptquartier ist in San Francisco mit Büros in New York City, Denver und Bellvue.