Martin Junker, Development Teamlead B2B bei Idealo

− in Kooperation mit Idealo −

Martin Junker nimmt uns mit in seine zehnjährige Geschichte bei Idealo. Er zeigt uns wie er als Praktikant die Anfänge von Idealo am Prenzelberg erlebt hat, wie Idealo seine Entwicklungs-Methoden auf Agile umgestellt hat und wie sie mit 700 Mitarbeitern in die Ritterstraße umgezogen sind. Als Development Teamlead B2B zeigt er uns den Entwicklungsprozess bei Idealo und wie man Konflikte zwischen Scrum und Scrumban-Teams löst.

Vita

Martin Junker beginnt während seines Studiums der Informatik im April 2007 bei Idealo ein Praktikum. Nach Abschluss des Studiums bekommt er eine Festanstellung an die er die Bedingung knüpft Java lernen zu dürfen. Er darf und nimmt daraufhin an. Heute ist Martin Developer Teamlead und seit 10 Jahren bei Idealo.

Tools
  • Jira, HipChat, Confluence
  • IntelliJ IDEA, Postman, Studio3T
  • Java, Spring, MongoDB
Empfehlungen
  • Event: JavaLand
Social

Hallo Martin, was ist deine Rolle bei Idealo?

Ich bin Entwickler im Bereich Product & Technology und habe dort seit Anfang April den Team-Lead in einem unserer B2B-Teams. Das heißt neben der eigentlichen Entwickler-Aufgabe habe ich die disziplinarische Führungsrolle für vier Mitarbeiter. Die Idee war es einen Teamleiter einzuführen, der zudem Teil des Teams ist und selbst programmiert.

Wie viel Zeit bleibt dir zum Programmieren?

Weil ich den Lead noch nicht so lange habe, konzentriere ich mich gerade eher auf die Führungsthemen. Ich versuche das aufzuteilen, sodass ich mich während der einen Hälfte des Tages um die Lead-Aufgaben kümmere und in der zweiten mich in Ruhe hinsetze, die Kopfhörer aufziehe und code. Oder ich mache mit den Team-Kollegen ein Tech-Review. Ich programmiere also wirklich noch selber.

Wie sind die Teams bei Idealo organisiert?

Wir haben eine auf den ersten Blick komplizierte Struktur. Es gibt für verschiedene Bereiche verschiedene Product Areas, in denen die Teams verortet sind. Für jede Product Area gibt es einen Head of Technology und einen Head of Product. Sie Verantworten sich vor dem CTO, haben den groben Scope und kümmern sich um alle Anwendungen, die customer-facing sind. Sie definieren OKRs und geben das an die Product Owner weiter, die sich dann mit dem Businessmanager zusammensetzen, um die Prioritäten festzulegen. Aus den daraus entstehenden Epics erstellen die Teams dann die Tickets für Jira.

Unser Team ist nach Scrum organisiert, die anderen Teams arbeiten mit Scrumban, was nicht immer ganz einfach zu managen ist. In den letzten Jahren sind die Anforderungen an den Angebotsimport stark gestiegen. Es werden einfach viel mehr Angebote mit mehr Informationen importiert, um dem Konsumenten eine transparente und möglichst umfassenden Übersicht zu geben.

Eines unserer Ziele ist es schon seit Jahren, dass die Angebote weiterhin reibungslos importiert werden können. Das ging anfangs recht einfach, kostet uns in der Zwischenzeit jedoch relativ viel Arbeit, weil die Angebotszahl wahnsinnig in die Höhe schießt. Wir haben mittlerweile eine Milliarde Angebotsänderungen am Tag auf idealo.de, und man hat das Gefühl, jedes Jahr kommen zehn Prozent dazu.

Wie lange bist du schon bei Idealo?

Am 1. April waren es zehn Jahre. Angefangen habe ich mit einem Praktikum. Eigentlich wollte ich gar nicht nach Berlin, und mit E-Commerce hatte ich bis dahin gar nichts am Hut, sondern eher mit digitaler Signalverarbeitung. Aber ich muss sagen, ich wurde positiv überrascht und bin hängengeblieben.

