Max liebte schon immer Technik. So war es auch nicht verwunderlich, dass er Informatik studierte. Während des Studiums arbeitete er nebenberuflich als Programmierer bei verschiedenen Firmen. Als frisch gebackener Master of Computer Sciencehatte er keine Probleme, einen Job zu finden. Mit den Jahren lernte er eine Vielzahl von Frameworks kennen, programmierte in Java, C#, JavaScript und manchmal auch in Python. Max durfte auch in andere Gebiete reinschnuppern: Anforderungen prüfen, Konzepte für neue Features ausarbeiten, Builds konfigurieren. Für Max war es sein Traumjob. Der Chef erkannte Maxs Talent. Als die Entwicklung eines neuen Produktes gestartet wurde, wählte er Max für die Rolle des SW-Architekten aus.
Max nahm seine neue Rolle ernst und modellierte mit UML das zu erschaffende System von vorne bis hinten durch und widmete sich anschließend wieder seiner Lieblingsbeschäftigung – der Programmierung. Der Rest ist Geschichte: Nach zwei Jahren Entwicklung drückte der Chef das System auf dem Markt – mit einem Jahr Verzögerung. Der Kunde beschwerte sich schon am ersten Einsatztag über die schlechte Performanz. Mit Ach und Krach bogen die Entwickler das System zurecht. Darauf folgte der zweite Kunde mit Sonderwünschen. Max und sein Team bauten die neuen Wünsche des Kunden unter Zeitdruck mit einigen If-Bedingungen in den Code ein. So machten sie es dann auch mit den weiteren Kunden. Eine Vorgehensweise, die kurzfristig Schnelligkeit versprach, sich aber nach wenigen Jahren rächte. Die Qualität des Systems verschlechterte sich immer mehr. Die Entwickler stöhnten unter der stets schlechter werdenden Wartbarkeit. Der Chef verstand nicht, warum es plötzlich so lange dauerte, neue Features umzusetzen.
Was ist falsch verlaufen?
Max kann man nicht alleine für den Misserfolg verantwortlich machen. Obwohl…
Ein guter SW-Architekt kann mehr als nur richtig gezeichnete Pfeilspitzen in UML-Diagrammen vorweisen oder Diskussion über die neuesten Technologien führen. Er verfügt auch über Wissen im Bereich des Anforderungs- und Risikomanagements.
Eine der wichtigsten Fähigkeiten eines SW-Architekten ergibt sich jedoch aus seiner Rolle im Entwicklungsprozess. Ein SW-Architekt interagiert mit vielen anderen Rollen. Dazu muss er über interdisziplinäres Wissen und soziale Kompetenzen (engl. Soft Skills) verfügen.
Die Arbeit des SW-Architekten beginnt schon beim Anforderungsmanagement. Kunden bzw. Product Owner stellen vorwiegend funktionale Anforderungen bereit. Für SW-Architekturen sind jedoch nichtfunktionale Anforderungen (Qualitätsanforderungen) besonders prägend. Daher prüft der SW-Architekt die Anforderungen und schaut dabei auf die Qualitätsattribute Leistungsfähigkeit, Zuverlässigkeit, Benutzbarkeit, Portierbarkeit, Wartbarkeit und Sicherheit. Findet er Unklarheiten oder Lücken, weist er darauf hin. Bei offensichtlich überzogenen Anforderungen zeigt der SW-Architekt die Konsequenzen auf (Bsp.: 99,99 % Verfügbarkeit ist möglich, übersteigt jedoch die Kosten. Aber ist es wirklich nötig?). Da der SW-Architekt lösungsorientiert denkt, macht er dabei auch gleich Alternativvorschläge.
Ein guter SW-Architekt arbeitet nicht im Elfenbeinturm. Er bindet Entwickler in die Architekturarbeit eng mit ein. Dies erhöht die Wahrscheinlichkeit, dass die Architektur auch wirklich so umgesetzt wird, wie geplant. Manche SW-Architekten sehen sich dabei als Moderator, delegieren viele Architekturaufgaben an die Entwickler, moderieren Workshops und kontrollieren, ob Architekturaufgaben durchgeführt werden. Bei eingebetteten System stimmt sich ein SW-Architekt ebenfalls mit den Hardware-Entwicklern ab.
SW-Architekten treffen viele Architekturentscheidungen. Welches UI-Framework setzen wir ein? Wie können wir 1000 Anfragen pro Sekunde verarbeiten?
Manche dieser Architekturentscheidungen betreffen den gesamten Lebenszyklus des Systems und sind häufig nicht mehr umkehrbar. Gute SW-Architekten wissen, dass sie auch falsche Entscheidungen treffen können. Daher gehen sie auf Nummer sicher und arbeiten eng mit der Qualitätssicherung (Tester) zusammen. Sie holen sich für schwerwiegende Architekturentscheidungen und risikobehaftete Anforderungen Feedback von der Qualitätssicherung. Ein iterativ/inkrementeller Entwicklungsprozess lässt sich dazu gut nutzen. Im schlimmsten Fall geht die Arbeit einer Iteration verloren. Der Architekt hat jedoch die Möglichkeit, nach jeder Iteration seine Entscheidung zu ändern und bei Problemen entgegenzusteuern.
Der IT-Betrieb muss unter anderem das System installieren, konfigurieren, betreiben, sichern, skalieren, auf den neuesten Stand bringen. Es ist offensichtlich, dass er dazu Anforderungen an die Architektur hat und Information vom SW-Architekten benötigt.
Firmitas, Utilitas und Venustas, also Stabilität, Funktionalität und Schönheit, sind drei bekannte Architekturziele. Die perfekte Architektur ist jedoch teuer. Meist muss der Architekt wegen Budget- und Zeitgrenzen Kompromisse eingehen. Diese Randbedingungen kommen meist vom Projektmanager. Ein guter SW-Architekt akzeptiert gute Kompromisse, sorgt aber dafür, dass daraus keine wesentlichen Risiken entstehen und kommuniziert Risiken regelmäßig zu allen Projektbeteiligten.
Wie man sieht, technisches Wissen ist nicht alles!
Ein guter SW-Architekt verfügt über interdisziplinäres Wissen und wird daher von den anderen Projektbeteiligten ernst genommen während seine Ideen in das System einfließen. Außerdem verfügt der SW-Architekt über soziale Kompetenzen. Er ist kein Mauerblümchen, sondern geht Probleme proaktiv an, kann andere überzeugen und lässt auch sich selbst überzeugen. Ein SW-Architekt moderiert Workshops, kommuniziert mit unterschiedlichen Rollen zielgruppengerecht und verfügt dazu über die nötige Begeisterungsfähigkeit.
Übrigens: Max hat aus seinen Fehlern gelernt. Sein Chef gab ihm eine zweite Chance. Bereits das zweite Projekt verlief erfolgreich. Max hat dafür gesorgt, dass die Anforderungen klar und vollständig sind. Er leitete wichtige Architekturentscheidungen mit allen Stakeholdern systematisch her, holte von der Qualitätssicherung Feedback ein und steuerte bei Problemen rechtzeitig dagegen. Für Max ist die Bahn frei für eine erfolgreiche Karriere als SW-Architekt.
Soziale Kompetenz kann man lernen!
Software Quality Lab bietet dazu das Seminar „Soft Skills für Software Architekten (iSAQB CPSA Advanced Level)" an.