Im November habe ich auf den Clean Code Days in München einen Vortrag darüber gehalten, wie unzufrieden ich mit vielen Entwicklern in Deutschland bin, mit denen ich während meiner bisherigen Laufbahn Kontakt hatte oder zusammengearbeitet habe. Das war allerdings ein ziemlich pessimistischer Blick auf die Welt. Daher drehe ich den Blickwinkel heute mal um und möchte beschreiben was es bedeutet ein guter Entwickler zu sein bzw. was man meiner Ansicht nach benötigt um einer werden zu können.
Durch befreundete Entwickler, mein wachsendes Netzwerk, und vor allem meine Arbeit in der Microsoft Community bin ich in letzter Zeit mit vielen Entwicklern zusammengetroffen, die ich als überdurchschnittlich engagiert und talentiert wahrnehme. Natürlich stellt man sich dann an dieser Stelle oft die Frage, wie man sich selbst zwischen all diesen Entwicklern einzuordnen hat.
Um genau diese Einordnung für mich vornehmen zu können, habe habe ich in letzter Zeit sehr viel darüber nachgedacht, was die ordentlichen Entwickler von den Guten, und die Guten von den absoluten Ausnahmetalenten unterscheidet.
Es gibt einige Fähigkeiten/Eigenschaften, die ich in diesem Kontext als essentiell wahrnehme, und die bei diesen drei Entwicklertypen besonders ausgeprägt sind. Das wären z.B.:
- Eine schnelle Auffassungsgabe. Je besser ein Entwickler ist, desto schneller kann er sich meiner Meinung nach in neue Themen und Technologien einarbeiten. Das trifft genauso auf fachliche Inhalte zu.
- Die Fähigkeit zur Abstraktion von Details, als auch die Konzentration auf Details. Und vor allem dazwischen gut umschalten können.
- Ein breites technisches Grundwissen. Gute Entwickler schauen über den Horizont. Lernen gerne neue Technologien, beherrschen möglicherweise mehrere Plattformen und Sprachen. Sie kennen sich mit Netzwerken und Protokollen aus, beschäftigen sich vielleicht sogar mit hardwarenahen Dingen.
- Gute Allgemeinbildung und Interessen, die über ihr eigenes Fach hinausgehen. Viele der guten Entwickler die ich kennenlernen durfte haben breit gefächerte Interessen. Manche sind aktive und engagierte Musiker, wiederum andere arbeiten an gemeinnützigen Projekten mit, sind sportlich sehr aktiv, etc. Sie beschäftigen sich mit dem aktuellen Weltgeschehen, sind politisch informiert, und man kann sie durchaus als aktive Bürger des Landes ansehen.
- Sie brennen für Ihren Job, sind dort überdurchschnittlich engagiert und arbeiten viel. Vor allem unter den Freelance-Entwicklern in meinem Bekanntenkreis macht keiner eine 40-Stunden Woche… fast alle arbeiten weitaus mehr, nehmen Ihre Arbeit aber nicht als Belastung wahr, sondern lieben sie. Mit Genuss werden hier Blog-Posts, Videos und sonstige Inhalte zu Softwareentwicklung und darüber hinaus verschlungen, ausprobiert, kommentiert und vielleicht sogar in eigenen Posts weiterverarbeitet. Spontane Coding-Sessions mitten in der Nacht nach einem coolen Einfall sind in dieser Gruppe keine Besonderheit. Genauso wie durchgehackte Wochenenden.
Mein Eindruck dieser ganzen Eigenschaften ist, dass sie sich vermutlich gegenseitig bedingen. Wer Spaß an seinem Job hat und auch noch entsprechend mit Anerkennung versehen wird (was bei den meisten Softwareentwicklern der Fall sein könnte, mindestens finanziell) wird vermutlich generell mehr Zeit und Leidenschaft in seinen Job stecken. Vermutlich wird eine solchermaßen engagierte Persönlichkeit egal in welchem Fach herausstechen (sei es nun Softwareentwicklung oder beispielsweise Jura). Zumindest macht dieser Gedankengang für mich Sinn. Aber darüber hinaus kommt bei vielen Entwicklern noch diese beschriebene tiefere intrinsische Motivation hinzu. Dies ist ein Antrieb den ich bei vielen anderen Personen aus meinem Bekanntenkreis nicht finde, die in anderen Berufen und Branchen unterwegs sind. Aber das mag daran liegen, dass ich natürlich in Beruf und Alltag zwangsweise primär mit Softwareentwicklern zu tun habe und dadurch einen gewissen Tunnelblick erleide.
Möchte man alles was ich hier so erzählt habe kurz zusammenfassen, läuft es eigentlich auf drei Dinge hinaus: Einen wachen und offenen Geist, der Interesse an neuem hat. Ein regelmäßiger Blick über den Tellerrand und zuletzt eine starke Identifikation mit der eigenen Tätigkeit die weit über den eher verbreiteten Lohn-und-Brot Ansatz hinaus geht. Lässt man das mal kurz sacken bemerkt man: Fast nix davon hat primär mit hartem technischen Wissen zu tun. Alles mehr oder weniger Soft Skills… Verwundert das wen? Mich ehrlich gesagt nicht.
Sollte diese Erkenntnis fernab meiner persönlichen Meinung auch tatsächlich etwas Wahrheit enthalten, so müsste man daraus vielleicht ableiten, sowohl in der Ausbildung als auch später bei der Einstellung von Mitarbeitern und im Alltag viel mehr darauf zu achten, diese weichen Kriterien zu prüfen und zu vermitteln. Vielleicht sollte es auch schon vor dem Studium eine weitaus bessere Eignungsfeststellung geben. Das würde vermutlich auch die in Informatikstudiengängen immer noch drastische Abbrecher- und Durchfallquote verringern. Ich kann nur allen angehenden und schon berufstätigen Entwicklern empfehlen, sich viel stärker mit solchen Themen auseinanderzusetzen. Es gab auch bei mir einen Punkt während meines Studiums ab dem ist mir dieser Aspekt erst klar geworden. Danach war es ein langsamer und mühsamer Prozess stetigen Lernens. Aber es lohnt sich!
Die Clean Code Initiative ist da ein sehr guter Startpunkt, über die man an die entsprechenden Bücher, Quellen und auch Übungen verwiesen wird. Zumindest das „Clean Code“ Buch von Robert C. Martin und der Nachfolger „The Clean Coder“ sind ein guter Einstieg zur Selbstreflektion. Hoffentlich führen Sie Euch in die richtige Richtung. Viel Spaß beim Lernen!