Software Developer – vielen Menschen sind sie aus Filmen bekannt als einsame Gestalten in schwarzen Hoodies, die in dunklen Kämmerchen vor grell beleuchteten Monitoren hocken. Doch entspricht dieses Bild wirklich der Wahrheit?
Dem wollte ich – Lisabeth, derzeit noch Mathematikstudentin – auf die Spur gehen und so entschied ich mich für ein Praktikum im Bereich Softwareentwicklung. Mein Ziel war es zu verstehen, was Softwareentwickler:innen tatsächlich täglich tun und wie deren Umfeld außerhalb von Schulen und Universitäten aufgebaut ist. Die Chance dazu bekam ich der Firma isento GmbH in Nürnberg, bei der ich ein mehrwöchiges Praktikum absolvieren und dabei reale Einblick in die Arbeitswelt von Entwickler:innen erhalten konnte. Wie mein Praktikum ablief, was ich gelernt habe und inwiefern ich meinem Ziel nähergekommen bin, davon möchte ich in diesem Beitrag erzählen!
Der Alltag: Eat – Sleep – Code – Repeat?
Anders als das gängige Klischee, gehören das Kaffee kochen, Büroordnung schaffen und das bloße Zuschauen beim Programmieren nicht zu den Aufgaben eines Praktikums bei isento. Ich hatte das Glück, individuell auf meine bisherigen Erfahrungen und Kenntnisse zugeschnittene technische Aufgaben zu bekommen, die zugleich das Projekt pib (printable intelligent bot) unterstützten.
Passend zum Firmennamen isento (portugiesisch für „frei“), können sich die Mitarbeitenden der isento GmbH ihren Arbeitsalltag relativ frei gestalten. Dank des Stundenkontomodells kann die Arbeitszeit so angepasst werden, dass sie zum Beispiel mit familiären Verpflichtungen oder einem Frühaufsteher-Schlafrhythmus in Einklang steht. Diese Flexibilität sorgt für ein hohes Maß an Gestaltungsfreiheit und ermöglicht es allen, in ihrer produktivsten Zeit zu arbeiten.
Natürlich gibt es auch einige feste Termine, die vor Ort im Büro stattfinden oder an denen man remote teilnehmen kann. Jeden Vormittag findet immer das sogenannte „Daily“ statt, bei dem wir uns darüber austauschen, was am vorherigen Tag erledigt wurde, welche Pläne für den Tag anstehen und wo mögliche Schwierigkeiten auftreten könnten. Durch diese regelmäßigen Meetings ist das gesamte Team stets über den Fortschritt der Arbeit informiert und kann sich gegenseitig unterstützen. Das Kanban-Board, welches mit bunten Zetteln an der Wand visualisiert ist, ermöglicht es uns, die Entwicklung der Arbeitsblöcke zu beobachten und zu priorisieren. Mittagspausen werden meist gemeinsam in der großen Küche gemacht, sodass man sich innerhalb des Teams oder auch mit anderen Kolleg:innen austauschen und besser kennenlernen kann. Zum Nachtisch stehen eine volle Eisbox und verschiedene Sorten Obst zur Verfügung, aus denen man sich frei bedienen kann.
Im Laufe des Tages können auch Meetings für Planung, Organisation oder technischen Austausch abgehalten werden. Diese Termine ermöglichen dem Team Wissen untereinander in strukturierter Art auszutauschen oder sich das Knowhow der Kolleg:innen aus anderen Teams anzueignen. Langeweile kommt hierbei garantiert nicht auf, da es immer Dinge zum Lernen, Aufgaben zu erledigen und Bereiche zum Mitwirken gibt.
Man wächst mit seinen Aufgaben:
Mein Einstiegsprojekt bestand darin, einen Sprachassistenten des Roboters in Python zu erweitern, um parallele Prozesse zu ermöglichen. Ziel war es, das Programm sowohl durch einen Tastendruck als auch durch ein Sprachsignal (z.B. „Exit“) ausschalten zu können.
Im nächsten Schritt sollte das Python-Programm in eine ROS-Node umgewandelt und mit der Webplattform verbunden werden. Beim Lösen dieser Aufgabe konnte ich wertvolle Erfahrungen im Umgang mit dem Robot Operating System (ROS) sammeln. Insbesondere habe ich gelernt, wie Nodes, Topics, Interfaces, Services und Messages in ROS funktionieren und wie man diese effektiv umsetzt. Der Ablauf im Hintergrund sieht so aus: Wenn man von der Webplattform aus einen An- und Ausknopf betätigt, sendet dieser über ROSlibjs, ROSbridge-WebSockets und schließlich über das Topic ein Signal an alle Nodes, die davon ein Subscriber sind. Diese Signale werden entweder sofort verarbeitet oder gehen verloren. Durch eine umfassende Umstrukturierung der Signalverarbeitung und der bestehenden Funktionen wurde die gewünschte Interaktion mit dem Sprachassistenten deutlich verbessert.
Eine weitere Aufgabe bestand darin, Setup-Skripte für ROS-Workspaces zu schreiben, um vorhandene Komponenten und Nodes sinnvoll zu strukturieren. Hierbei wurde der Sprachassistent, an dem ich bisher gearbeitet hatte, in die vorhandene Struktur von Packages eingebunden. Durch die Verwendung dieser Skripte werden die Nodes beim Anschalten des Systems automatisch gestartet und die Kamera, die Motoren sowie der Sprachassistent sind bereit, von der Webplattform aus aufgerufen und betätigt zu werden. Durch die einheitliche Strukturierung der vorhandenen Komponenten und Nodes mittels der Setup-Skripte wird die Weiterentwicklung des Projekts erleichtert. Die Nutzer müssen nur ein Setup-Skript auf ihrem pib ausführen und können danach direkt loslegen ohne weitere Konfigurationen vornehmen zu müssen.
Team: Together Everyone Achieves More
Nicht nur die Interaktion mit pib, dem humanoiden Roboter, war ein Highlight meines Praktikums, sondern auch die Zusammenarbeit in meinem Team hat mich begeistert. Neue Kolleg:innen starten in der Regel in einem isento-inhouse-Team, um die Firma, ihre Kultur und Mitarbeiter:innen kennenzulernen, erste Projekterfahrungen zu sammeln und erforderlichen Schulungen zu absolvieren. So habe ich mit meinem Team das „Gehirn von pib“ weiterentwickelt. Dabei wird sowohl an der Frontendentwicklung mit der Erstellung einer interaktiven Weboberfläche als auch an der Backendentwicklung mit der Konfiguration von ROS-Strukturen gearbeitet. Wir beschäftigen uns auch mit der Konzeption und Erstellung von APIs zur sinnvollen Speicherung und Verwendung von Daten wie Motorzuständen und zur Erweiterung von pib um KI-Fähigkeiten.
Die kleine Teamgröße von 6 Personen bietet die Möglichkeit, schnell zum Experten für seinen Bereich zu werden und einen wertvollen Beitrag zum Gesamtprojekt zu leisten. Zum Beispiel konnte ich selbst als Praktikantin meine Kolleg:innen durch mein Vorwissen in Python und mein im Praktikum erworbenes Verständnis im Umgang mit ROS unterstützen und zum Teamerfolg beitragen.
Besonders gut gefallen hat mir auch Abwechslung der Aufgabenformate. Mal arbeitet man allein, mal in der Pair-Programmierung und oft gibt es die Gelegenheit, seine Erkenntnisse oder Fortschritte im Team vorzustellen und zu diskutieren. Während meines Praktikums wurden Themen wie Conventional Commits, Semantic Versioning, API-Entwicklungen und ROS-Strukturen diskutiert. Auch die Unterstützung und Erfahrung der Kolleg:innen anderer Teams war eine große Hilfe beim Lernen, Fortschritte machen und um Team-interne Lücken zu füllen.
Ein absolutes Highlight im Team ist außerdem der herausragende Sinn für Humor, der stets präsent ist. Wir finden immer wieder Gründe zum Lachen, machen gute Witze und genießen es, auch aus banalen Dingen etwas Lustiges zu ziehen. Diese positive Stimmung wirkt sich selbstverständlich auch auf unsere Arbeitsweise aus, denn wir lösen Probleme mit Leichtigkeit und gehen mit Fehlern souverän um.
Was mir sehr positiv in Erinnerung bleibt, ist die Offenheit und Hilfsbereitschaft meiner Kolleg:innen. Meine tausend Fragen zu API-Strukturen, Git-Verwendung und vielem mehr wurden immer geduldig und ausführlich beantwortet. Vor allem die ausführlichen Diskussionen an den Whiteboards, wie man ROS-Workspaces richtig organisiert oder Node-Strukturen am besten aufbaut, haben mir sehr beim Verständnis geholfen. Die flache Hierarchie der Firma sorgte für ein entspanntes und gemütliches Arbeitsumfeld, in dem sich jede:r auf Augenhöhe begegnen kann, um gemeinsam Probleme zu lösen.
Über den Tellerrand schauen:
Neben meinen Aufgaben in der Softwareentwicklung durfte ich während meines Praktikums an einer isento-Schnitzeljagd teilnehmen. Dadurch hatte ich die großartige Möglichkeit mit Mitarbeiter:innen aus allen Bereichen der Firma zu sprechen – von Requirements Engineering über Software Testing bis hin zu Human Resources und den Entwickler:innen aus anderen Teams. Ich konnte einen Einblick in ihre unterschiedlichen Tätigkeiten bekommen und all die Fragen stellen, die man als Praktikant:in so hat. Jeder Bereich, der für die Umsetzung eines Software-Projekts wichtig ist, wird bei isento abgedeckt. Was mein Praktikum hier so spannend macht, ist die Tatsache, dass ich nicht nur die „üblichen“ technischen Bereiche besichtigen durfte, sondern durch intensive Gespräche mit erfahrenen Kolleg:innen auch die gesamte Metaebene verstehen konnte. Dadurch habe ich Verständnis dafür entwickelt, wie die Welt außerhalb der Uni im Allgemeinen funktioniert.
Last but not least
Mein Praktikum bei isento GmbH hat mir die Möglichkeit gegeben, Teil von etwas Größerem zu sein. Besonders der Launch der stabilen Version von pib hat mir gezeigt, wie cool es ist, wenn viele Menschen zusammen an einem Projekt arbeiten und dann das Ergebnis präsentieren zu können. Ich habe zahlreiche Einblicke in verschiedene Bereiche bekommen, die mir gezeigt haben, dass es egal ist, wo man anfängt, solange man sich immer weiterentwickelt und nie aufhört, „dumme“ Fragen zu stellen. Als Entwickler:in zu arbeiten, bedeutet viel mehr als in einem dunklen Kämmerchen zu sitzen und still vor sich hin zu programmieren. Es geht um Freude, Kommunikation, Problemlösung und vor allem Spaß am Team und der Arbeit. Das Praktikum bei isento GmbH war eine unvergessliche und wertvolle Erfahrung, die ich absolut empfehlen kann, wenn man sich für die Welt der Software-Entwicklung interessiert.