Timo Josten, iOS Developer bei Grandcentrix
24. August 2016Köln, Schanzenstraße. Als wir das Carlswerk im Kölner Osten besuchen, weht uns der Wind den würzigen Duft türkischer Grills entgegen. Über zu wenige Restaurants kann sich Timo Josten nicht beschweren, als er uns durch die ehemaligen Verwaltungsräume einer Kabelfabrik führt, die heute wie ein modernes Startup-Büro aussehen. Timo arbeitet gerade an einer Internet of Things App, für eine der größten Waschmaschinenhersteller der Welt, in dessen Produktentwicklungsprozess er uns einführt. Wenn es nach ihm ginge, würde er schon heute viel mehr über IOT steuern. Dass er das in Zukunft kann, daran arbeitet er.
Vita
Schon während des dualen Studiums an der Europäischen Fachhochschule in Brühl, sammelt Timo Josten die ersten beruflichen Erfahrungen. Nach Abschluss zum Wirtschaftsinformatiker, versucht ein Kommilitone ihn zu Grandcentrix zu holen. Erst einige Jahre später entscheidet sich Timo für diesen Schritt. Heute arbeitet er als iOS Developer bei der Kölner Agentur.
Tools
- GitHub Enterprise
- Sketch
- XCode, AppCode, Atom, Sublime
Hi Timo, was ist aktuell deine Rolle bei Grandcentrix?
Bei Grandcentrix bin ich als iOS Developer und Teamleitung im Bereich Solution Architecture eingestellt. Als ich vor zwei Jahren bei Grandcentrix angefangen habe, war ich noch reiner Developer. Mittlerweile verteilt sich meine Arbeit so, dass ich mit etwa 60 % Entwicklung und 40 % Management beschäftigt bin. Je nachdem, was gerade ansteht. Das heißt, ich kümmere mich zum Beispiel auch um Bewerbungen.
Was zeichnet einen iOS Developer bei Grandcentrix aus?
Generell kann man über Entwickler bei Grandcentrix sagen, dass sie keine reinen Softwareentwickler sind. Bei uns hängt da auch immer ein bisschen Requirement-Engineering dran. Das bedeutet das Herausarbeiten der Anforderungen, die der Kunde an die Software hat, und die Überführung in einen Anforderungskatalog. Daraus ergeben sich dann User-Stories, die wiederum in ein sprintähnliches Konstrukt einfließen und dann zu Software werden. Da spielt es auch erstmal keine Rolle, um welche Plattform es geht. Engineering ist plattformübergreifend. Damit kommt jeder Kollege mal in Berührung: Mal mehr, mal weniger.
Ist das eine Besonderheit von Grandcentrix?
Also normal ist das nicht. Wir suchen eher keine reinen Entwickler, den typischen Programmierer, sondern vielmehr den Software-Engineer, der sowohl die Implementierung, als auch das Drumherum beherrscht. Ich glaube, wenn man erfolgreich sein möchte, muss man das so machen.
Product Jobs
An welchem Projekt arbeitest du aktuell?
Ich arbeite gerade an der Miele-App. Seit drei Jahren sind wir bei Grandcentrix schon mit der App beschäftigt und sie war mein erstes Projekt, als ich vor zwei Jahren angefangen habe. Dabei geht es um das Internet of Things, das ich für einen sehr spannenden Bereich halte. Seitdem habe ich natürlich auch an anderen Projekten gearbeitet. Denn man sitzt bei uns nicht seine gesamte Amtszeit nur an einem Projekt, damit man da nicht in einen Trott verfällt und projektblind wird. Zum Beispiel habe ich für die Migros Genossenschaft eine Einkaufsliste für die Apple Watch gebaut, als die Watch gerade auf den Markt kam.
Wie sieht dein typischer Arbeitsalltag aus?
Je nachdem welchen Wochentag wir haben, stehe ich um sechs Uhr auf und gehe erstmal zum Sport. Das mache ich drei Mal pro Woche. Früher war ich Leistungsschwimmer, aber für Vereinssport habe ich heute keine Zeit mehr. Zwischen halb neun und neun bin ich dann im Büro. Ich lese E-Mails und überprüfe, ob ich das, was ich am Vortag getan habe, in das Git-Repository eingecheckt und ob ich alles für den heutigen Tag vorbereitet habe. Abgeschlossene Tickets der Kollegen werden dann im Peer-Review-Prozess Zeile für Zeile durchgegangen und auf Plausibilität und Korrektheit überprüft, bevor der Code dann im Release landet. Wenn nötig, kommentiere ich das, was die Kollegen gemacht haben, oder füge Verbesserungsvorschläge hinzu.
Um zehn Uhr trifft sich dann das Miele-Team für das Daily Standup. Das ist Teil des Scrum-Prozesses, bei dem sich alle Teammitglieder treffen um kurz zu besprechen, was wir am Vortag gemacht und uns für den heutigen Tag vorgenommen haben. Das ist sehr wichtig, denn hier sprechen wir auch über Probleme, die uns blockieren und um die sich zum Beispiel der Scrum-Master kümmert, damit wir weiterarbeiten können. Da ich im Moment viel mit Recruiting befasst bin, schaue ich mir danach meist die neuen Bewerbungen an, führe Telefonate und lade die Bewerber zum Gespräch in die Agentur ein.
Und programmierst du dann auch mal?
(lacht) Früher habe ich tatsächlich mehr programmiert. Aber irgendwann wollte ich Verantwortung und die habe ich jetzt auch bekommen, worüber ich sehr froh bin. Denn mir war relativ bald klar, dass ich die nächsten zehn Jahre nicht nur programmieren, sondern auch über den Tellerrand hinausschauen möchte. Selbstverständlich programmiere ich immer noch sehr gerne und auch die meiste Zeit. Am Nachmittag habe ich genug Zeit zum Programmieren. Gegen 19 Uhr bin ich dann zu Hause: Wir haben also grundsätzlich sehr geregelte Arbeitszeiten, da wir uns bemühen, die Projekte so zu planen, dass Überstunden erst gar nicht notwendig werden. Das ist weder im Interesse des Arbeitgebers noch des Arbeitnehmers. Damit endet dann die offizielle Arbeitszeit.
Allerdings kann ich mir nicht vorstellen nach Hause zu kommen und das MacBook nicht mehr aufzumachen, da kribbelt es mir in den Fingern. Gar nichts zu tun, fällt mir extrem schwer. Ich habe schon immer in meiner Freizeit programmiert und Dinge gebaut. Seit zwei Jahren baue ich zum Beispiel eine App für den Mac und das iPhone, die relativ erfolgreich ist. Ich bin also nicht der Typ, der nach Hause kommt und die Füße hochlegt. Ich setze mich in Ruhe nochmal an den Rechner und mache dann was mir Spaß macht.
Um was geht es bei der App?
Die App heißt Dropshare und dient dem Austausch von Dateien, ähnlich wie Droplr oder CloudApp. Im Grunde handelt es sich dabei nur um ein kleines Icon in der Menüleiste, auf die du eine Datei ziehst, die direkt hochgeladen wird. Du bekommst dann eine URL, die man teilen kann. Das Tool ist mittlerweile sehr mächtig und ist super für Leute, die Kontrolle über ihre Dateien haben wollen. Das Projekt habe ich vor über zwei Jahren begonnen, die App kostete früher einen, heute 25 Euro.
Wie sieht denn ein typischer Produktentwicklungsprozess bei Grandcentrix aus?
Für den April-Release der Miele-App zum Beispiel ist Miele mit der Idee an uns herangetreten, dass man die neue Generation Geschirrspüler direkt mit der App verbinden kann. Bisher gab es eine Station in der Mitte, die das übernommen hat. Das geht dann erst mal zu unserer User-Experience-Abteilung, bei der die Idee ausgearbeitet wird. Hier gibt es bereits die ersten Feedbackrunden mit dem Kunden. Dann landet das Implementierungsticket bei uns im Backlog der Entwickler.
In aller Regel haben wir Entwickler schon gemeinsam mit den Ingenieuren des Kunden überlegt, wie eine solche App technisch funktionieren kann, was die Anforderungen und Schnittstellen sind. Das ist die Phase, in der wir viel ausprobieren. Wir haben ja zahlreiche Geräte bei uns im Büro stehen, mit denen wir Lösungen direkt testen können. Dann erstellen wir das Epic, das ist ein Meilenstein für die Produktentwicklung, unter dem es kleine Tasks gibt, die in der Regel so klein sind, dass sie sich gut schätzen lassen. So können wir abschätzen wie lange wir insgesamt für die Implementierung brauchen werden. Im Rahmen unseres Scrum-Prozesses wird dann die Sprintplanung umgesetzt. Die Aufgabenpakete werden priorisiert und in der gewünschten Reihenfolge abgearbeitet. Dabei arbeitet immer mehr als ein Kollege an einem Feature, was sinnvoll ist, weil man Domänenwissen vermeiden will.
Wann wird dann das Produkt getestet?
Wir arbeiten viel mit automatisierten Tests, mit der zum Beispiel die Funktionalität der User Experience getestet wird. Inhouse haben wir zudem Kollegen, die sich mit dem Testing beschäftigen. Die konzipieren dann einen Testcase und fahren das auf allen Geräten ab. Der Kunde testet natürlich auch und nutzt dafür Testhaushalte. Das Feedback, das wir aus solchen Tests bekommen, bezieht sich meist auf die User Experience, was immer sehr wertvoll ist.
Habt ihr ein Device Lab?
Wir haben einen Device Locker, in dem alle aktuellen Geräte mit iOS und Android zum Testen zur Verfügung stehen. Mit unseren privaten Geräten testen wir eher nicht, denn gerade bei Apple ist das ja nicht so einfach. Damit man auf einem Gerät testen kann, muss man das bei Apple registrieren – und da gibt es eine Limitierung. Wenn jeder Kollege auch sein privates Gerät registrieren lassen würde, dann hätten wir keinen Platz mehr für die Testgeräte. Wir haben so viele Testgeräte da, dass man sich jederzeit eines nehmen kann.
Welche Tools benutzt ihr?
Wir nutzen GitHub in der Enterprise-Variante für die Git-Versionsverwaltung. Wir haben sehr gute Erfahrungen damit gemacht, was die Handhabung und das Feature-Set angeht. Ansonsten sind wir mit den Tools sehr offen. Wir sagen immer:
The right tool for the right job.
Im UX-Bereich haben wir zum Beispiel viele Tools für das Prototyping ausprobiert. Mittlerweile arbeiten wir viel mit Sketch und weniger mit Photoshop. Wenn jemand aus dem Team ein bestimmtes Tool verwenden möchte, dann spricht da nichts dagegen. Wenn das Tool im direkten Kontakt mit Kundendaten steht und es Daten in die Cloud schiebt, dann müssen wir uns das nochmal aus datenschutzrechtlichen Gründen anschauen und der Kunde muss sein Einverständnis geben. In aller Regel kann man aber mit guten Argumenten etwas erreichen und am Ende das Tool der Wahl nutzen.
Bei der iOS Entwicklung arbeiten wir mit XCode. Das ist die IDE, die Apple selbst anbietet. Eine Kollegin probiert gerade AppCode aus. Im Backend-Bereich, wo man weniger mit IDEs arbeitet, sondern mit reinen Code-Editoren wie Atom oder Sublime, muss man sicherstellen, dass man mit Kollegen nicht in Konflikt gerät, weil Dateien anders abgespeichert werden. Die Auswahl der Editoren ist aber viel breiter.
Bei den Android-Entwicklern sieht das anders aus. Wir haben uns darauf geeinigt Android Studio zu benutzen, ganz einfach deswegen, weil die Kollegen mit Eclipse durchweg schlechte Erfahrungen gemacht haben. Das passt einfach nicht mehr in unseren Entwicklungsflow.
Wie sieht das denn bei der Hardware aus?
Jeder Kollege, der hier anfängt, wird mit einem MacBook seiner Wahl ausgestattet. Dazu gibt es einen 27 Zoll Monitor, eine Maus und eine Tastatur. Der Mac darf mit nach Hause genommen und privat genutzt werden, das ist Branchenstandard. Anders ist das heutzutage auch nicht mehr denkbar. Und es ist praktisch, wenn man auch zu Hause noch mal reinschauen kann, falls einem etwas nicht zur Ruhe kommen lässt.
Was sind für dich wichtige Themen und Trends?
Ein Thema, das ich richtig spannend finde, und warum ich hier auch genau richtig bin, ist das Thema Internet of Things und alles, was mit Heimautomatisierung zu tun hat. Da haben wir ja bereits viele große Projekte und ich glaube, das ist eine Richtung, in die es gehen wird. Spannend ist, dass es in erster Linie nicht nur um Apps oder das iPhone geht, sondern um die Konnektivität zwischen den Geräten. Dass ich mich mit meinem Handy in das Auto setzen und Spotify nutzen kann, finde ich super. So ähnlich will ich das auch mit meiner Waschmaschine, dem Kühlschrank und der Beleuchtung haben. Ich bin ein großer Freund von HomeKit von Apple, einem Framework für Hersteller, mit dem sich alles über eine App bedienen lässt.
Wie muss man sich deinen Arbeitsplatz vorstellen?
Ich habe, glaube ich, den einzigen Stand-Desk in der Firma. Der landete irgendwann mal bei mir, was vermutlich auch an meiner Größe liegt: Ich bin zwei Meter groß. Als ich noch nicht so viel Sport gemacht habe, hatte ich Rückenprobleme durch das viele Sitzen. Darum bin ich froh, dass ich diesen Tisch habe. Neben dem Mac ist da dann noch ein 27“-Display, Maus und Tastatur und natürlich mein Notizbuch. Digital habe ich schon alles probiert und es gibt einfach keine Lösung, die mich überzeugt. Darum notiere ich es auf Papier und übertrage sie: Sei es in unser internes Wiki, die Knowledge-Base der Firma, als Ticket, wenn es Projektbezug hat, oder einen Call Log, wenn ich Notizen während eines Telefonats gemacht habe. Ich schreibe da alles rein und nehme es auch mit nach Hause. So kann ich etwas aufschreiben, wenn mir was einfällt und habe alles an einem Ort. Dann kommt es auch oft vor, dass ich gar nicht an meinem eigentlichen Arbeitsplatz sitze – ich habe ein Büro im Nachbargebäude – sondern hier auf einer Couch oder im Sommer auf der Dachterrasse. Ach, und mein Telefon ist auch immer dabei. Ansonsten bin ich pflegeleicht.
Was bedeutet für dich Erfolg?
Mit einem guten Gefühl nach Hause zu gehen, wenn ich etwas geschafft habe. Selbst wenn kein Code rausgefallen ist. Denn es gibt Tage, da ist es wichtig zu verstehen, was die Anforderungen sind und wie die Technik funktioniert. Mittelfristig bin ich stolz auf Dinge, die das Team implementiert hat und die vom Kunden genutzt werden. In die Miele-App zum Beispiel haben wir viel Arbeit hineingesteckt und unglaublich lange für das Release gearbeitet. Die Maschine rollt dann vom Band und bis dahin muss die App fertig sein. Dass wir das zusammen geschafft haben, empfinde ich als großen Erfolg.
Was wissen die Wenigsten über den Beruf des iOS Developers?
Ich glaube, viele unterschätzen die Aufgaben, die man als Developer hat. Das sehen wir auch in den Job-Assessments. Es geht halt um mehr als um das Zusammenklicken eines User Interface und das Programmieren von Aktionen. Gerade in langfristigen Projekten geht es darum, die Infrastruktur zu verstehen, zum Beispiel wie das Betriebssystem funktioniert und was passiert, wenn meine App zu viel Arbeitsspeicher frisst und ich diesen später nicht freigebe. Ansonsten gibt es eigentlich keine Überraschungen. Das iOS Framework muss man halt lernen und wir auch verstehen, dass Apple nicht immer alles richtig macht, sondern auch mal Bugs einbaut, oder Funktionen nicht einwandfrei funktionieren.
Was empfiehlst du Absolventen, die sich überlegen iOS Developer zu werden?
Man kann sich natürlich alles autodidaktisch beibringen. Ich persönlich finde das Studium aber wichtig, weil man da die Paradigmen verstehen lernt, die für die Softwareentwicklung wichtig sind. Ich habe zum Beispiel mein duales Studium an der Europäischen Fachhochschule in Brühl absolviert. Am Ende konnte ich theoretisch in jeder Programmiersprache entwickeln. Was man lernen muss, ist eine andere Syntax und andere Vorgehensweisen. Wie ist das Memory-Management? Wie sehen die Datentypen aus?
Ich glaube, auch der soziale Aspekt während des Studiums ist wichtig. Man lernt, wie man im Team entwickelt und wie man für das Team Verantwortung übernimmt. Darum kann ich ein Informatik-Studium – egal welches – absolut empfehlen.
Gibt es etwas in deinem Job, das immer wieder falsch gemacht wird?
Fehler machen bedeutet ja nicht, dass man ein schlechter Entwickler ist. Das Wichtigste ist, dass man einen Fehler als solchen wahrnimmt, um daraus zu lernen. Darum ist unser Modell der Peer-Reviews so wichtig. Wenn mich jemand auf einen Fehler hinweist, dann ist das eine super Sache, denn dann wird mein Fehler behoben, bevor ein Schaden entsteht.
Passiert dir das auch noch, dass ein Kollege einen Fehler in deinem Code entdeckt?
Auf jeden Fall! Das passiert jeden Tag. Das passiert jedem von uns und darum ist es wichtig und Standard, dass alle Mitarbeiter am Peer-Review teilnehmen. Manchmal sind die Fehler Kleinigkeiten, manchmal größere Sachen. Manchmal resultieren sie daraus, dass etwas nicht gut dokumentiert wurde. Dann ist das ein Fehler von uns allen, der umgehend behoben wird.
Gibt es etwas, das dich an deinem Beruf total wahnsinnig macht?
Meetings! (lacht). Es gibt Meetings, die sind super hilfreich und auch sinnvoll. Schwierig ist es, wenn man ausschweift. Ich bin ein Freund davon, kurz und knapp zu argumentieren und dann zum Punkt zu kommen. Wir versuchen, Meetings so kurz wie möglich zu halten, und das gelingt uns auch ganz gut. Wir haben relativ wenige Meetings, was auch daran liegt, dass wir die Dailys haben.
In dem Unternehmen, in dem ich vorher war, haben wir täglich stundenlang diskutiert und uns immer wieder im Kreis gedreht. Das hat mich verrückt gemacht!
Gibt es etwas, das dich inspiriert oder hast du Vorbilder?
Es gibt viele Dinge, die ich spannend finde, und ich informiere mich viel. Besonderen Respekt habe ich vor Leuten, die mit Image-Processing zu tun haben. Technische Herausforderungen finde ich spannend. Vorbilder habe ich keine und finde das Konzept ein bisschen schwierig, weil ich glaube, dass man sich da etwas vormacht.
Welche Blogs oder Bücher kannst du zum Thema iOS empfehlen?
Tatsächlich kann ich alles empfehlen, was Apple an Ressourcen anbietet. Gerade nachdem sie das nicht nur optisch, sondern auch strukturell überarbeitet haben. Apple bietet viele technische Dokumente und Beispiel-Code an. Zum Beispiel, wie man Bluetooth verwendet, oder wie man die Kamera ansteuert. Als Blog kann ich objc.io empfehlen. Sie bieten komprimiertes, sehr detailliertes und gut erklärendes Material an. Zudem gibt es unzählige Newsletter, wie iOS Dev Weekly oder Swift Weekly. Wer außerdem bei GitHub mal nach iOS sucht, wird einige spannende Frameworks finden, die man nicht gleich benutzen muss. Aber es ist eine Möglichkeit zu schauen, was andere Leute so machen und was es für Möglichkeiten gibt.
Und natürlich gibt es noch Stack Overflow, eine Frage- und Antwort-Plattform zum Thema Programmierung. Dabei kann es meines Erachtens nicht das Ziel sein, Antworten von Stack Overflow nur zu kopieren, und danach nie wieder anzuschauen. Das ist wie früher in der Schule: Abschreiben ist immer nur für den Moment hilfreich. Wer aber versteht was er da tut, der wird nicht nur besser im Coden, sondern kann anderen helfen und damit ein wertvolles Teammitglied sein.