Organisation
Eine Plattform ist kein rein technisches System, es kann eher als sozio-technisches System bezeichnet werden, weil sie sowohl soziale als auch technische Aspekte um-fasst. Die gute Organisation einer Plattform ist genauso wichtig wie eine gute Archi-tektur. Gerade im Rahmen von Industrie 4.0 Applikationen mit einer sehr heteroge-hen Entwicklungsorganisation mit mehreren Rollen ist gemeinsame Sprache und gute Kommunikation erfolgsentscheidend. Der Einsatz von neuen Technologien und dem agilen Vorgehen im Projektmanagement erfordert es parallel zum Aufbau der Plattform und der Entwicklung erster Applikationen neue Fähigkeiten und Kompe-tenzen in der Entwicklungsorganisation aufzubauen.
Wie organisiert man eine Plattform?
Applikationen auf einer Plattform zu entwickeln und zu betreiben (DevOps) bedeutet meist ein Organisationsumbau von horizontal geschnittenen Teams zu einer Entwicklungsorganisation mit vertikal organisierten Engineering-Teams. Diese Organisation bildet besser ab, wie und wo Verantwortung der Teams für ihre Produkte wahrgenommen werden können – „You build it, you run it“. Die Teams können so eine vertikal organisierten Entwicklungsorganisation sehr unabhängig voneinander entwickeln und produktiv setzen. Fachliche geschnittene Domains und definierte Schnittstellen reduzieren die Komplexität und Abhängigkeiten von Teilsystemen. Eine Plattform die hybrid auf Teilsysteme aus der Cloud und auf lokale Hardware setzt, bietet eine gute Grundlage für größtmögliche Automatisierbarkeit.
Für die Entwicklungsorganisation empfiehlt der Entwurf ein dezidiertes Enabling Team für den Aufbau der Plattform, mit dem Ziel andere Teams in der Organisation bei Industrie 4.0 Förder- und Kooperationsprojekte zu unterstützen und erfolgreich zu sein. Das Enabling Teams kann nach dem Aufbau der Plattform Schulungen und Schulungsmaterialien zur Verfügung stellen, um anderen Teams bei der Entwicklung neuer Fähigkeiten zu helfen. Es stellt die Ressourcen und Infrastruktur bereit, die anderen Teams dabei helfen, Industrie 4.0 Förder- und Kooperationsprojekte effektiver umzusetzen. Das Team kann innerhalb der Entwicklungsorganisation Best Practices teilen und voneinander lernen, um eine Kultur der kontinuierlichen Ver-besserung zu fördern. Das kann die Einführung neuer Technologien und Tools erleichtern.
Welche Rollen und Regeln gibt es in der Organisation?
Neben den Rollen im Team gibt es zahlreiche Rollen in Organisationen auf die das Team wenig bis gar keinen Einfluss hat.
agile Organisation
Im agilen Projektmanagement ist es eines der Ziele, dass Teams möglichst unabhängig von der sie umgebenden Organisation arbeiten können. Dies gilt aber auch für die Individuen in einem Team, die möglichst zeitlich und organisatorisch unabhängig vom Teams arbeiten wollen. Um diese Arbeitsweise zu unterstützen, müssen Festlegungen im Arbeitsprozess und im methodischen Vorgehen getroffen werden. Erfahrene Teams kennen ihre Arbeitsprozesse und Methoden, mit denen sie erfolgreich Wert liefern. Zumeist haben sie diese über viele Iterationen durch praktische Anwendung und das Messen der Velocity (Umsetzungsgeschwindigkeit) und in Retrospektiven verbessert. Um in Iterationen ein komplexes System wie eine Plattform und Applikationen auf ihr zu entwickeln, müssen die Anforderungen und Umsetzung systematisch-methodisch organisiert werden. Mit User Story Mapping können die Anforderungen in für die Entwicklungsorganisation umsetzbare Artefakte organisiert werden. SCRUM bietet ein geeignetes Framework, um die Umsetzung zu organisieren. Um komplexe Probleme zu lösen und Wissen zwischen den Rollen zu tei-len, was gerade zu Beginn der Entwicklung der Plattform nötig sein wird, bietet Pair- oder Team-Programming (Mob-Programming) ein geeignetes Format.
User Story Mapping
User Stories sind ein wichtiger Teil der agilen Softwareentwicklung und haben den Fokus von geteilten Dokumenten, hin zu gemeinsamem Verständnis verschoben. Sie helfen auf verständliche Weise die Wünsche von Nutzern formal auszudrücken. Eine User Story hat immer die gleiche Struktur – „In meiner ROLLE als […] WILL ich das […], um […] zu erreichen. Dafür sind mir folgende Akzeptanzkriterien wichtig: […].“. Viele User Storys werden, vor allem wenn sie aufeinander aufbauen, schnell un-übersichtlich, der Zusammenhang geht verloren und damit das gemeinsame Ver-ständnis für die entstehende Lösung. User Story Mapping hilft dabei die User Storys zu strukturieren, indem es die User Storys Aktivitäten zuordnet.
Pairing und Team-Programming
Pair- oder Team-Programming (auch Mob-Programming engl. Mob, Gruppe – im Deutschen durch Mobbing negativ besetzt) sind Methoden, die den Austausch von Wissen und die Entwicklung von Teams fördern. Wenn für ein Projekt, wie den Auf-bau einer Plattform, viele neue Fähigkeiten aufgebaut werden müssen und die Ent-wicklung als solches auch viel neues Wissen erzeugt ist Pair- oder Team-Programming hilfreich. Es kann verhindern das Einzelne Personen in der Entwick-lungsabteilung alleinig Wissen aufbauen, was zu einem Risiko für den Erfolg wird, wenn sie ausfallen. Über das Format erfolgt eine Wissensteilung und es entstehen gemeinsame Konventionen, zudem fördert es collectiv code ownership (Teamver-antwortung für die gemeinsame Codebasis). Dies ist gerade bei verteilter Arbeit von besonderer Bedeutung für den Erfolg einer Entwicklungsorganisation. Die Me-thode ist nicht auf reines Entwickeln von Code beschränkt, es kann auch zur Erstel-lung von Dokumentation in Entwicklungsorganisationen genutzt werden. Mit Team-Programming ist sichergestellt das die Dokumentation für alle verständlich ist, den aktuellen Stand widerspiegelt und sich gemeinsame Standards für Dokumentation entwickeln. Eine Team-Programming Session besteht aus 5-6 Personen, die jeweils nach 5-10 Minuten die Tastatur wechseln. Im „strong-style pairing“, übergibt die Person mit einer Idee/Lösung jemand anderen die Tastatur und erklär ihm seine Idee/Lösung. Im Pairing gibt es die Rolle des Drivers (hat die Tastatur) und den Navigator (re-cherchiert und navigiert) die jeweils wechseln. Im Team-Programming wird die Gruppe durch einen Host Facilitator moderiert, um die Rolle des Drivers mit Ideen und Vorschlägen nicht zu überlasten. Jede Session wird mit einer Retrospektive in Form „Start, stop, keep“ dokumentiert, dies hilft der Gruppe besser zu werden. Der Mehraufwand durch die Methode wird durch die Vorteile kompensiert. Das Vorgehen reduziert Merge-Konflikte von Code, ersparen aufwendige Code Reviews und damit verbunden Planungs- und Nacharbeit. Mit immer komplexeren Aufgaben wird es immer wichtiger zusammen Dinge fertig zu stellen, dass übt die Zusam-menarbeit im Team unter Zeitdruck. Der Trend des KI generierten Programmier-codes (oder Tests) lässt sich sehr gut in Pair- und Team-Programming integrieren, um das Potential dieser neuen Technologie in der Entwicklungsorganisation optimal zu nutzen.
Architekturmanagement
Architekturmanagement stellt sicher, dass die Architektur eines Systems den Anfor-derungen entspricht und zukunftssicher ist. Eine gute Architektur fördert eine effek-tive Zusammenarbeit zwischen den verschiedenen Stakeholdern, die an der Ent-wicklung und Nutzung des Systems beteiligt sind. Sie trägt ebenfalls dazu bei, ein System wartbar, erweiterbar und kosteneffizient zu gestalten. Eine Architektur ent-steht mit dem ersten Entwurf eines Systems und muss bis das System nicht mehr genutzt wird gemanagt werden. Je nach Größe der Entwicklungsorganisation wird das Architekturmanagement durch die Entwicklungsteams selbst oder ein separates Architekturteam sichergestellt. Die Hauptaufgabe eines solchen Teams ist die Defi-nition von Architekturprinzipien und -standards. Das Architekturmanagement um-fasst auch die Dokumentation der Architektur. Die Dokumentation sollte klar und verständlich sein, damit alle Stakeholder die Architektur verstehen und darauf auf-bauen können. Regelmäßige Architekturüberprüfungen stellen sicher, dass die Ar-chitektur den aktuellen Anforderungen entspricht und zukunftssicher ist. Die Archi-tektur eines Systems sollte kontinuierlich verbessert werden. Architekturmanage-ment ein wichtiger Bestandteil der Entwicklung und Nutzung von Systemen, gerade bei der Entwicklung einer Plattform ist es eine der Hauptaufgaben, da viele von Verbesserungen profitieren. Orientierung für Entwicklungsorganisationen bietet ISO/IEC/IEEE 42010 (Fortfüh-rung der IEEE 1471) die internationale Norm mit dem Titel "Systems and software engineering - Architecture description". Sie legt fest, wie Architekturen von Syste-men und Software beschrieben werden sollten, um eine klare und konsistente Kommunikation zwischen verschiedenen Stakeholdern zu ermöglichen. Die Norm gibt Empfehlungen für die Entwicklung von Architekturmodellen und Beschreibun-gen, die die wichtigsten Aspekte des Systems oder der Software abdecken, wie zum Beispiel Funktionen, Komponenten, Schnittstellen, Daten und Prozesse. Sie betont auch die Bedeutung der Einbeziehung von Stakeholdern in den Prozess der Architek-turbeschreibung. Die ISO/IEC/IEEE 42010 ist eine wichtige Norm für die Software- und Systemarchitektur und wird von Organisationen und Unternehmen auf der gan-zen Welt genutzt, um sicherzustellen, dass ihre Architekturen klar, vollständig und verständlich beschrieben werden.
Fähigkeiten- und Kompetenzentwicklung
Die Fähigkeiten- und Kompetenzentwicklung ist für eine Entwicklungsorganisation von entscheidender Bedeutung, sie trägt dazu bei, dass Entwickler in der Lage sind, ihre Aufgaben effektiver und effizienter zu lösen. Durch die kontinuierliche Verbes-serung ihrer Fähigkeiten und Kompetenzen können Entwickler ihre Leistung stei-gern, neue Herausforderungen meistern und wertvolle Beiträge zum Erfolg des Un-ternehmens leisten. Neue Technologien, Arbeitsmethoden und Trends erfordern kontinuierliche Schulungen, der Besuch von Meetups, Veranstaltungen wie Hacka-thons, Talks und Weiterbildungen, damit Entwickler auf dem neuesten Stand bleiben und die erforderlichen Fähigkeiten besitzen, um die Ziele des Entwicklungsorganisa-tion zu erreichen. Die Fähigkeiten- und Kompetenzentwicklung muss fester Bestand-teil jeder Entwicklungsorganisation sein und geplant werden wie die Umsetzung. Der Entwurf für die Plattform dient als Orientierungswissen dafür welche Fähigkei-ten in welcher Rolle entwickelt werden müssen. Durch das agile Projektmanage-ment wird eine Kompetenzentwicklung gefördert. Die Begriffe Fähigkeit und Kompetenz werden oft synonym verwendet, es gibt eini-ge Unterschiede zwischen ihnen.
Fähigkeiten
Fähigkeiten sind in der Regel praktische Fertigkeiten oder Techniken, die eine Per-son beherrscht, um eine bestimmte Aufgabe zu lösen. Fähigkeiten können sowohl körperlich als auch geistig sein. Beispiele für Fähigkeiten sind: Programmieren, Pro-jekte managen, Schreiben, Entwerfen von Benutzeroberflächen usw. Fähigkeiten können erworben und durch Ausbildung und Erfahrung verbessert werden. Möglichkeiten für Entwickler/Entwicklungsorganisation Fähigkeiten zu verbessern:
- CodeKatas (kleine Programmieraufgaben) und Programming Challenges verbessern die Programmierfähigkeiten
- Schulungen und Seminare vermitteln neue Fähigkeiten
- Online-Kurse (Udemy , Coursera , Udacity ) ermöglichen es Fähigkeiten sehr zeitnah im Projekt aufzubauen
- Tutorials und Workshops helfen Fähigkeiten sehr praxisnah aufzubauen
- Mentoring durch erfahrene Entwickler helfen Erfahrung zu teilen und Fähig-keiten zu vertiefen
- Feedback hilft nicht nur Produkte besser zu machen, durch konstruktives Feedback können Fähigkeiten gezielt verbessert werden
- Regelmäßiges lesen von Büchern, Zeitschriften oder Blogs über das Fachge-biet neue Fähigkeiten zu erlernen.
- Meetups und Konferenzen ermöglichen den Austausch und die Vernetzung im gleichen Fachbereich
- Fehleranalyse und Schwachstellenanalysen machen es möglich aus Fehler und Schwächen zu lernen und Fähigkeiten weiterzuentwickeln
Kompetenzen
Kompetenzen sind die Fähigkeit einer Person, ein bestimmtes Ziel in einem be-stimmten Kontext zu erreichen. Sie können sowohl fachliche als auch soziale und persönliche Fähigkeiten umfassen. Beispiele für Kompetenzen sind: Kommunikationsfähigkeit, Problemlösungsfähigkeit, Teamarbeit, Führungsfähigkeit, Flexibilität, Kundenorientierung usw. Kompetenzen umfassen in der Regel mehrere Fähigkeiten und beziehen sich auf die Fähigkeit, Wissen und Erfahrung in bestimmten Situatio-nen anzuwenden
Agile Mitarbeiterentwicklung
Im Hinblick auf den Erfolg eines Projekts ist es von großer Bedeutung, dass die Fähigkeiten und Kompetenzen der Mitarbeiter den Anforderungen des Projektes und den aktuellen Trends entsprechen. Daher ist es notwendig, eine agile Mitarbeiter-entwicklung zu implementieren, die einen methodisch systematischen Aufbau, die Förderung und das Training der benötigten Fähigkeiten und Kompetenzen gewähr-leistet. Durch eine kontinuierliche Weiterbildung und Entwicklung der Mitarbeiter können neue Technologien und Entwicklungen aufgegriffen und in das Projekt integriert werden. Somit wird gewährleistet, dass ein marktgerechtes Produkt entsteht, das den Anforderungen der Kunden entspricht und den aktuellen Trends in der In-dustrie gerecht wird. Eine agile Mitarbeiterentwicklung stellt somit einen wichtigen Faktor für den Erfolg des Projekts und auch für die Zukunftsfähigkeit des Unternehmens dar. Neben dem Aufbau von technischen Fähigkeiten, die beispielsweise an einem Entwurf abgeleitet werden können, müssen auch Kompetenzen der agilen Entwicklungskultur vermittelt und trainiert werden. Kompetenzen der agiler Entwicklungskultur:
- Mut: Bereitschaft, Entscheidungen zu treffen und neue Wege selbstorganisiert zu gehen
- Fokus: Konzentration auf die vereinbarten Praxisaufgaben und -projekte, um zielorientiert und kreativ zu arbeiten und zu lernen
- Commitment: Im Rahmen verbindlicher Vereinbarungen Verantwortung übernehmen
- Respekt: Die Mitarbeiter achten ihre Entwicklungspartner und betrachten sie als gleichwertig; sie gehen auf Augenhöhe miteinander um
- Offenheit: Bereitschaft, auf Veränderungen zu reagieren, sich mit Entwick-lungspartnern offen auszutauschen und sein eigenes Wissen zu teilen
- Wertschätzung: Jeder Mitarbeiter gibt sein Bestes im Sinn des Teams und der Organisation und erteilt wertschätzendes Feedback
- Vertrauen: Jedem Mitarbeiter wird grundsätzlich Vertrauen entgegenge-bracht