Montag, 11. März 2013

Java Seniors - Fools with Tools?

Alt = Senior?
CC-BY-NC-ND lyzadanger
Was macht einen Java Senior aus? Diese Frage sollte sich jeder Java Recruiter, Manager und auch Entwickler stellen. Seniorität ist weit mehr als nur ein Mascherl, es sagt etwas darüber aus, welche Erwartungen man stellen darf und welche man erfüllen muss.
Folgende Eigenschaften muss ein Java Senior aber auf jeden Fall vorweisen können:
  • Einige Jahre Erfahrung mit kommerzieller Java Entwicklung
  • Erfahrung mit den wichtigsten Java Tools, Techniken und Frameworks
  • Fähigkeit zwischen persönlichem Interesse und Sinnhaftigkeit für den Auftraggeber unterscheiden zu können
  • Teamarbeit, Emotionale Intelligenz und Führung durch Vorbildwirkung
Viele Jahre Erfahrung mit Java Entwicklung machen einen Java Entwickler nicht automatisch senior (auch wenn einige Skillprofile diesen Eindruck erwecken wollen). Es gibt Entwickler mit 10 und mehr Jahren Erfahrung mit Java, die - auf Grund ihrer Projekte, Interessen oder Persönlichkeit - immer noch in die Kategorie Java Junior einzureihen sind. Während seiner Zeit als Junior sollte ein Java Entwickler die wichtigsten Java Tools und Frameworks beherrschen gelernt haben - ansonsten ist und bleibt er Junior.

Viel Erfahrung mit den wichtigsten Java Tools, Frameworks und Libraries macht (zumindest nach Meinung vieler) den Unterschied zwischen einem Java Senior und einem Java Junior aus. In Java gibt es aber hunderte Tools und tausende Frameworks/Libraries - welche davon sind state-of-the-art, welche sollte ein Senior beherrschen? Diesem Thema widme ich demnächst einen eigenen Blog-Artikel, aber kurz gesagt: Ein Java Senior muss ca. ein Dutzend Tools wie Eclipse, Maven, Jenkins, SVN oder Jira, sowie ein weiteres Dutzend Frameworks/Libraries wie Hibernate, Spring, Apache Commons, oder Google Guava kennen und mit ihnen im Rahmen seiner Tätigkeit als Java Junior praktische Erfahrung gesammelt haben.

Das alleine reicht aber bei weitem noch nicht, denn: "A fool with a tool is still a fool" - Grady Booch. Seniorität ist mehr als Toolerfahrung. Ein Java Senior muss nicht nur Tools, Frameworks und Libraries aus praktischer Erfahrung kennen, er muss auch wissen, wann er welche Tools, Frameworks, Libraries und Techniken einsetzt (und viel wichtiger: welche er wann nicht einsetzt). Viele dieser Entscheidungen können dem Senior auch nicht von einem Projektleiter oder Architekten abgenommen werden - tagtäglich muss ein Senior viele kleine Entscheidungen treffen.

Um diese Entscheidungen zu treffen muss der Java Senior unternehmerisch denken können. Derartige Entscheidungen dürfen nicht von persönlichen Vorlieben geprägt sein, sondern müssen durch objektive Kriterien nachvollziehbar sein. Das beherrschen leider nur die besten Senior Entwickler - oft werden in Projekten völlig unpassende Tools und Frameworks eingesetzt, nur weil sie einigen Entwicklern interessant erschienen. Derartige Fehlentscheidungen kosten vielen Projekten Unsummen ohne dass es irgendwem auffällt.

Neben den Tools und Frameworks muss ein Java Senior aber auch Techniken beherrschen - Techniken, die notwendig sind um produktive Java Projekte umzusetzen. Techniken wie UML, Analyse- und Design Patterns sowie Design Prinzipien muss ein Java Senior genauso beherrschen wie Techniken der Agilen Softwareentwicklung wie beispielsweise Unitttests, Refactoring oder Continuous Integration. Ohne derartiger Techniken verkommen alle Softwareentwicklungsprojekte zu Codewüsten mit geringer Produktivität. - Ein Überblick über die diesbezüglich empfohlene Literatur findet sich in meinem Post "Literatur für Senior Java Entwickler"

Darüberhinaus muss ein Senior auch Juniors führen können. Der introvertierte Nerd kann somit niemals ein Senior Softwareentwickler sein - ein Guru vielleicht, aber niemals ein Senior Java Entwickler. Softwareentwicklung passiert so gut wie immer in Form von Teams - traditionelle Führungstechniken sind hier chancenlos. Ein Senior führt indem er den Juniors vorzeigt, wie etwas "richtig" funktioniert. Teamarbeit auf engem Raum (z.B. Pair-Programming) muss ein Java Senior während seiner Zeit als Junior kennen und schätzen gelernt haben - jetzt nutzt er es um Juniors zu führen: in direkter Kommunikation und stets offen für deren Vorschläge.

Auf der anderen Seite muss ein Senior aber auch mehr als nur ein Befehlsempfänger sein - er muss fähig sein, sich eine eigene Meinung zu bilden und (falls diese von der Meinung anderer abweicht) diese auch möglichst objektiv begründen und diskutieren zu können. Ebenso muss er auch Meinungen anderer respektieren können und zur Konsensbildung fähig sein. Nach oben "buckeln" (unhinterfragt Befehle von Architekten oder Projektleitern ausführen) ist genauso kontraproduktiv wie nach oben "lufttreten" (hinter dem Rücken des Architekten oder Projektleiters über deren Fehlentscheidungen schimpfen).

Es ist also alles andere als leicht, ein Senior Software Entwickler im Java Umfeld zu werden. Es verlangt neben technischem Know-How (das man in bestimmten Unternehmen/Branchen nie erwerben kann) auch insbesondere eine entsprechende Persönlichkeit (die man sich wohl auch nicht so leicht antrainieren kann). Darum gibt es auch viele Softwareentwickler, die auch nach 5, 10 oder 20 Jahren Berufserfahrung immer noch in die Kategorie "Junior Java Software Entwickler" einzureihen sind (auch wenn sie sich selbst Senior Entwickler oder gar Architekt nennen).
web analytics