Was braucht ein Softwareentwickler an Eigenschaften? Überraschende (?) Einsichten.

wpid-IMG_20130805_100342.jpg
Die Werkzeuge für die Softwareentwicklung zu kennen gehört mit zum grundlegenden Handwerkszeug des Entwicklers. Und er muss auch mit neuen Tools umgehen können.

Ich bin in der Ausbildung aktiv und habe es auch immer wieder mit Schülerinnen und Schülern zu tun, die die wirklich gute Frage stellen: Was für Eigenschaften muss ich eigentlich mitbringen, um ein guter Programmierer zu werden?“

Da treffen sie bei mir auf den richtigen. Zunächst mal, vom Begriff des Programmierers sollten wir uns schon seit längerem verabschieden. Zwar gibt es immer noch hie und da die Kellerkinder, die sich nur von Pizza und Koffein ernähren und am Fließband Code produzieren.
Aber heutzutage ist dieser Typus selten geworden und wird auch nicht mehr wirklich gesucht.
Ein guter Softwareentwickler, denn das ist es, was die Programmierer von heute sind, entwickelt Software. Das kann von der ganz tiefen Maschinencodeprogrammierung bis zum zusammenstellen von Softwarepaketen alles sein. Und hier ergibt sich die erste wichtige Eigenschaftsgruppe.

1) Ein guter Softwareentwickler ist offen und unvoreingenommen neuen Entwicklungen gegenüber und schreibt nur dort eigenen Code, wo es notwendig ist.

Denn oft bieten sich Out of the Box Lösungen an, die nur an die jeweilige Anwendungssituation angepasst werden müssen. Oder es gibt bereits ein Stück Programm, das durch ein wenig Umprogrammmierung genau die Anforderungen erfüllt. Ein wichtiges Talent eines Softwareentwicklers ist nämlich zu erkennen, wann eben nicht selbst programmiert werden muss.

2) Ein Softwareentwickler ist ein SEHR soziales Wesen

Das mag ob der Klischeebilder so manchen überraschen. Aber wie gesagt, die Zeiten des im Keller sitzenden Nerds, der nur an seinen Code denkt sind vorbei und werden von der Zunft nur noch mit einer großen Prise Selbstironie persifliert. Die Systeme, die heute entwickelt werden, sind so komplex, dass ein Entwickler alleine sie gar nicht stemmen könnte. Und die Anforderungen kommen von so vielen „Stakeholdern“, dass es quasi schon ein Entwicklungsparadigma ist, die Entwickler so lange wie möglich vom Code fernzuhalten, um die eigentlichen Komponenten und Wünsche des Kunden zunächst klar zu definieren.

Und auch wenn die Entwicklung begonnen hat, läuft dies meist in Teams, es wird sich mit anderen Entwicklern ausgetauscht, der Code wird mittlerweile gerade beim Extreme Programming gar zu zweit entwickelt. Und der Entwickler hat heute immer häufiger auch direkten Kundenkontakt, da er neben der Entwicklung der Software auch immer häufiger beratende Tätigkeiten übernimmt, um zum Beispiel dem Fachbereich bei der Spezifikation der Anforderungen zu helfen oder in auf neue interessante Entwicklungen hinzuweisen.

3) Ein Softwareentwickler hat Freude an Rätseln und ist nicht zwangsweise ein Mathegenie

IMG_20120414_084812
Neugier und Interesse an technischen Neuerungen sind ebenfalls wichtige Eigenschaften eines Entwicklers

Ja sicher, eine gute Note in Mathematik ist natürlich von Vorteil. Aber viel wichtiger ist ein Sinn und Freude an und für Logik und die Lust und der Biss, auch komplexe Rätsel zu lösen. Denn komplexe Systeme bieten manigfaltige und zum Teil ebenfalls komplexe Möglichkeiten für den Einbau von Fehlern. Und um diese zu finden, benötigt der Entwickler ein hohes Maß an logischem Verständnis und den Biss, auch schwierige Programmierfehler zu finden und zu bereinigen. Ich frage oft, ob potentielle Anwärter auf die Ausbildung als Softwareentwickler Freude am Lösen von auch schwierigen Rätseln haben. Blickt man mich dann wissend an, ist schon der erste Indikator da für eine erfolgreiche Karriere als Entwickler.

4) Ein Softwareentwickler kann gut Englisch lesen, schreiben und sprechen.

Für mich mit am wichtigsten ist es, dass ein guter Softwareentwickler englisch beherrscht. Sowohl die gute Fachliteratur, als auch die Kommunikation im Netz unter den Entwicklern läuft weitestgehend in Englisch ab. Gerade in der Fachliteratur dauert es manchmal bis zu einem Jahr, bis wichtige und relevante Bücher ins Deutsche übersetzt werden. Wer hier die englischen Originale lesen kann, ist klar im Vorteil. Nur ein Beispiel aus meiner eigenen Tätigkeit als Softwareentwickler. Habe ich ein Programmierproblem oder suche nach einer Lösung für eine spezielle Programmieraufgabe, dann kann ich, da ich fließend englisch sprechen, schreiben und lesen kann die Frage weltweit in Foren, Social Media Plattformen und Blogs stellen. Und da immer irgendwo auf der Welt gerade Tag ist, wandert die Frage um den Globus und kann weltweit eine Antwort finden. Würde ich mich nur auf Deutsch äußern, so wäre die mögliche Menge an Antworten schon durch die Sprachbarriere eingeschränkt.
Während meiner Zeit bei IBM entwickelten wir grundsätzlich in englisch, nicht nur die Dokumentation sondern auch die Kommentare im Code. Dadurch war es weltweit möglich, den Code und die dahinterliegenden Ideen zu versehen und weiter zu entwickeln.
Und als ich für den Apple Newton programmiert habe, habe ich virtuell mit Menschen aus Amerika, Australien und diversen anderen Ländern zusammengearbeitet, um virtuell ein komplexes Programmierprojekt zu meistern.
Software wie Linux wäre ohne Englisch als Lingua Franca der Entwicklerszene gar nicht denkbar.

5) Ein Softwareentwickler muss eine Leidenschaft für alles neue technische haben und eine positive Sicht auf die technologische Entwicklung der Zukunft.

Das klingt jetzt sehr philosophisch, aber lässt sich sehr einfach erklären. Nur wenn ich Freude an der Veränderung habe, wenn ich mir immer wieder klar bin, dass nichts in der Softwareentwicklung so beständig ist wie der Wandel, kann ich auch nach Jahren mit der Entwicklung noch Schritt halten, habe noch die Skills, die ich als Entwickler brauche.

Nun seid ihr gefragt: Kennt ihr noch andere wichtige Eigenschaften eines Softwareentwicklers? (Und kommt mir nicht mit „Er muss programmieren können“, das setze ich natürlich voraus 😉 )