Wir leben in einer Zeit, in der Mitarbeiter im Schnitt nach drei Jahren den Job wechseln. Was hat dich bei Idealo gehalten?

Klar denkt man sich, dass man hier ein paar Jahre für den Preisvergleich gearbeitet hat, und man vielleicht mal etwas Neues machen könnte. Aber Idealo hat mich immer wieder mit neuen Facetten und Aufgaben überrascht, manchmal mit wissenschaftlichem Tiefgang. So konnte ich zum Beispiel das Verhalten des Lanczos-Filters bei der Skalierung der Produktfotos untersuchen. Die Arbeitsbedingungen haben sich immer weiter verbessert, so das ich jetzt nicht so richtig glaube, dass es da draußen noch etwas Cooleres gibt.

Wie hat sich Idealo verändert, und was für Aufgaben hast du in all den Jahren gehabt?

Am Anfang saßen wir noch schön im Prenzelberg im Hinterhof, mitten im Wohngebiet. Ich war für ein kleines Tool zuständig, das automatisch Bilder der Angebote heruntergeladen hat. Jedes Produktbild musste bei Idealo gewissen Anforderungen entsprechen, beispielsweise ohne Hintergrund sein. Und da saßen dann Leute, die die Bilder mit Photoshop bearbeitet haben. Meine Aufgabe war es diese Bilder automatisiert zu bearbeiten, mit Algorithmen zu verkleinern oder zu vergrößern und mit optimaler Qualität zur Verfügung zu stellen. Das habe ich ein Jahr lang als studentischen Job gemacht.

Was hast du studiert?

Informatik mit dem Spezialgebiet Medieninformatik an der Hochschule Anhalt in Köthen.

Wie ging es dann weiter?

2009 wurde ich fest angestellt. Meine Voraussetzung war, dass ich Java programmieren möchte. Ich hatte Java mal an der Uni, aber keine praktische Erfahrung. Der Wechsel zu Java hat super geklappt und so bin ich bei Idealo zur Angebotsverarbeitung gekommen. Da ballerte man uns quasi mit Angeboten zu.

Dann, das muss so 2010 oder 2011 gewesen sein, haben sich die Rahmenbedingungen etwas geändert. Wir haben angefangen ordentliche Methoden einzuführen. Wir haben alle Entwickler in einen Bus gepackt, den Agile-Bus, und haben Scrum in der gesamten Produktentwicklung eingeführt. Ich glaube wir waren damals am Puls der Zeit.

Vor zwei Jahren sind wir hier in die Ritterstraße gezogen, in ein altes Industriegebäude mit drei Höfen, fünf Etagen und insgesamt zehntausend Quadratmetern Fläche. Mittlerweile sind wir über 700 Mitarbeiter, 200 davon in der Technik. Wir versuchen technisch immer mit der Zeit zu gehen. Aber natürlich sind nicht alle Entwickler gleicher Meinung, welche Technologien eingesetzt werden sollen, was die Einführung verzögert. Ich finde aber, Idealo geht hier einen ganz guten Weg, auch wenn es gefühlt immer irgendwie schneller gehen könnte.

Was hat sich technologisch bei Idealo getan? Seid ihr noch immer bei Java?

Ja, wir sind Java treu geblieben. 2011 ist dann Spring hinzugekommen, ein Framework, das uns massiv geholfen hat die alten Software-Monolithen einzureißen, weil es Dependency Injection unterstützt. Der neuste Schrei ist jetzt Spring Boot, mit dem sich Webapplikationen relativ einfach hochfahren lassen. Es gibt eine Weboberfläche, in die ich eingebe, was ich haben will, klicke auf Start, und schon geht es los.

Außerdem geht es jetzt auch in Richtung Microservices. Angenommen, ein Kunde möchte eine Rabattaktion auf Sommerreifen machen. Aber der Kunde übermittelt uns den Rabatt nicht gleich im Import-CSV mit. Dann müssen wir auf alle Sommerreifen-Angebote den Rabatt drauf rechnen, und wenn die Aktion vorbei ist, alles wieder zurückrechnen. Manchmal wird das im Frontend gemacht, manchmal im Backend. Mit einem Microservice für Rabattaktionen haben wir jetzt eine einheitliche Stelle, an der wir das managen können. Damit fahren wir ganz gut und bekommen unsere riesige Anwendung noch mal ein bisschen kleiner.

