DevStory: Lead Embedded Developer, Rainer Poisel

DevStory: Lead Embedded Developer, Rainer Poisel

tech-stories DevStory

Background

Wie bist du zum Programmieren gekommen?

Mein Vater hat mich an das Thema herangeführt. Ich war immer schon technisch interessiert und wollte wissen, wie die Dinge funktionieren – Sachen zerlegen, wieder zusammenbauen, verändern. So wollte ich auch verstehen, wie ein Computer-Programm gemacht wird.

In welchem Alter hast du damit begonnen?

Ich war damals 10 Jahre alt.

Für welche Programmiersprache konntest du dich zuerst begeistern?

Ich habe mit Basic am Amiga 500 begonnen. Trotz ihres geringen Umfangs erlaubt einem diese simple Sprache erstaunlich schnell coole Dinge zu tun. Gut erinnern kann ich mich noch an die Sprachausgabe mittels “say” Kommando. Später kamen dann C und C++ dazu. Damit kann man im Embedded-Bereich schon einiges anfangen. Diese beide Sprachen beschäftigen mich bis heute.

Dein DevJob

Worum geht es in deiner Rolle als Lead Embedded Developer genau?

Meine Aufgabenbereiche reichen von der Abschätzung der technischen Machbarkeit und des Umsetzungsaufwandes gemeinsam mit unseren Kunden, über die Planung der Umsetzung durch meine Team-Mitglieder bis hin zur Anstrengung von Überlegungen zur Architektur unserer Produkte. Ich nehme mir aber auch gezielt Zeit, um einzelne Features selbst umzusetzen. Mir liegt viel daran, in Schuss zu bleiben und Software am Stand der Technik zu entwickeln. Das Evaluieren von Werkzeugen und Vorgehensweisen zur Effizienzsteigerung im Software-Entwicklungsprozess bereitet mir viel Freude. Auch freut es mich, dass wir als Mitarbeiter in der Firma, bei der ich angestellt bin, freie Hand hinsichtlich der eingesetzten Entwicklungswerkzeuge haben, solange die rechtlichen Vorgaben und die Vorgaben hinsichtlich Code-Qualität eingehalten werden.

Was gefällt dir besonders gut an deinem Job als Embedded Developer?

Die hardware- und systemnahe Programmierung fasziniert mich schon recht lange. Man sieht nicht nur am Bildschirm, dass sich etwas tut. Auch arbeite ich gerne in heterogenen Umfeldern – im Embedded-Bereich kommt mit jeder neuen Hardware etwas Neues, Unbekanntes dazu. Das weckt meine Neugier und man lernt praktisch nie aus. Besonders interessant wird es, wenn man zum Kunden fahren darf und aus erster Hand vor Ort lernt, was aus der entwickelten Software gemacht wird. Setzt sich eine tonnenschwere Maschine in Bewegung, so wird aus der Theorie am Schreibtisch oder Whiteboard sprichwörtlich schnell die “Technik zum Anfassen”.

Welche Herausforderungen gibt es speziell als Lead Embedded Developer?

Als Teamlead sehe ich mich im Spannungsfeld zwischen planerischen Tätigkeiten und dem Überblicken der technischen Details unserer Produkte. Die Organisation der persönlichen Ressourcen ist hier nicht immer ganz einfach, wenn man die passende Balance zwischen den Tätigkeiten in diesen Bereichen halten möchte. Bei der Planung achte ich darauf, dass meine Teammitglieder einer möglichst geringen Zahl an Kontext-Wechseln ausgesetzt sind. Im fachlichen, technischen Bereich werde ich auch oft bei Abstimmungen mit Kunden hinzugezogen, wenn es um komplexe Aufgabenstellungen geht.

Was sind deine bevorzugten Technologien?

Meiner Erfahrung nach spielen momentan die Sprachen C und C++ die bedeutenste Rolle im Bereich der Embedded Software-Entwicklung. Ich kann mir gut vorstellen, dass das auch noch eine Zeit lang so bleibt. Eventuell wird die Sprache Rust in absehbarer Zeit noch an Bedeutung gewinnen. Meine Entwicklungsumgebung gleicht einem Werkzeugkasten bestehend aus einer Menge kleinerer und größerer Werkzeuge, was (einer) der Unix Philosophie(n) entspricht.

Windows oder Mac?

Linux! :-)

Weiterentwicklung

Welche Dev Projekte hast du außerhalb deiner Arbeit?

