Xamarin Hackathon

26. Juni 2015

Hackathons sind toll. Und weil das so ist, haben der Chris, der Markus und ich (“die Organisatoren”) einen mit unseren eXperts-Kollegen abgehalten. Ziel war, unsere Erfahrungen mit Xamarin – und im speziellen Xamarin.Forms – mit den Kollegen zu teilen und sie in die Lage zu versetzen, selbst die ersten Schritte in der Cross-Plattform-Entwicklung von Mobile Apps zu gehen.

Aber was ist eigentlich ein Hackathon? Der Begriff erweckt die Assoziation einer motivierenden, ungezwungenen und dennoch zielgerichteten Arbeitsatmosphäre, die eine gute Basis ist für einen nachhaltigen Wissensaustausch unter den Kollegen. Wikipedia meint, dass es sich um eine kollaborative Software- und Hardware-Entwicklungsveranstaltung handele. Dabei werde zunächst ein Thema vorgestellt und dann dazu Umsetzungsvorschläge diskutiert. Im Folgenden werde innerhalb kurzer Zeit ein gemeinsames Produkt erstellt. In diesem umfassenden Sinne fand dies bei uns jedoch nicht statt. Wir hatten den Begriff des Hackathon etwas uminterpretiert…

Unser Hackathon hatte den Charakter eines Workshop, bei dem Wissen und Erfahrungen vermittelt werden. Die Organisatoren hatten ein Beispielprojekt entwickelt, anhand dessen die Arbeit mit Xamarin.Forms demonstriert und erfahren werden sollte. Es ging um eine Mobile App für Android, iOS und Windows Phone. Den Funktionsumfang hielten wir handlich klein, um den einen Tag, den wir für den Hackathon angesetzt hatten, nicht mit fachlichen Diskussionen vollzustopfen. Stattdessen konzentrierten wir uns auf die Technologie. Eben Xamarin.Forms. Dazu gibt es hier im Flurfunk übrigens auch den einen oder anderen Beitrag, der sich zu lesen lohnt.

Die Anforderungen an die zu entwickelnde Anwendung waren überschaubar. Sie sollte eine Liste von Elementen darstellen, welche editiert und gelöscht werden können. Auch das Hinzufügen von Elementen sollte möglich sein. Durch die Liste sollte man scrollen und im Kontext einzelner Listenelemente interagieren können. Bei der Eingabe eines Elements sollten verschiedene Tastatur-Layouts (normal, numerisch) berücksichtigt sowie einfache Validierungen durchgeführt werden.

Als Vorbereitung hatten wir eine Xamarin.Forms Solution angelegt, quasi als Referenzimplementierung, die dann während des Hackathon nach und nach aufgebaut werden sollte. Die Steps dafür hatten die Organisatoren quasi als “roten Faden” durch den Hackathon notiert. Ebenfalls im Vorfeld wurden alle Teilnehmer über die technischen Voraussetzungen informiert. So musste beispielsweise jeder Teilnehmer eine Xamarin-Trial oder -Business-Lizenz zur Verfügung haben. Weiterhin musste Xamarin auf dem Entwicklungsrechner installiert sein und geeignete Emulatoren oder Hardware Devices zum Testen bereitstehen.

Ablauf

Und so haben wir uns morgens neun Uhr zu zehnt in unserem Konferenzraum um einen Tisch versammelt, die Notebooks ausgepackt und losgelegt. Die Organisatoren sorgten per Beamer für ein gemeinsames Bild von Architektur und Code.

Zunächst stellten wir sicher, dass bei allen Teilnehmern die technischen Voraussetzungen gegeben sind. Danach ging es dem “roten Faden” folgend ans Implementieren. Dabei teilten wir den Gesamtumfang der Implementierungsschritte so auf, dass drei Leute nacheinander jeweils einen Teil davon demonstrierten. Ich legte den Grundstein für die Applikation und implementierte das architektonische Grundgerüst. Markus setzte dann fort und demonstrierte plattformspezifische Implementierungen für Windows Phone. Chris schloss daran an und vervollständigte die Applikation am Beispiel der Android-Plattform. Im Ergebnis hatten wir eine lauffähige Software mit dem geplanten Funktionsumfang auf zwei Plattformen zur Verfügung – Windows Phone und Android.

