Ich bin Softwareentwicklerin. Das bedeutet zunächst mal, dass ich Software entwickle. Im einfachsten Fall war vorher nichts da und nachher gibt es ein Programm, eine Applikation, eine App, ein Gerät oder was auch immer, das irgendwo läuft und mit dem man irgendwas mehr oder weniger Sinnvolles oder Unterhaltsames tun kann.
Die Realität ist selbstverständlich nicht so einfach. Denn erstens ist vorher meistens doch schon irgendwas da, zweitens ist das, was man macht, selten irgendwann fertig, drittens besteht das, was man da macht, damit am Ende irgendwas dabei rauskommt, aus einer Vielzahl von einzelnen Tätigkeiten, und viertens macht man auch noch anderen Kram, entweder weil es dazugehört, oder weil sich sonst niemand findet.
Aber ich fange mal am Anfang an: Wie wird man überhaupt Softwareentwickler? Da gibt es mehrere Wege. Man kann das studieren, man kann eine Ausbildung machen, man kann eine Weiterbildung machen oder man bringt sich das selber bei. Ich habe tatsächlich in meinen knapp zehn Jahren Berufserfahrung alle diese Möglichkeiten gesehen und meiner Erfahrung nach gibt es ungefähr keine Korrelation zwischen Bildungsweg und praktischem Können und Wissen.
Mein Ausbildungsberuf nennt sich ganz offiziell “Fachinformatiker Anwendungsentwicklung”. Es gibt auch einen “Fachinformatiker Systemintegration”, das sind die Leute, die nachher eher Netzwerke einrichten und betreuen, die System-Admins in den Firmen, mit denen man sich besser gut stellt, wenn man irgendwann vielleicht doch mal einen Zugang zu irgendwas braucht.
Als “Fachinformatiker Anwendungsentwicklung” ist man dann später diejenige, die tatsächlich Anwendungen entwickelt, wie der Name schon sagt, also irgendwas tut, wo nachher irgendeine Art von Software rausplumpst.
Was macht jetzt aber so üblicherweise als Softwareentwickler? Ich muss das regelmäßig meinen Eltern erklären, damit die das anderen Leuten erklären können. Irgendwann hatte ich meinen Arbeitsrechner dabei, da konnte ich endlich mal zeigen, wovon ich überhaupt rede, wenn ich von Dental-Software spreche, wie so ein 3D-Modell aussieht und welche Teile der Software auf meine Kappe gehen. Das war sehr hilfreich, denn, wenn ich davon erzähle, klingt vieles vermutlich sehr abstrakt, was letztlich daran liegt, dass es das irgendwie auch ist.
Die Klischeevorstellung vom Softwareentwickler, einem “Programmierer” ist wohl die, dass wir jeden Tag in dunklen Räumen mit viereckigen Augen am Rechner setzen und Zeile für Zeile Code einhacken.
Um damit aufzuräumen, sei folgendes gesagt.
1. Softwareentwickler mögen Sonne. Softwareentwickler sind auch sehr heimelig, dunkle Räume mögen sie gar nicht, lieber schön hell und groß und mit einem großen Schreibtisch, auf dem sie ihren gesammelten Müll unterbringen können. Auch Pflanzen sind beliebt und begehrt und werden gepflegt und benamst. Der beste Weg, einen Softwareentwickler zu Überstunden zu motivieren, ist ihm einen hübschen Arbeitsplatz zu geben und irgendwo in der Nähe eine Kaffeemaschine und einen Wasserspender aufzustellen. (Das mit dem Kaffee ist übrigens ein Klischee, das mit der Realität übereinstimmt.) Anderweitige Kaltgetränke, Obst und/oder Schokolade sind weitere Motivatoren.
2. Softwareentwickler sitzen viel am Rechner, ja. Sie diskutieren aber auch gerne. Sie malen an Whiteboards oder laufen beim Denken auf und ab. Sie stehen gerne in Teeküchen, sofern dies die Größe der Teeküche erlaubt. Sie sitzen in Meetings und schreiben Aufgaben auf Kärtchen und hängen die an die Wand. Sie fahren auf Konferenzen und monieren langweilige Powerpoint-Präsentationen.
3. Wenn sie dann am Rechner sitzen, was (da stimmt das Klischee dann wieder) doch zu einem nicht unerheblichen Anteil der Arbeitszeit der Fall ist, dann schreiben sie nicht zwingend Code. Softwareentwickler suchen nach Lösungen für Probleme im Internet, sie testen das, was sie da gerade programmiert haben, sie finden Bugs und versuchen, diese zu fixen, schreiben Dokumentationen, benutzen eine Vielzahl von Tools, die bei irgendwas helfen sollen, lesen Anforderungen, schreiben Mails, pflegen das interne Wiki oder ihr Issue- und Bug-Tracking-System (soll heißen, irgendein System, in dem all die Dinge stehen, die noch erledigt werden müssen) und so weiter.
Es gibt eigentlich keinen typischen Arbeitstag, jedenfalls nicht im Kleinen. Richtig ist, dass ein typischer Softwareentwicklertag so aussieht, dass man irgendwann ins Büro kommt, irgendwann Essen geht und irgendwann Feierabend macht, üblicherweise in der Reihenfolge. Was dazwischen passiert, hängt davon ab, was man halt gerade so zu tun hat, wie der Arbeitsprozess organisiert ist und was überraschenderweise so dazwischen kommt.
Wenn man Glück hat, kann man tatsächlich ungestört einen oder gar mehrere Tage an einem neuen Feature arbeiten. Also guckt man sich an, was gefordert ist, diskutiert das noch mal mit dem Chef, dem Produktmanager oder den Kollegen, fängt dann an, ein bisschen Code zu schreiben, guckt sich an, ob der Code, den man geschrieben hat, tatsächlich so funktioniert, wie man sich das gedacht hat und ändert dann entweder das, was nicht funktioniert oder programmiert weiter. Zwischendurch isst man Schokolade oder Kuchen.
Das ist, wenn man Glück hat. Wenn man nicht so viel Glück hat, dann wird man irgendwann unterbrochen, weil auf einmal ein Kunde ein Problem hat, etwas anderes bis morgen gemacht sein muss, sich die Anforderungen geändert haben, oder irgendwas anderes ist.
Zusätzlich besteht die Arbeit als Softwareentwickler eben nicht nur aus der Neuentwicklung von coolen Funktionalitäten, sondern auch daraus, bestehende Funktionalitäten zu ändern oder – noch schlimmer – Bugs zu fixen.
Bugs fixen ist deshalb oft doof, weil es sehr unbefriedigend ist. Üblicherweise besteht ein Bugfix daraus, dass man erst sehr lange sucht, bis man die Stelle gefunden hat, wo das Problem überhaupt ist, dann einige Zeit damit verbringt, den Code umzuschreiben, ohne dass das Problem behoben ist, dabei eine gefühlte Million Mal die Software neu startet und testet, ob es jetzt endlich geklappt hat und dann nach einem halben Tag eine Zeile löscht, ändert oder hinzufügt und es dann endlich funktioniert.
Das Endergebnis ist dann immer sehr enttäuschend: Ein halber Tag rum und quasi nichts geändert. Ich bete dann immer das Mantra runter, dass die eigentliche Arbeit beim Bugfixen eben das Aufspüren des bösen Codes ist, und eben nicht die Menge an geändertem Code. Dennoch kommt man sich höchst unproduktiv und dezent doof vor, wenn man nach stundenlanger Arbeit nur eine Datei ins Produktivsystem hochlädt (Entwicklersprech: auf den Mainbranch eincheckt), bei der sich kaum etwas geändert hat. Aber immerhin: Der Glühbirnenmoment, wenn man endlich schnallt, was kaputt ist und es dann tatsächlich funktioniert, ist auch nicht zu verachten und löst dann große Freude und kleine Stuhltanzeinlagen aus.
Das Schöne am Entwicklerberuf ist, dass er unglaublich vielfältig ist. Zum einen gibt es eine gewisse Branchenflexiblität. Meine Ausbildung habe ich bei einer Versicherung gemacht, den ersten Job hatte ich bei einer Firma, die sich auf elektronische Transaktionen in der Pharmabranche spezialisiert hatte, es ging also darum, dass Apotheken und Krankenhäuser über unser System direkt beim Hersteller bestellen konnten. Die nächste Firma entwickelte Software für Personal- und Talentmanagement und jetzt bin ich in der Dentalbranche, auf meinem Schreibtisch liegen Zahnmodelle aus Gips und Plastik und ich bin deutlich firmer, was Dentalsprache angeht.
Auch das, was man als Softwareentwickler Tag für Tag tut, kann durchaus abwechslungsreich sein. Bei der letzten Firma arbeiteten wir mit Entwicklern aus England und Offshore-Teams aus Vietnam zusammen. Um die Codequalität zu erhalten, hatten wir in unserem Team stets jemanden, der zur Beantwortung von Fragen zuständig war. Auf einem ausrangierten Laptop lief Skype und dieser Laptop wurde dann im Tagesrhythmus weitergereicht. An dieser Stelle kann man auch gleich mit dem Klischee aufräumen, dass Softwareentwickler unkommunikative Einzelgänger wären. Die meisten Softwareentwickler, jedenfalls die, die ich kenne, sind im hohen Maße kommunikative und sozialverträgliche Menschen.
Muss man auch sein. Als Softwareentwickler redet und diskutiert man mit seinen Kollegen, mit seinem Chef, dem Produktmanager, dem Tester, dem Designer, dem Vertrieb und im schlimmsten Fall auch mit dem Kunden. Man diskutiert im Büro, in Meetings, am Telefon oder per E-Mail. Man beantwortet Fragen oder sucht selber Antworten. Die Umsetzung der Anforderung muss genauso geklärt werden wie die Priorität der Features und Bugs, wenn die Deadline naht und klar ist, dass nicht mehr alles zu schaffen ist. Es gibt sicherlich Bereiche, wo man ungestört vor sich herarbeiten kann, in meinem Berufsleben kam das nicht vor.
Und zuletzt gibt es noch die Vielfältigkeit der Aufgaben. Ich bin eher so ein Frontendentwickler. Ich mag Benutzeroberflächen, überlege gerne, wie man ein Nutzerbedürfnis am besten umsetzt, sowohl im Code als auch auf der Oberfläche, die der Nutzer dann später sieht. Andere Entwickler interessieren sich mehr für die Gesamtarchitektur einer Software, wie die einzelnen technischen Komponenten aufeinander aufbauen, wie sie miteinander kommunizieren und das möglichst effektiv. Andere wiederum basteln an sogenannten APIs (application programming interface), also an Schnittstellen, die dann wieder anderen Softwareentwicklern zur Verfügung gestellt werden, um darauf andere Software zu entwickeln. Es gibt maschinennahe Entwicklung und Entwicklung von Webanwendungen, es gibt Software, die nur auf eigens dafür gebauten Geräten läuft, es gibt Apps fürs Smartphone und Programme, die man als Desktopapplikation auf dem Rechner installieren muss. Es gibt große Applikationen mit vielen Funktionen, kleinere Tools, Plugins und Add-Ons, es gibt Spiele und Apps, deren einzige Funktion ist, dass ein Grillenzirpen erklingt, wenn man auf den Button drückt. Es gibt eine Unmenge an Software, die man braucht, um Software entwickeln zu können.
Diese Vielfältigkeit ist das Wunderbare an diesem Beruf, ich bin an keine Branche gebunden, und auch an kein spezielles Produkt. Es gibt Stellen, die ich nicht annehmen könnte, weil mir die nötigen Kenntnisse fehlen, aber das gilt für jeden Entwickler, dafür ist die Binnendifferenzierung einfach viel zu groß.
Was macht man also so als Softwareentwickler? Tatsächlich entwickelt man Software. Dazu schreibt man Code, ohne Frage. Zusätzlich schreibt man Dokumentationen, fixt Bugs, diskutiert Anforderungen und Prioritäten, redet mit Produktmanagern, Testern, Designern und Kunden, probiert rum, macht, tut, schreibt, liest, verzweifelt und freut sich.
Und zwischendurch isst man Schokolade und Kuchen.
Es ist ein toller Beruf. Und wer jetzt noch Fragen hat, der stelle sie bitte in den Kommentaren.
(Vor zwei Jahren schrieb ich auf meinem anderen Blog schon mal darüber, was man so als Softwareentwickler außer Code schreiben noch macht, allerdings aus einer etwas anderen Richtung. Es fügt sich aber schön als Bonusfeature in diesen Zusammenhang ein.)
Dieser Artikel reiht sich in die lange Liste berufserklärender Artikel ein, die von “Sinn und Verstand” hier angeregt wurde. Zwar ist Softwareentwickler kein wirklich neues Berufsbild und zudem vermutlich längst nicht so geheimnisumwoben wie “Key Account Manager” oder “Social Media Consultant”, aber ich glaube auch hier, dass viele Leute nicht wissen, was man da eigentlich so macht.