Persönlich halte ich viel von Open-Source Software. Alleine der Lerneffekt bei der Mitarbeit an Projekten ist enorm. Davon abgesehen lässt sich Open-Source-Software gut "zerlegen", um sie besser verstehen oder verändern zu können. Im Moment entwickle ich gerade meine Haussteuerung auf Basis von Open-Source Komponenten. Die Ergebnisse veröffentliche ich laufend auf GitHub. Meine Freizeit verbringe ich auch gerne in meiner Werkstatt. Dort repariere ich diverse Gerätschaften oder tüftle an Lösungen für technische Problemstellungen des Alltags.

Wie hältst du dich für deinen Job am Laufenden?

Ich lese gerne Bücher und habe gute Erfahrung mit “Klassikern” gemacht. Dazu zählt für mich, um einen kleinen Auszug zu geben, z. B. das Buch “Object Oriented Analysis and Design with Applications” von Grady Booch oder das Buch über Design Patterns der “Gang of Four”. Ab und zu höre ich mir auch Podcasts an. Im Bereich der Software-Entwicklung gefallen mir besonders der cppcast oder embedded.fm. Mittlerweile werden auch die Talks diverser Konferenzen auf YouTube veröffentlicht. Namentlich seien hier die cppcon, sowie die Meeting Cpp oder die Meeting Embedded Konferenzen erwähnt.

Wo siehst du dich in der Zukunft?

Eine reine Management-Rolle kommt für mich derzeit nicht in Frage. Dafür bin ich der Technik zu sehr verschrieben. Im Moment bin ich glücklich mit meiner Rolle als Team Lead.

Tipps für Anfänger

Wie beginnt man Programmieren und womit sollte man beginnen?

Aus meiner Zeit als FH-Lektor habe ich mitgenommen, dass es Einsteigern wichtig ist, möglichst rasch Erfolge zu sehen. Dabei unterstützen einen Plattformen wie z.B. Arduino oder Processing, die viel des “Drumherums” abnehmen und mit zahlreichen Beispielen geliefert werden. Im Embedded-Bereich bietet es sich an, sich ein Arduino Starter-Kit zuzulegen. Dieses ist kostengünstig, enthält eine Menge Sensoren und Aktoren, sowie eine brauchbare Mikrocontroller-Plattform. Die offizielle Programmier-Oberfläche ist gratis und es gibt eine Riesen-Community, die einem hilfsbereit unter die Arme greift, wenn man mal ansteht. Zusätzlich würde ich auch in ein Buch mit guten Rezessionen zum Thema Arduino investieren, damit man einen roten Faden durch die Materie vorgegeben hat und sich nicht alles selbst zusammensuchen muss. Hat man die Arduino-Umgebung mal einigermaßen im Griff, kann man sich an umfangreichere Umgebungen, wie z. B. PlatformIO, wagen und von dort aus auch Software für komplexere Systeme entwickeln.

Welche Skills sollte man als Embedded Developer mitbringen?

Technisches Grundverständnis schadet bestimmt nicht. Konkret heißt das für mich, dass man in etwa den groben Ressourcenbedarf – also CPU, Speicher – eines Programmteils abschätzen kann. Vor allem die Speicherknappheit ist im Embedded-Bereich ein ubiquitäres Problem. Als Teamlead hilft es mir auch, mir immer wieder mal Zeit zu nehmen, um neugierig zu sein und neue Technologien auszuprobieren. Der Blick über den Tellerrand bietet die Chance, am Ball zu bleiben und gleichzeitig einen Überblick über den aktuellen Stand der Technik zu bekommen. Bei der Arbeit als Teamlead spielt meiner Erfahrung nach auch die menschliche Komponente eine große Rolle. Mir ist wichtig, dass sich keiner mit seinen Aufgabenstellungen alleinegelassen fühlt. Gleichzeitig möchte ich aber auch durch ein geeignetes Arbeitsumfeld die Eigenverantwortung meiner Team-Mitglieder fördern und ihnen die Gelegenheit bieten, sich selbst zu organisieren.

Welche Ausbildung ist deiner Meinung nach sinnvoll um Embedded Developer zu werden?

Ich habe nach der HTL für Automatisierungstechnik an einer FH Telekommunikation studiert. Keine der beiden Ausbildungen hatte Embedded-Softwareentwicklung direkt als Schwerpunkt. Die HTL hat allerdings wesentlich mein technischnes Grundverständnis gefördert. An der FH gab's dann ein tolles Umfeld, um Dinge auszuprobieren und viele berufliche und private Kontakte zu knüpfen. Den Einstieg in die Embedded-Softwareentwicklung hat mir dann ein Berufspraktikum im Rahmen meines FH-Studiums geboten. Im Nachhinein gesehen könnte ich mir auch vorstellen, dass man im Uni-Studium “Technische Informatik” gut die Grundlagen der Embedded-Softwareentwicklung lernen kann.

Rainer Poisel

Lead Embedded Developer

github linkedin twitter website

Interview im M01 2020