Skip to content

Beiträge

Die Kunst meistern: Wesentliche Fähigkeiten eines Senior Software Engineers

31. Oktober 2012 • 4 Min. Lesezeit

Die Kunst meistern: Wesentliche Fähigkeiten eines Senior Software Engineers

Wenn ich “Senior Developer” höre, denke ich an jemanden, der das Programmieren gemeistert hat. Ich denke an eine Person, die ein System entwerfen, programmieren und testen kann. Sie kann über Systemarchitektur oder Komponentendesign sprechen. Sie verstehen und verwenden Design Patterns. Diese Person kann Performance-Engpässe vorhersehen, weiß aber, dass man nicht vorzeitig optimieren sollte. Diese Person wird asynchrone Programmierung, Queuing, Caching, Logging, Sicherheit und Persistierung angemessen einsetzen. Auf Nachfrage können sie eine detaillierte Erklärung ihrer Wahl und der Vor- und Nachteile geben. In den meisten Fällen haben sie objektorientierte Programmierung und Design gemeistert, dies ist nicht absolut - andere Sprachen wie JavaScript, F#, Scheme sind mächtig und sind im Kern nicht objektorientiert. Sie sind geschickt im Risikomanagement und am wichtigsten von allem - sie können das oben Genannte ihren Kollegen kommunizieren.

Was ist Meisterschaft? Es gibt eine allgemein akzeptierte Vorstellung, dass es 10.000 Stunden Wiederholung braucht, damit der menschliche Körper und Geist JEDE Fähigkeit erfassen und verinnerlichen kann. Dies wird ausführlich in Malcolm Gladwells Buch Outliers behandelt.

Einige Beispiele aus Malcolm Gladwells Outliers sind:

Mozart komponierte sein erstes Konzert im jungen Alter von 21 Jahren. Was zunächst jung erscheint, aber er schrieb bereits Musik seit seinem 11. Lebensjahr.

Die Beatles wurden zunächst abgelehnt. Man sagte ihnen, sie hätten nicht das Zeug dazu und sollten eine andere Laufbahn in Betracht ziehen. Sie verbrachten 3 Jahre in Deutschland und spielten etwa 1200 Mal in verschiedenen Veranstaltungsorten, jedes Mal 5 bis 8 Stunden lang. Sie tauchten als die Beatles wieder auf, die wir heute kennen und lieben.

Und schließlich Bill Gates, der im Alter von 20 Jahren Harvard verließ, um Microsoft zu gründen. Für manche mag das töricht erscheinen, aber bedenkt man, dass er mit 20 bereits fast die Hälfte seines jungen Lebens mit Programmieren verbracht hatte. 1975 hatten vielleicht nur 50 Menschen auf der Welt die Erfahrung, die er hatte. Seine Erfahrung gab ihm die Weitsicht, die Zukunft in Microsoft zu sehen.

Peter Norvig diskutiert auch die 10.000-Stunden-Regel in seinem Essay “Teach Yourself Programming in Ten Years”.

In dem Buch Mastery von George Leonard wird ausführlich beschrieben, wie man eine Fähigkeit meistert. Man muss die Fähigkeit immer und immer wieder üben. Je mehr Wiederholung, desto bewusster wird man sich der Unterschiede in jeder Wiederholung. Nur mit dieser Einsicht kann man besser werden.

Die Titel der Software-Industrie (Junior, Mid-Level und Senior) sind irreführend und von Organisation zu Organisation inkonsistent. Ich habe mit Unternehmen gearbeitet, die einen Senior Developer als jemanden definierten, der 5 Jahre oder mehr Erfahrung hatte. Es wird nicht die Qualität der Erfahrung erwähnt, nur dass sie 5 Jahre vor einem Computer gesessen haben. Bei der Arbeit mit diesen Leuten hatten viele von ihnen die objektorientierte Programmierung noch nicht erfasst, dennoch wurden sie als Senior Developer betrachtet.

Es muss einen besseren, objektiveren Weg geben, die Fähigkeiten eines Software Engineers zu messen. John Haugeland hat eine Fähigkeitsmatrix für Computerprogrammierer entwickelt. Sie bietet eine gemeinsame, objektive Methode zur Messung des Fähigkeitsniveaus eines Programmierers, was sonst meist dem Bauchgefühl überlassen bleibt.

Wenn ich Software Engineers betrachte, sehe ich 4 Stufen von Fähigkeiten: Koryphäe, Senior, Mid-Level und Junior.

Koryphäe (10+ Jahre) ist jemand, der eine Fähigkeit gemeistert hat und sich daran macht, seine jeweilige Disziplin zu verbessern. Einige Beispiele sind: Ted Neward, Uncle Bob Martin, Donald Knuth, Oren Eini, Peter Norvig, Linus Torvalds. Dies kann je nach Ihren Fähigkeiten variieren.

Senior (7 bis 10+ Jahre, Level 3) ist jemand, der die letzten 10.000 Stunden mit Programmieren in einem bestimmten Genre verbracht hat. Es gibt ein starkes Verständnis von Design Patterns. Sie nutzen asynchrone Programmierung, Queuing, Caching, Logging, Sicherheit und Persistierung angemessen.

Es ist sehr möglich, dass ein Senior niemals Koryphäe erreicht. Koryphäen findet man oft beim Sprechen und Schreiben. Sie versuchen aktiv, ihre Disziplin zu beeinflussen.

Mid-Level (4 bis 6 Jahre, Level 2) ist jemand, der die tägliche Programmierung versteht. Sie arbeiten selbstständig und erstellen robuste Lösungen. Jedoch haben sie noch keine Erfahrung mit der Erstellung oder Wartung großer oder komplexer Systeme gemacht. Im Allgemeinen sind Mid-Level-Entwickler großartig in der Komponentenentwicklung.

Junior (1 bis 3 Jahre, Level 1) ist jemand, der die Grundlagen der Programmierung versteht. Sie haben entweder einen Abschluss in Software Engineering oder Informatik oder sind Autodidakten. Ihr Code wird kontinuierlich überprüft. Anleitung wird in Bezug auf Algorithmen, Wartbarkeit und Struktur gegeben.

Autor: Chuck Conway ist spezialisiert auf Software-Engineering und Generative KI. Verbinden Sie sich mit ihm in den sozialen Medien: X (@chuckconway) oder besuchen Sie ihn auf YouTube.

↑ Zurück nach oben

Das könnte dir auch gefallen