Die meisten Menschen machen jedes Jahr tausende Fotos und schauen sich die meisten nie wieder an. Popsa hilft dabei, die wichtigen zu finden und daraus etwas Greifbares zu machen, das man behält und immer wieder anschaut.
Unsere mobilen Apps nutzen Machine Learning direkt auf den Geräten der Kunden, um Fotos zu analysieren, ohne sie in die Cloud hochzuladen. Sie erkennen die Menschen und Momente, die wirklich zählen, und gestalten daraus ein Layout, das die Geschichte dahinter erzählt. Von außen wirkt das einfach – und genau darum geht es.
Hinter dem, was nach außen so einfach wirkt, steckt eine komplexe technische Infrastruktur: iOS-, Android- und Web-Apps, Backend-Services für Zahlungen und Bestellabwicklung sowie Systeme für Bildverarbeitung und Auslieferung in über 50 Ländern. Diese Systeme verwalten die persönlichsten Fotos der Menschen und verarbeiten ihre Zahlungen. Sie müssen zuverlässig und sicher bleiben – und das Verständnis im Team dafür, wie alles zusammenhängt, darf nicht verloren gehen.
Dieses Verständnis steckt in der Dokumentation: Sie erklärt, wie die Systeme zusammenhängen, welche Konventionen gelten und wo sensible Grenzen verlaufen. Sie macht es möglich, dass Teams komplexe Systeme warten, absichern und weiterentwickeln können, ohne von einzelnen Personen abhängig zu sein, die bestimmte Teile entwickelt haben. Diese Dokumentation aktuell zu halten, ist allerdings ein Problem, mit dem jedes Engineering-Team früher oder später zu kämpfen hat – auch wir.
Ich habe in genug Engineering-Teams gearbeitet, um diesen Ablauf zu kennen. Irgendwann sagt jemand: „Dieses Mal halten wir die Dokumentation wirklich aktuell.“ Es folgt ein kurzer Energieschub. Seiten werden angelegt, Konventionen festgehalten, Architekturdiagramme erstellt. Manchmal wechseln Teams sogar das ganze System (GitHub, Confluence, Coda), einfach um neu zu starten. Für ein paar Wochen, vielleicht ein paar Monate, sieht alles gut aus.
Dann veraltet die Dokumentation.
Nicht, weil es niemanden mehr interessiert, sondern weil sich Software nicht linear verändert. Viele kleine Änderungen lassen sich noch gut mittragen, ohne dass die Dokumentation stark abweicht. Aber dann wird die Authentifizierung umgebaut, ein neues Framework eingeführt oder eine API neu strukturiert. Die Dokumentation war korrekt, als sie geschrieben wurde, aber der Code hat sich weiterentwickelt. Wir haben zum Beispiel gerade unsere iOS-App von einer linearen Navigation auf eine Navigation mit Tabs umgestellt. Nach so einer Veränderung können ganze Abschnitte der Dokumentation plötzlich ein System beschreiben, das es so nicht mehr gibt.
Die meisten Entwickler wissen, dass dies ein Problem sein kann, daher hat sich unser Team kürzlich gefragt, wie man es lösen kann, indem man Dokumentation als System versteht, nicht als Aufgabe.