Was ist mit iOS? Dafür kann man doch mit Xamarin auch entwickeln? Selbstverständlich. Leider machte uns an diesem Tag aber Murphy einen Strich durch die Rechnung, indem er verhinderte, dass sich unser MacBook Air ins interne Netz integrierte. Damit stand es als Xamarin Build Host nicht zur Verfügung und wir konnten die iOS App zwar nebenbei mitentwickeln, aber nicht deployen und testen. Da gerade für Einsteiger in Xamarin das Entwicklungs-Setup für die Entwicklung von iOS-Applikationen besonders interessant ist, war es umso ärgerlicher, dass wir das im Hackathon nicht zeigen konnten.

Was wir gelernt haben

Am Ende des Hackathon – so gegen 16:30 – erbaten sich die Organisatoren ein Feedback von den Teilnehmern. Sozusagen was gut und was verbesserungswürdig war. Daraus ergaben sich die folgenden Erkenntnisse.

  • Was das Erklären einer laufenden Implementierung anbelangt, so ist das Zeitempfinden zwischen Teilnehmern und demjenigen, der etwas codiert, stark unterschiedlich. Demonstriert man eine Implementierung, ist man meistens zu schnell für jemanden, der dies zum ersten Mal tut und verstehen sowie nachimplementieren soll. Die Gefahr besteht, dass Teilnehmer “abgehängt” werden. Als Demonstrierender ist man von der Geschwindigkeit dann genau richtig unterwegs, wenn es einem zu langsam vorkommt.
  • Es ist aus didaktischer Sicht unbedingt empfehlenswert, zu Beginn der Veranstaltung die fertige App mit vollem Funktionsumfang vorzustellen, also das Ziel des Hackathon. Zusätzlich hilft es den Teilnehmern während der Veranstaltung dabei, die gerade durchgeführten Aktionen in den richtigen Zusammenhang zu stellen, also zu wissen, warum man gerade dieses und jenes tut.
  • Die gemeinsame Entwicklung der App teilte sich in mehrere Schritte, z. B. das Projekt-Setup, ein erstes Hallo-Welt-Beispiel, Einbinden von Ressourcen, Integration eines Dependency-Injection-Containers, Implementierung von plattformspezifischem und Shared Code. Es ist sehr hilfreich, auch vor jedem dieser einzelnen Schritte darzustellen, was das Ziel dieses Schrittes ist. Damit ist dann auch jedem klar, warum z. B. jetzt ein Interface als Abstraktion angelegt wird und was damit erreicht werden soll.
  • Um sich auf die Technologie zu fokussieren, ist es empfehlenswert, die Fachlichkeit der zu entwickelnden Anwendung klein zu halten.

Fazit

Die Technologielandschaft im Bereich der Software-Entwicklung ist bekanntermaßen immer dynamischeren Veränderungen unterworfen. Kein Mensch kann mehr in allen Themen selbst fit sein oder hat die Zeit, sich von Grund auf fit zu machen. Dafür ist das Umfeld zu komplex, zu groß die Auswahl der Technologien, zu gering die zur Verfügung stehende Zeit.

Es braucht also auch andere Wege als “Selbststudium”, um neben der eigentlichen Arbeit up-to-date zu bleiben. Wir in der SDX haben dafür bereits unterschiedliche Formate etabliert, um für Wissenstransfer innerhalb des Unternehmens zu sorgen. So halten eXperts regelmäßig zu unterschiedlichsten Themen kleine Vorträge und führen Diskussionsrunden, so am Abend, mit Pizza und Bier. Zu diesem Portfolio an Möglichkeiten der Wissensvermittlung stoßen immer mehr auch die Hackathons.

Alles in allem ist so ein Hackathon eine hervorragende Art und Weise, um noch fokussierter und intensiver Wissen zwischen eXperts auszutauschen. Und zwar hands-on, unmittelbar, praktisch, am Code. Man kann damit sehr gut Hürden abbauen, sich selbst mit neuer Technologie auseinanderzusetzen. Und die Dauer von einem ganzen Tag sorgt dafür, dass sich jeder Teilnehmende wirklich einen Tag ausschließlich der jeweiligen Thematik widmen kann.

Unsere Erfahrungen mit diesem Hackathon sind durchweg positiv. Wir haben einiges gelernt, was wir noch besser machen können. Und wer weiß, vielleicht laden wir mal zu einem öffentlichen Hackathon ein, damit auch Du mal ein bisschen SDX-Luft schuppern kannst und hoffentlich Neues mit nach Hause nimmst.