An welchem Projekt arbeitest du aktuell?

Aktuell arbeite ich an einem Migrationsprojekt. Dabei geht es um eine Benutzeroberfläche, mit der das technische Account-Management die CSV der Kunden konfigurieren kann. Das Account-Management ist in direktem Kontakt mit dem Händler und bekommt die Preise der Produkte als CSV-Datei geschickt. Meine Aufgabe ist es dem Account Management einen Knopf zu geben, den es drücken muss, und die Preise sind online sofort aktualisiert. Aktuell gibt es dafür noch keine Oberfläche. Via JSON sagen wir dem Shop-Importer, dass er per Ftp auf dem Server schauen soll, ob da die CSV liegt, und dann schiebt er die Daten in die Datenbank. Wenn wir fertig mit dem Projekt sind, haben wir das mit der Spring-Boot-Anwendung auf eine moderne Architektur gehievt.

Wie beginnt ein Projekt, und wie gehst du vor?

In der Quartalsplanung entscheiden Geschäftsführung, Head-Ofs und Business Owner über die Vorhaben. Bei der Vorstellung der Planung bekomme ich das erste Mal grob von neuen Projekten mit. Danach entscheidet der Product-Owner dann, wann es Zeit für eine konkrete Umstellung oder ein neues Feature ist. Bei Projekten wie der Ablösung des Importers sind die Aufgaben schon lange bekannt und wurden auch schon mehrmals angegangen. Beim letzten Quartals-Update wurde bekannt gegeben, dass wieder Zeit dafür eingeräumt wurde. Ich schnappe mir dann ein Jira-Ticket, und los geht es.

Im Falle des Importers war das allerdings nicht so einfach, weil an dem Problem schon mehrere Teams gearbeitet haben. Dazu musst du wissen, dass bei Idealo jedes Team selbst entscheiden kann, wie der agile Prozess aussieht. Die Teams, die es schon lange gibt, machen alles in einer Art Scrumban. Das heißt, sie machen kein Commitment mehr und schätzen auch nicht mehr, wie lange sie für ein Ticket brauchen werden. In meinem aktuellen Team machen wir zwei-Wochen-Sprints. Um mein Ticket umzusetzen, brauche ich die Hilfe der anderen Teams, die an dem Ticket bereits beteiligt sind. Diese Abhängigkeiten sind dann schon problematisch.

Wie löst ihr diese Abhängigkeit zwischen den Scrum- und Scrumban-Teams?

Das geht, weil die Teams relativ nah beieinander sitzen, im gleichen Raum sogar. Das kann man dann kommunikativ lösen. Wir haben andere Abhängigkeiten, da ist es wesentlich schwieriger, weil zum Beispiel die Stakeholder in einem anderen Gebäudeteil sitzen. In so einem Fall dauert es manchmal sechs Monate, bis die Abhängigkeit gelöst ist.

Wie sieht der Feedback-Prozess bei deinen Projekten aus?

Einmal im Monat haben wir eine Art Review, die etwas öffentlicher und nicht zu technisch ist. Da kommen die Stakeholder, die später den Knopf drücken, gucken sich das an und haben auch schon den einen oder anderen Wunsch. Auch über Jira-Kommentare bekommen wir dann oft noch weitere Anforderungen. Zum Beispiel gab es den Wunsch das Import-Ende anzuzeigen, oder wie lange der Import noch geht. Meistens bekommen wir aber schon im Vorgespräch solche Feinheiten mit.

Wie sieht ein typischer Tagesablauf bei dir aus?

Um 7.30 Uhr werde ich von meinen beiden Kindern geweckt, die ich vor 9 Uhr in der Kita abgebe. Dann fahre ich eine halbe Stunde mit dem Fahrrad quer durch Berlin, schön am Alexanderplatz vorbei, hier in die Tiefgarage und gehe hoch zur Kaffeemaschine. Nur in der Caféteria gibt es Kaffeemaschinen, die Milchkaffee oder Latte Macchiato machen. Das ist schon mal ein guter Spot, um mit den Kollegen erste Updates auszutauschen. Manche Teams machen Frühstück. Da gehe ich gerne auch mal vorbei und stibitze mir etwas.

