Herzlichen Glückwunsch zu 500€ Förderung!
Patrick hat mit seiner Webanwendung die Code Competition "Der Auslieferungsfahrer" gewonnen. Herzlichen Glückwunsch! Er erhält nun 500€ Förderung und hat die Möglichkeit genutzt, sich in neue Technologien einzuarbeiten. Hut ab vor der tollen Lösung!
IT-Talents: Hallo Patrick, herzlichen Glückwunsch zu Deinem ersten Platz bei der Code Competition „Der Auslieferungsfahrer“! Erzähl den anderen IT-Talenten doch kurz etwas über Dich.
Patrick: Mein Name ist Patrick, ich bin 21 Jahre alt und studiere momentan Wirtschaftsinformatik im 6. Semester an der TU München. Nebenher arbeite ich in einer Firma für technische Kommunikation als Werkstudent in der Anwendungsprogrammierung. Mit dem Programmieren, vor allem in Java, habe ich so etwa ab der 10. Jahrgangsstufe angefangen, weil Java ab diesem Zeitpunkt auch Thema im Informatikunterricht war. Das war aber nur der Startschuss – seitdem habe ich natürlich stetig weiter gelernt und mich letztlich sogar für ein interdisziplinäres Informatikstudium entschieden, weil mich auch wirtschaftliche Vorgänge interessieren.
IT-Talents: Was hat Dich motiviert, an der Competition teilzunehmen und wie bist Du auf den Wettbewerb aufmerksam geworden?
Patrick: 2016 bin ich zum ersten Mal auf IT-Talents und die Code Competitions aufmerksam geworden, als ich mir die Competition „Kampf gegen Mühlen“ auf Facebook vorgeschlagen wurde. Seitdem folge ich IT-Talents und den Themen der Competitions. Da das TSP ein Problem ist, mit dem ich mich bereits beschäftigt habe, weil es ein sehr faszinierendes und vor allem auch sehr grundlegendes Problem darstellt, habe ich die Gelegenheit natürlich gleich beim Schopfe gepackt.
IT-Talents: Wie bist Du an die Lösung der Aufgabenstellung herangegangen?
Patrick: Zunächst habe ich mich erst einmal in den Wikipedia-Artikel eingelesen und mir überlegt, wie man das TSP am schnellsten noch exakt lösen kann. Ich habe also mit dem trivialen Algorithmus, der einfach alle Routen ausprobiert, begonnen, diesen dann per Branch-and-Bound optimiert, als erste obere Schranke das Ergebnis einer Nearest-Neighbor-Heuristik verwendet und den Prozess schließlich noch per Multithreading beschleunigt. Als die Berechnung dann nur noch 0,3 (anstelle von anfangs 10) Sekunden dauerte, habe ich dann aufgehört, weil mein Programm dann schon in der Lage war, die Lösung für die geforderte maximale Eingabegröße in guter Zeit zu liefern. Da die Aufgabenstellung nicht mit der kürzesten Strecke, sondern mit dem besten Stromverbrauch eines LKW arbeiten sollte, habe ich zusätzlich noch die Umrechnung der Streckenlänge in kWh inkl. Einsparung und Mehrverbrauch bei Gefälle/Steigung implementiert, was aber an sich der am wenigsten schwierige Teile war.
IT-Talents: Du hast Dich für eine Lösung der Aufgabenstellung mit Hilfe von Java und Spring Boot entschieden. Zudem kommen bei Deiner Lösung JavaScript und Frameworks wie jQuery zum Einsatz. Wieso hast Du Dich für diesen Technologie-Stack entschieden?
Patrick: Meine absolute Lieblingsprogrammiersprache war und ist immer noch Java. Ich wollte mich aber gegenüber früheren Projekten weiterentwickeln und habe mich daher auch mal an einer Weboberfläche anstelle einer Desktopapplikation versucht. Dabei war mir wichtig, dass die Berechnung auf einem Server durchgeführt wird und die Anzeige auf einem Client erfolgt. Daher brauchte ich entsprechende Werkzeuge, die dies unterstützen. Spring Boot bot mir eine einfache Möglichkeit, einen Websocket-Endpoint und gleichzeitig die statischen HTML, CSS- und JS-Dateien per HTTP bereitzustellen. Websockets habe ich anstelle einer REST API verwendet, um einfacher Statusrückmeldungen an die GUI senden zu können. Mittlerweile habe ich mich auch sehr mit der Dependency Injection von Spring angefreundet, auch wenn ich sie in diesem Projekt nur wenig genutzt habe. Da ich clientseitig für die immer gleiche und eher einfache Oberfläche kein ganzes Framework heranziehen wollte, habe ich mich für pures JavaScript inkl. Unterstützung durch die jQuery-Bibliothek entschieden.
IT-Talents: Welche Probleme sind bei der Entwicklung der Software aufgekommen? Wie lange hat die Entwicklung gedauert?
Patrick: Ich hatte ab und zu ein paar kleinere Probleme mit meinem Algorithmus, da in einigen Entwicklungsstadien nicht alle Branches durchsucht wurden, die hätten durchsucht werden müssen, was letztlich auf einen Fehler bei meiner Multithreadingimplementierung zurückzuführen war. Ansonsten war nur die Kontingentbeschränkung der Google API etwas nervig, sodass ich für die Entwicklung ca. 5 API-Projekte anlegen musste, um genügend Kontingente für meine Tests zur Verfügung zu haben. Etwas gedauert hat auch die Entwicklung der Weboberfläche, da dies für mich noch recht neu war. Insgesamt denke ich, dass ich in Entwicklung und Dokumentation etwa 8 PT investiert habe.
IT-Talents: Und was hast Du durch die Entwicklung gelernt?
Patrick: Am meisten habe ich über JavaScript und einfache Weboberflächen gelernt. Das war ein guter Startschuss, und seitdem versuche ich mich hier immer weiterzubilden. Ein weiterer wichtiger Punkt ist das Verstehen des Branch-and-Bound-Prinzips, da dieses auch auf viele weitere (hyperexponentielle) Probleme übertragen werden kann, bei denen es wichtig ist, den Lösungsraum für die Optimallösung so klein wie möglich zu halten.
IT-Talents: Was würdest Du Dir thematisch gerne einmal als Code Competition wünschen?
Patrick: Ich finde solche Themen wie dieses, bei denen man sich auch in sehr in Theorie einarbeiten muss, sehr interessant. Wenn das Thema interessant genug ist (subjektiv), investiere ich gerne viel Zeit in das Verstehen neuer Themen. Daher fände ich es super, wenn auch in Zukunft die akademischen Probleme der Informatik weiter Teil der Competitions bleiben!
IT-Talents: Zu guter Letzt: Wie findest Du die IT-Talents.de Plattform, welche Verbesserungsmöglichkeiten siehst Du?
Patrick: Ich finde, IT-Talents ist eine tolle Plattform für Kontakte zwischen jungen IT‘lern und potentiellen Arbeitgebern. Verbessern könnte man die Transparenz des Korrekturfortschritts bei den Competitions – es ist für Teilnehmer immer unklar, wann man mit dem Ergebnis rechnen kann. Vielleicht kann man irgendwo einen Fortschrittsbalken einblenden? ;)
IT-Talents: Eine gute Idee! Vielen Dank für Deine Teilnahme, das Interview und viel Spaß mit Deinem Gewinn ;)