Markus J. Doetsch, CTO bei InstaFreight
07. November 2017Markus gibt uns einen Einblick in die Übergangsphase bei Rocket Internet, bei der aus einem Projekt ein eigenes Startup-Unternehmen wird. Als CTO von InstaFreight, einem Rocket-Internet-Startup, zeigt er uns die Herausforderungen des digitalen Speditionsunternehmens.
Vita
Schon mit 10 versucht sich Markus auf seinem ersten Computer, einem 286er, im Programmieren. Nach der Schule beginnt er zu studieren und gründet mit einer Geschäftspartnerin eine eigene Agentur, die interaktive Medienprojekte umsetzt. 2008 schließt Markus sein Studium an der Middlesex University in London mit dem BA ab und zieht daraufhin nach Hamburg. 2012 startet Markus als Frontend-Developer bei Rocket Internet in Berlin. Heute ist er CTO von InstaFreight.
Tools
- Stack: AWS, PHP, PostgreSQL, ElasticSearch, React, JavaScript, Python, NodeJS
- Tools: PHPStorm, SourceTree, Jenkins, Jira, Trello
Hallo Markus, an welchem Projekt arbeitest du gerade bei Rocket Internet?
Aktuell arbeite ich als Startup-CTO beim digitalen Speditionsunternehmen InstaFreight. Als ich vor circa einem Jahr die ersten User Stories zum Thema Logistik gesehen habe, hatte ich erst ein paar Vorbehalte. In der Zwischenzeit denke ich, dass es eines der spannendsten Projekte bei Rocket Internet ist. Wir sorgen für Disruption im Logistikmarkt.
Tech Jobs
- IT Expert / Requirements Engineer – Store Checkout Solutions (m/w/d) bei ALDI International Services SE & Co. oHG, Mülheim an der Ruhr
- Operations Expert – Store Checkout Solutions (m/w/d) bei ALDI International Services SE & Co. oHG, Mülheim an der Ruhr
- (Senior) Enterprise Architect (m/w/d) bei REWE Digital, Köln
- Data Engineer Schwerpunkt Kundenpersonalisierung (m/w/d) bei REWE Digital, Köln
- Software Engineer Fullstack (m/f/d) Angular .NET bei Verivox GmbH, Heidelberg
Warum ist Logistik ein spannendes Thema?
In der Logistikbranche bewegt sich gerade sehr viel, was man natürlich vor allem im Consumer-Bereich sieht. Wenn man sich aber mit den technischen Ansprechpartnern in kleinen und mittelgroßen Unternehmen aus der Speditionslogistik unterhält, dann besteht auch dort ein großer Bedarf, die Branche zu digitalisieren und zu optimieren.
Wie ist denn der aktuelle Stand der Branche?
Es wäre ignorant zu denken, dass die Unternehmen grundsätzlich nicht digitalisiert wären. Ein Betrieb mit hunderten LKWs nutzt selbstverständlich Computer, um diese zu managen. In der Direktkundenanbindung sind einige Unternehmen auch gut aufgestellt, aber ihnen fehlt der Integrationszugang zum Markt selbst. Deswegen ist der Bedarf an offenen Schnittstellen und modernen APIs da, den wir mit unserer Plattform decken möchten.
Welche Aufgabe hast du bei InstaFreight?
Bei InstaFreight bin ich für Produkt und Entwicklung verantwortlich. Meine Hauptaufgabe als CTO besteht momentan darin, die Prozesse bei InstaFreight zu entwickeln. Wir wissen zwar oft, wie wir idealerweise gerne arbeiten würden. Aber in der Realität eines wachsenden Teams werden häufig ganz andere Probleme relevant. Kommunikation und ein geregelter Ablauf sind da das A und O, besonders bei einer so jungen Firma.
Zudem befinden wir uns gerade in einer Übergangsphase. Vor wenigen Wochen waren wir noch komplett bei Rocket angelegt. Schritt für Schritt werden wir ein eigenes Unternehmen, indem wir noch verschiedene Ressourcen bei Rocket nutzen. Meine Aufgabe ist es also auch, den technischen Übergang zu managen.
Welche Aufgabe hattest du zuvor?
Zuletzt war ich Director Software Engineering bei Rocket mit teilweise mehreren Projekten gleichzeitig und mit mehreren Teams. Angefangen habe ich vor fünf Jahren als PHP-Entwickler und im Laufe der Zeit kam mehr und mehr Verantwortung hinzu.
Wie wird bei Rocket Internet ein Projekt entwickelt?
Am Anfang steht die Grundentscheidung, dass man ein Problem angehen möchte. Wenn das Projekt bei Rocket gestartet wird und nicht von außen hinzugekauft wird, gibt es einen gesetzten Ablauf. Vielleicht ist auch schon ein Founder mit an Bord, vielleicht jemand, der Industrieerfahrung hat.
In den ersten Sitzungen geht es dann um Kernfunktionalitäten, aus denen bereits eine erste User-Story-Liste entsteht. Damit kann man dann erste Schätzungen erstellen. Aber bis dahin ist alles noch recht grob und es geht eher darum zu gucken, ob man das überhaupt schaffen kann und wie viele Leute man benötigt.
Dann wird ein Launch-Team zusammengestellt und die Entwicklung beginnt. Wir launchen für gewöhnlich nach vier bis acht Wochen den ersten MVP. Insgesamt haben wir bei Rocket ein Hundert-Tage-Launch-Ziel, in dem die Entwicklungszeit für den MVP inklusive ist.
Wie wird dann entschieden, ob es weitergeht?
Das ist eine Geschäftsentscheidung. Bei Rocket gibt es dafür eine Taskforce, die die Geschäftsmodelle und die Machbarkeit prüft.
So wie es aussieht, hat InstaFreight diese Prüfung bestanden. Wie ist der aktuelle Stand?
Genau. Mittlerweile sind wir knapp 30 Mitarbeiter, zehn davon in meiner Abteilung, wovon acht das crossfunktionale Tech-Team bilden. Wir sind seit einem Jahr online und lösen das Problem kleiner und mittlerer Unternehmen, die keine umfangreiche und professionalisierte Logistikabteilung haben. Solche Unternehmen telefonieren meist erst mal 20 Speditionen an, um Angebote einzuholen. Auf unserer Plattform befriedigen wir diesen Logistikbedarf. Wir binden zudem bereits erste Speditionsunternehmen oder Verlader via API direkt an unsere Systeme an.
Anmerkung der Redaktion: In der Zwischenzeit ist InstaFreight auf 35 Mitarbeiter angewachsen und hat eigene Räumlichkeiten in Berlin bezogen.
Woran wir in Zukunft zusätzlich arbeiten werden, ist die Optimierung der Routen und daran, die Frachten zusammenzuführen, da wir darin großes Potential sehen.
Welche konkreten Aufgaben stellen sich bei der Entwicklung für InstaFreight?
Im Logistikbereich sieht es in Sachen UI noch ganz schön schlimm aus, oft wie in den 90ern. Darum versuchen wir moderne UIs zu bauen, die die Anwender begeistern. Wir arbeiten zum Beispiel mit React und anderen modernen Tools.
Wir arbeiten außerdem an einer Driver-Application für Android in zehn Sprachen. Bei einem User-Testing haben wir mit LKW-Fahrern gesprochen und herausgefunden: LKW-Fahrer nutzen hauptsächlich Android.
Außerdem geht es bei uns auch um die Anbindung von Partnerunternehmen. Zum Beispiel haben wir vor Kurzem eine Partnerschaft mit einem Speditionsnetzwerk umgesetzt, bei der es um die Integration von Standardfrachtgut wie Europaletten ging.
Wie genau seid ihr bei der Integration vorgegangen?
Zunächst einmal finden wir in Vorgesprächen heraus, wie eine Zusammenarbeit aussehen kann. Daraus entstehen unternehmerische Anforderungen, die wir auf eine Roadmap übertragen. Handelt es sich um eine technische Kooperation, bin ich natürlich dabei. In dem Integrationsbeispiel ging es direkt an die technischen Verantwortlichen für die Schnittstellen.
In der Logistikbranche gibt es das EDI-Dateiformat Fortras, das im Vergleich zu modernen Rest-APIs simpel ist. Man schiebt relativ flache Dateien durch die Gegend, in denen die Datensätze strukturiert abgelegt sind. Darin wird der Auftrag beschrieben und es können auch Statusrückmeldungen kommen. Gerade wenn es darum geht, Ladungen über Hubs und Verladungszentren durch ganz Europa zu schicken, ist das wichtig.
Ziel war es, das Format zu integrieren und den Prozess zu automatisieren.
Welche Schritte sind dafür notwendig gewesen?
Bei unseren Projekten gibt es einen Product Owner, Implementation Owner sowie Stakeholder. Zunächst definieren wir die zu erreichenden Milestones. Die Anforderungen und Lösungsschritte werden in Tickets geschrieben und dann geht es auch schon los.
Für unseren Produktentwicklungsprozess nutzen wir Jira. Wir entwickeln agil mit Kanban und unsere Sprints sind eine Woche lang. Das heißt, wir wollen lieber schnell releasen und mit konkretem Feedback weitermachen.
Tech Jobs
- IT Expert / Requirements Engineer – Store Checkout Solutions (m/w/d) bei ALDI International Services SE & Co. oHG, Mülheim an der Ruhr
- Operations Expert – Store Checkout Solutions (m/w/d) bei ALDI International Services SE & Co. oHG, Mülheim an der Ruhr
- (Senior) Enterprise Architect (m/w/d) bei REWE Digital, Köln
- Data Engineer Schwerpunkt Kundenpersonalisierung (m/w/d) bei REWE Digital, Köln
- Software Engineer Fullstack (m/f/d) Angular .NET bei Verivox GmbH, Heidelberg
Welche Tests fahrt ihr während der Entwicklung?
Gerade bei neuen Features muss anfangs noch viel manuell getestet werden. Unit- und Integration-Tests bauen wir beim Entwickeln mit ein. Aus den manuellen Tests entwickeln wir später die weitere Testautomatisierung. Damit nichts schief geht, haben wir für den Export und Import ein mehrstufiges System mit einem Puffer entwickelt.
Wichtig ist, dass man schon früh mit den Partnern testet. Man schickt Testdateien und die schicken wieder welcher zurück. Anfangs per E-Mail, später in einer Sand-Box, um keine echten Aufträge zu erstellen, die Kosten verursachen würden.
Wie lange habt ihr für die Integration gebraucht?
Das kommt darauf an, welchen Baustein man davon betrachtet. Die Integration haben wir in einem Monat gelöst. Aber bis wir einen funktionierenden Rollout hatten, dauerte es nochmal einige Wochen. Da das EDI-Dateiformat ziemlich alt ist, gab es dafür keine aktuelle PHP-Bibliothek. Die mussten wir also selbst schreiben. Und dann stellt man fest, wie groß der Interpretationsspielraum bei den Partnern sein kann, selbst wenn man den selben Standard verwendet. Sowas kommt dann auch mal gerne dazwischen.
Wie oft legst du selbst noch Hand an?
Weniger, als ich es selbst gerne tun würde. Ich programmiere in der Regel durchaus täglich, wenn auch nicht immer besonders viel. Gerade am Anfang habe ich versucht, alles so hands-on wie möglich zu machen, musste aber recht schnell akzeptieren, dass es dem Unternehmen nicht so viel bringt, wenn ich die ganze Nacht durchprogrammiere statt eine Roadmap zu entwerfen, Projektthemen zu formulieren, mit Stakeholdern zu sprechen und Probleme aus dem Weg zu räumen.
Auf welchem Software-Stack baut ihr Instafreight auf?
Unsere gesamte Infrastruktur läuft in AWS, also unsere Application-Server, Datenbanken und weitere Services. Die Web-Anwendung ist in PHP geschrieben, als Datenbank nutzen wir PostgreSQL und für die Suche, Analyse und das Logging nutzen wir ElasticSearch. Außerdem nutzen wir Redis für das Caching. Wir arbeiten viel mit React und daher mit JavaScript. Wenn es um BI-Tools oder Reporting geht, nutzen wir gerne auch mal Python oder NodeJS.
Welche Tools nutzt ihr?
Für die Anwendungen PHPStorm und natürlich das Terminal. Ich nutze außerdem gerne Atom für schnelle Nebenprojekte. SourceTree nutzen wir als graphische Benutzeroberfläche für unsere Git Repositories. Für Deployment und Continuous Integration nutzen wir Jenkins, darüber laufen die ganzen automatisierten Tests. Die Liste der Software wird noch viel länger, wenn es in Richtung Terminal geht. Außerdem nutzen wir Jira fürs Projektmanagement und für die kleineren Randprojekte setzen wir Trello ein.
Wie muss man sich derzeit deinen Tagesablauf vorstellen?
Um circa halb acht stehe ich auf und verbringe gerne die ersten anderthalb Stunden im Home-Office. Da trinke ich dann meinen Mate-Tee aus der Kalebasse und bearbeite die ersten E-Mails am Rechner und strukturiere den Tag.
Dann mache ich mich langsam auf zur Arbeit, meist mit dem Fahrrad, weil die M29 echt schlecht geworden ist. Um 10.45 Uhr gibt es dann das Stand-up. Generell ist es schon so, dass nicht jeder Tag gleich ist. Ich habe viele Meetings wie Backlog-Grooming, Roadmap-Meeting, Sprint-Planungen oder auch mal vor Ort einen Workshop bei einem Unternehmen. Zurzeit versuche ich, mir bestimmte Tage freizuschaufeln, damit ich mehr Code-Reviews machen kann.
Wie sieht es mit Pair-Programming aus?
Bei wichtigen Themen machen wir das immer wieder. Wenn der Task ein Hybrid ist, setzt man sich zusammen an eine Aufgabe. Manchmal tackeln zwei das gleiche Problem von unterschiedlichen Seiten und führen dann die Lösungen zusammen.
Wie geht es an deinem Tag weiter?
Mittags gehe ich gerne asiatisch essen. Wir haben hier eine gute Auswahl. Ich freue mich immer auf den Mittwoch, denn da ist Team-Lunch. Danach geht es weiter.
Zwischen 19 und 22 Uhr gehe ich dann nach Hause, wo ich entweder noch weitermache oder mich an eines meiner Nebenprojekte setze.
Das heißt, du bist noch nicht verheiratet und hast noch keine Kinder.
Tatsächlich heirate ich dieses Jahr noch. Allerdings arbeitet sie auch in der Startup-Branche und kennt das daher schon. Wir unterstützen uns da gegenseitig. Hätte ich auf so eine Arbeit keine Lust, hätte ich schon längst damit aufgehört. Das muss ja jeder für sich selbst verantworten.
Hast du denn Zeit für Nebenprojekte?
Absolut. Gerade IoT und Embedded-Technologien finde ich spannend. Der Lötkolben steht schon mal länger auf dem Tisch.
Einen Lötkolben wirst du bei InstaFreight nicht brauchen. Wie sieht hier dein Arbeitsplatz aus?
Ich brauche unbedingt einen höhenverstellbaren Tisch. Ich würde nicht mehr ohne arbeiten wollen. Außerdem habe ich gerne zwei Laptops. Einen eigenen kleinen, auf dem ich viel Kommunikation mache und den ich auch unterwegs viel nutze. Der ist eigentlich immer im Rucksack dabei. Und einen großen, auf dem die Tools offen sind und den ich dann auch an einen zweiten Bildschirm anschließe, wenn ich produktiv sein muss.
Mit Rückblick auf deinen Werdegang: Was ist deiner Meinung nach für die Ausbildung zum Entwickler wichtig?
Wer nicht schon coden kann, sollte unbedingt sofort coden lernen. Und man sollte nicht darauf warten, dass einem das Studium Wissen vermittelt. Denn die Praxis hat nicht unbedingt viel mit dem zu tun, was man im Studium lernt. Ich hatte das Glück, schon sehr früh Erfahrung mit Computern zu sammeln. Mein erster Computer war ein 286er. Schon während des Studiums habe ich eine kleine Agentur gegründet, meine ersten Aufträge abgewickelt und war danach auch als freier Dozent tätig. Außerdem ist es wichtig herauszufinden, ob man in so einem Feld arbeiten möchte. Je schneller man das weiß, desto besser.
Wie hältst du dich auf dem Laufenden?
Zu meiner Morgenlektüre gehört auf jeden Fall HackerNews. Das gibt einen ganz guten Branchenüberblick. Die Blogs „The Morning Paper“ und den von Dan Blue lese ich sehr gerne. Außerdem schaue ich auf das, was Martin Fowler so macht. Er ist ist ein Software-Architekt und Consultant, der viel über Patterns schreibt und anhand von Fallstudien realitätsnah Probleme erläutert.
Gibt es Bücher, die du empfehlen kannst?
Es gibt einige Standardwerke, die man lesen sollte. Zwei der wichtigsten sind „Elements of Reusable Object-Oriented Software“ und „Clean Code“. Die sollte man unbedingt gelesen haben. Ebenso wie „The Pragmatic Programmer“ und „Seven Databases in Seven Weeks“.
Vielen Dank für das Interview.
Dieses Interview wurde am 5. Juli 2017 in den Räumlichkeiten von Rocket Internet in Berlin gehalten.