4 Minuten
Was ist ein Software Engineer?
Wenn man sich ein wenig mit der IT-Branche befasst, gelangt man schnell zu der Erkenntnis, dass es unheimlich viele unterschiedliche Job-Titel gibt. Software Developer, Backend Developer, Frontend Developer, Software Architect, Software Engineer, Data Engineer… dann manchmal auch mit Senior/Junior gepräfixt oder sogar mit einer konkreten Technologie (z. B. Senior Python Backend Developer). Hinter all den Titeln stecken natürlich auch gewissen Erwartungshaltungen.
Seit einigen Jahren verwende ich für mich den Titel Software Engineer. Oft werde ich nach dem Grund dafür gefragt. Daher möchte ich gerne einmal in diesem Artikel erläutern, was für mich dahinter steckt und was eigentlich den Software Engineer ausmacht.
Der Begriff
Der Begriff Software Engineer ist kein offizieller Begriff einer Industrie- oder Handelskammer. Da die IT-Berufe vergleichsweise noch recht jung sind und die Fachgebiete sich rasend schnell weiterentwickeln, fällt es auch schwer Berufstitel zu schaffen, die langfristig ein klares Bild der Anforderungen und Qualifikationen malen.
Grundsätzlich gilt erstmal eine Vorsicht bei der Verwendung des Begriffs Ingenieur, da die dieser nach dem IngG geschützt ist und nur unter bestimmten Bedingungen verwendet werden darf. Aus diesem Grund ist die englische Form des Titels häufig anzutreffen.
Das erste mal benutzt wurde der Titel von Margaret Hamilton, während sie am Apollo Programm arbeitete. Der Titel sollte klar zu Ausdruck bringen, dass die architektonische Leistung beim Entwickeln von Programmen deutlich stärker im Vordergrund steht, als das reine Schreiben von Source Code.
Der Begriff wird auch heute weitesgehend noch so verstanden, dass Menschen, die diese Rolle ausüben, nicht nur reine Software-Entwickler sind (also reine Programmierer), sondern auch architektonische und taktische Entscheidungen im Bezug auf die Produktentwicklung und Technologiewahl treffen.
Die Aufgaben
Die Aufgaben eines Software Engineers sind recht vielfältig und gehen oft über das reine Schreiben von Source Code hinaus. Es gibt im Internet auch einige Webseiten, die eine Art Jobprofil skizzieren und auch die Aufgaben eines Software Engineers auflisten, allerdings trifft, meines Erachtens nach, keine der vorhandenen Definitionen den Nagel auf den Kopf.
Die Hauptaufgabe des Software Engineers würde ich mit dem folgenden Satz definiere:
Die Lösung eines Real-Problems mit Hilfe von betriebswirtschaftlich sinnvollen und ethisch bedenkenlosen technologischen Mitteln.
Was ich damit in den Fokus rücken möchte, ist das Lösen eines Problems und nicht das Programmieren und Implementieren dessen (was aber nicht bedeutet, dass der Software Engineer das nicht im Rahmen seiner Arbeit auch machen kann - meistens ist dies sogar der Fall).
Somit sind die Aufgaben im Einzelnen:
- Verstehen des Real-Problems
- Entwicklung einer Lösung
- Wahl der Technologien
- Design (und/oder Berücksichtigung) der Architektur
- Planung, Erstellung und Verwaltung der Softwaresysteme
- Prozesssteuerung
- Berücksichtigung betriebswirtschaftlicher Faktoren
- Qualitätssicherung
- Kommunikation
Wichtige Skills
Aus den Aufgaben geht hervor, dass eine technische Expertise unerlässlich für den Software Engineer ist. Ebenso unerlässlich ist die stetige Fort- und Weiterbildung in technischen, rechtlichen und prozessrelevanten Themen.
Neben den reinen technischen Skills muss der Software Engineer auch eine gute Abstraktionsfähigkeit besitzen, um das Kernproblem der Domäne zu verstehen und um entsprechend nachhaltige Lösungen entwickeln zu können. Das ist eine besonders wichtige Fähigkeit, die nicht nur Sachverstand benötigt, sondern auch Empathie, Geduld und das Selbstbewusstsein nachzufragen, wenn man etwas nicht verstanden hat. Das Treffen von Annahmen kann zu folgeschweren Fehlern führen.
Damit lassen sich die wichtigesten Skills wie folgt aufzählen:
- Technische Expertise
- Kenntnisse von Technologien und Plattformen
- Verständnis für Produktentwicklung
- Fähigkeit zur Einarbeitung in Fachdomänen
- Kommunikation
Die Abgrenzung
Die Grenze zu den anderen Rollen, wie zum Beispiel Backend Developer oder DevOps Engineer, ist oftmals unscharf, aber da. Das liegt einerseits daran, dass sich die Rollenbilder noch nicht komplett gefestigt haben. Andererseits schreiben Unternehmen zum Teil unterschiedliche Anforderungen und Profile für den gleichen Job-Titel aus. Ein Konsens, was genau nun der Software Engineer in Abgrenzung zu anderen tut, wird noch gefunden.
Generell lässt sich festhalten, dass Software Engineers oftmals vorher eher speziellere Rollen inne hatten, wie zum Beispiel die des Software Entwicklers. Es ist oft zu beobachten, dass Software Entwickler mit der Zeit mehr und mehr Verständnis für die Technologie und Architektur bekommen und diese irgendwann selbst mitgestalten und auswählen. Erst die intensive Auseinandersetzung mit den Problemen der Fachdomäne führt dazu, dass Software Entwickler ihre Technik-Brille ablegen und sich mehr für die “andere” Seite zu interessieren.
Die DevOps Engineers sind nochmal von den Software Engineers ein Stück weit abzugrenzen, da diese viel mehr in der Operation des eigentlich Betriebs zu finden sind. Betrachten wir Software Entwicklung als Weg mit den Stationen Planning, Making und Running, fokusiert sich der Software Engineer maßgeblich auf die ersten beiden Punkte. Der DevOps Engineer hingegen auf die letzten beiden. Beim Making haben sie eine gewisse Schnittmenge. Es ist auch wichtig, dass die Kommunikation zwischen den beiden Fachbereichen eng und rege ist.
Fazit
Selbverständlich erhebe ich hier keinen Anspruch auf Vollständigkeit. Vor allem werden die Schwerpunkte eines Software Engineers sich stark an der Persönlichkeit der Person orientieren. Der Post soll aber eine Orientierungshilfe dafür sein, was von jemandem, der sich Software Engineer bezeichnet, erwartet werden kann. Andersrum kann es auch für Unternehmen nützlich sein, die eine solche Rolle ausschreiben wollen, zu wissen, welche Charakteristika sie besonders beachten sollten.
Meinungen und Kommentare sind sehr willkommen. Entweder direkt per E-Mail oder einfach unten in die Kommentarspalte.