Um zehn fangen dann die Stand-ups an, und danach gibt es ein übergeordnetes Treffen. Wir nennen es das Scrum of Scrums. Dort stellt jeder vor, was in seinem Team gerade aktuell ist. Bis Mittag ist dann relativ viel Geschäft mit Meetings und Abstimmungen. Wir haben eine Caféteria, die die Policy hat, dass es dort nur vegetarisches Essen gibt. Dort gibt es immer sehr leckeres und verrücktes Zeug. Da gehe ich ganz gerne hin.

Nach dem Mittagsdurchhänger geht es dann normal weiter, und es wird immer ruhiger, weil die ersten schon früh gehen, um ihre Kinder abzuholen. Ich arbeite meist bis 18 Uhr.

Welche Tools nutzt ihr in eurem Team?

Wir nutzen relativ viel vom Atlassian-Stack. Das heißt neben Jira haben wir auch HipChat und die Wiki-Software Confluence. Bitbucket nutzen wir als Git-Aufsatz, was man relativ gut miteinander kombinieren kann.

Zu meinen persönlichen Tools gehört zum Beispiel IntelliJ IDEA, womit ich recht viel entwickle. Postman nutze ich für REST-Calls. Studio 3T (ehemals MongoChef) brauche ich auch. Das ist ein kleines Berliner StartUp, hier gleich um die Ecke. Mit dessen Software können wir die MongoDB gut abfragen. MongoDB ist eine gut skalierende Datenbanktechnologie, denn unsere Datenbank ist ziemlich groß. Ich glaube sogar, wir haben Europas größte MongoDB.

Wie groß ist die denn?

Für Deutschland enthält sie über 500 Millionen Dokumente. Dafür brauchen wir mittlerweile um die 30 Maschinen. International gesehen verdoppeln sich diese Zahlen dann noch einmal.

Welche Tools nutzt ihr zum Testen? Wie sieht es mit Code-Review aus?

Ich bin im Backend. Das heißt, da habe ich jetzt nicht so ein mega cooles Tool. Du erwartest jetzt wahrscheinlich sowas wie Selenium oder sowas. Aber ich mache einfache Unit-Tests und manchmal ein paar Integrationstests, weil wir viel auf Microservices unterwegs sind. Es gibt eine Dev-Stage, eine Test-Stage und eine Production Stage.

Zum Thema Review haben wir eigentlich nicht wirklich eine Policy. Aber wir haben das Working-Agreement, das jemand drüber gucken muss.

Klingt gefährlich. Ist dir denn da schon mal etwas passiert?

Ja, einmal habe ich richtig Mist gebaut. Es gibt eine Berechnungsvorschrift, wie man eindeutige Schlüssel zu Angeboten berechnet. Die habe ich einmal angepasst und plötzlich gab es alle Angebote doppelt. Das ist schon ein komisches Gefühl, wenn circa 20 Leute einen Tag und eine Nacht daran arbeiten das wieder hinzubekommen.

Gibt es etwas, was dich wahnsinnig macht bei der Arbeit?

Mich macht es wahnsinnig, wenn Code nicht funktioniert. Ich sehe, wie das ablaufen müsste, und dann läuft es aus irgendeinem Grund doch nicht so ab. Das macht mich wahnsinnig.

Woran erkennt man das dann?

Wenn ich das zum fünften Mal ausführe, und der Test ist immer noch rot, dann fange ich an zu fluchen. Manchmal zeige ich es Kollegen und versuche sie davon zu überzeugen, dass dies eigentlich so funktionieren müsste, obwohl der Fehler natürlich bei mir liegt.

Was inspiriert dich?

Meetups und Konferenzen. Seit die Kinder da sind, gehe ich nicht mehr so viel auf Meetups. Aber ich versuche noch immer ein-/zweimal im Jahr auf Konferenzen zu gehen. Zuletzt war ich auf der JavaLand im Phantasialand in Brühl. Tagsüber Konferenz, abends Black Mamba.

Vielen Dank für das Interview.

Dieses Interview wurde am 19. April via Skype geführt.
Fotos: Andreas Lukoschek