Vor einigen Wochen haben wir im Rahmen der Agritechnica 2023 an einer Challenge, auch Hackaton genannt, teilgenommen. Bei dieser Challenge ging es darum, in nur 10 Tagen ein Proof of Concept zu entwickeln, welches Probleme der parallelen Routenfindung auf Feldern im landwirtschaftlichen Bereich löst. (Offizieller Titel: Multi route optimization for autonomous infield machine collaboration).
Hierfür wurde ein kleines Team gebildet, welches in der Lage war, Optimierungsprobleme zu lösen, grafisch darzustellen und nah am landwirtschaftlichen Szenario zu entwickeln. Aufgrund der kleinen Teamgröße sind Entscheidungen und Problemlösungen viel effizienter als oft in großen Abteilungen, die „Power of small teams“ ist in der Tat mächtig.
Das Tolle an solchen Hackathons ist, dass man an den Technologien der Zukunft arbeiten und sie so vorantreiben kann. Wer weiß, vielleicht ist die Lösung, die man erarbeitet hat, in Zukunft der neue Standard?
Natürlich sind die Challenges nicht einfach, sonst wären sie längst gelöst. Hinzu kommt der enorme Zeitdruck, aber das kennt vielleicht der eine oder andere, wenn die Deadline näher rückt. Da muss man sich schon ein bisschen auf das Wesentliche konzentrieren, um voranzukommen. Wir Softwareentwickler:innen neigen aber oft zum so genannten “Overengineering” – also viel mehr Zeit in Kleinigkeiten zu stecken als nötig oder viel zu komplexe Lösungen für einfache Probleme zu entwickeln. Das ist neben Rückenschmerzen und Kurzsichtigkeit eine weitere Berufskrankheit der Softwareentwickler:innen. Wobei man das nicht unbedingt negativ sehen muss, oft ist es einfach die Neugierde Dinge auszuprobieren, zu entwickeln und zu lernen. Man will verstehen, wie das Ganze unter der Haube funktioniert. Dazu kommt meist noch eine kleine Portion Eitelkeit und deshalb macht man es am besten selbst.
Da wir für die Challenge von Grund auf neu entwickeln mussten, bestand für uns natürlich ein enormes Risiko, viel mehr lösen zu wollen als notwendig. Man versucht von Anfang an möglichst alle Risiken zu berücksichtigen, Strukturen und Prozesse so weit wie möglich zu definieren, um dann direkt loslegen und alles durchspielen zu können. Zugegeben, eine gute Planung ist enorm wichtig und darf auf keinen Fall vernachlässigt werden!
Wir haben jedoch nichts davon gemacht, da wir uns am Anfang nicht wirklich sicher waren, in welche Richtung die Entwicklung überhaupt gehen sollte. Deshalb haben wir uns erst einmal hingesetzt und ähnlich wie beim Design Thinking überlegt, was das Problem und mögliche Lösungen sein könnten, was der Aufgabensteller überhaupt will. Welche Lösungen gibt es bereits? Was ist noch ein Konzept und was ist bereits umgesetzt? Die Methoden des Design Thinking helfen hier enorm, sich auf die eigentlichen Problemstellungen zu konzentrieren und Lösungen zu erarbeiten, die auch den Kunden adressieren.
Wir haben uns während der Entwicklung immer wieder zusammengesetzt und überlegt, wie es weitergehen soll. Dabei haben wir uns immer wieder an den folgenden Entwicklungsideologien orientiert:
1. Erfindet das Rad nicht neu!
Dies ist einer der größten Faktoren in der Softwareentwicklung, bei dem viel Zeit verloren gehen kann. Egal ob man, wie in unserem Fall, von Grund auf neu anfängt, oder ob man Bestehendes anpassen muss, irgendwo gibt es schon Lösungen oder Ansätze. Auch in unserem Fall konnten wir auf bereits erprobte Ansätze der Graphentheorie zurückgreifen. Es hat sich also doch gelohnt, während des Studiums aufgepasst zu haben!
2. KISS as much as you can
Keep it stupid simple. That’s all. Baut keine supercoolen Protokollierungsmechanismen ein (das sehe ich immer wieder, hm?) und versucht nicht, die Software als eierlegende Wollmilchsau zu konzipieren. Die einfachste Lösung ist die beste.
3. Bleibt agil!
Da gerade in der IT immer wieder unvorhergesehene Dinge passieren, oft auch trotz ausgiebiger Tests, muss man flexibel sein. Sowohl bei der Wahl der Technologien als auch bei der Umsetzung im Code. Wenn man einen zu detaillierten Plan hat, muss man agil genug bleiben, um auf Änderungen reagieren zu können.
Erzähle ich hier jemanden etwas Neues? Vermutlich nicht. Hält man sich oftmals dennoch nicht daran? Vermutlich.
Vieles davon macht man natürlich instinktiv. Wenn die Zeit knapp wird umso mehr und es ist im Grunde nichts Neues. Auch wenn die Zeit von Anfang an knapp war, haben uns diese und andere Leitsätze sehr geholfen, den Fokus zu behalten und das Ziel, nämlich das Ende der Challenge mit Präsentation und Demo, ohne größere Probleme zu erreichen. Die Präsentation selbst auf der Agritechnica, der weltgrößten Messe für Landwirtschaft, verlief reibungslos und wir konnten durchaus sehr überzeugen. Neben dem 2. Platz hat es uns viel Aufmerksamkeit und neue Kontakte gebracht! Networking ist das A und O auf solchen Messen und wenn die Leute dort auf einem zukommen, weil sie bei der Präsentation zugesehen haben, macht es das natürlich einfacher und es macht noch mehr Spaß!
Die ganze Challenge an sich war natürlich auch sehr spannend und wir haben viel Neues gelernt. Man darf aber nicht vergessen, dass es zwar viele solcher Grundsätze wie „bitte nicht overengineeren“ gibt, man aber trotzdem viel ausprobieren kann und muss. Deshalb sollte man immer die Chance nutzen, wenn man die Möglichkeit hat, an einem Hackathon teilzunehmen. An dieser Stelle noch einmal herzlichen Glückwunsch und vielen Dank an das gesamte Team, wir haben einen tollen Job gemacht!
Erfahre mehr über die Zusammenarbeit im Agrarsektor mit unserem Kunden AGCO.