Wegen COVID-19 hat sich in der Arbeitswelt vieles verändert, auch die Zusammenarbeit in einem Entwicklungsteam. Wie kann man trotz Home-Office die Zusammenarbeit im Team aufrechterhalten? Wie können Tools die Planung unterstützen? Was können Tools zur Zusammenarbeit beitragen? Als Beispiel habe ich die Arbeiten für den CAS Leistungsnachweis mit Microsoft Azure DevOps Boards erfasst.
Wie viele andere Arbeitstätige verbringe ich seit März 2020 die Arbeitszeit meist im Home-Office. Am Anfang war ich skeptisch, ob die Entwicklungsarbeit von zu Hause aus überhaupt funktionieren kann. Wir haben uns aber schnell eingelebt und uns mit den verfügbaren Mitteln wie Skype und OneNote beholfen. Das hat erstaunlicherweise gut geklappt, wie auch der Heimunterricht an der HSLU. Dann bin ich auf den Blog Remoting into DevOps von Emily Freeman gestossen. Sie beschreibt darin wie man den Alltag im Home-Office optimal gestalten kann. Dies auch im Zusammenhang mit (Azure-) DevOps.
Das hat mein Interesse geweckt. Da wir für die Transferarbeit auch Tools für DevOps evaluieren werden, lohnt es sich Azure DevOps ein bisschen näher zu betrachten.
Was ist DevOps
Der Begriff setzt sich aus „Dev“ (Development, Entwicklung) und „Ops“ (Operations, Betrieb) zusammen und vereint Menschen, Prozesse und Technologien, damit Kunden kontinuierlich hochwertige Produkte erhalten. Das beinhaltet den gesamten Wertfluss, von der Entwicklung zu Betrieb bis zum Kunden (Wikipedia).
Die enge Zusammenarbeit innerhalb der Teams ist eine Voraussetzung für DevOps. Die anfallenden Arbeiten müssen geplant und koordiniert werden. Im Home-Office ist das prinzipiell schwieriger als wenn alle Mitarbeitenden im Büro anwesend sind. Für DevOps spielen kulturelle Aspekte eine grosse Rolle. Die Sichtbarkeit der Arbeit, Transparenz und Informationsaustausch sind ebenfalls wichtige Punkte. In diesen Bereichen können Tools Unterstützung bieten, nicht nur in Bezug auf DevOps.
Was ist Azure DevOps
Früher war Azure DevOps auch als TFS (Team Foundation Server) bekannt, sozusagen ADFKATFS (Azure DevOps Formerly Known As Team Foundation Server, Abkürzung analog zu TAFKAP). Azure DevOps unterstützt Teams in jeder Lebenszyklus-Phase von Software-Anwendungen:
- Planen (Kanban Boards)
- Entwickeln (IDEs, Versionsverwaltung, Test, Integration)
- Bereitstellen (Orchestrierung, Kubernetes)
- Betreiben (Monitoring, Telemetrie)
In Azure DevOps können Organisationen definiert werden und jede Organisation kann wiederum mehrere Projekte verwalten. So kann die Unternehmensorganisation und das Projektportfolio abgebildet werden.
Ich habe mir die Phase der Planung ein bisschen näher angeschaut und das Kanban-Board ausprobiert. Mit Azure Board kann die Arbeit organisiert, priorisiert und visualisiert werden. Für die Planung stehen 4 verschiedene Prozess-Systeme zur Verfügung:
- Basic
- Agile
- Scrum
- Capability Maturity Model Integration (CMMI)
Das einfachste Prozess-System ist Basic. Es besteht aus den folgenden drei hierarchischen Work Item Typen:
- Epic (Portfolio Backlog, oberste Hierarchiestufe)
- Issue (Produkt Backlog)
- Task
Mit dem Basic Prozess System habe ich die Arbeiten für den CAS Leistungsnachweis (Blog und Transferarbeit) exemplarisch erfasst. Nachdem ein neues Projekt angelegt ist, kann das Kanban Board befüllt werden.
Kanban Board
Epics, Issues und Tasks werden im Board angelegt. Mehrere Issues können einem Epic zugewiesen werden, so ist eine hierarchische Gruppierung möglich. Issues können wiederum in mehrere Tasks aufgeteilt werden, um eine feinere Granularität zu erreichen. Es können Abhängigkeiten zwischen allen Items definiert werden, z.B. Vorgänger oder Nachfolger.
Backlog
Das Backlog ist eine andere Sicht auf die Items des Projekts. Die Items werden in Listenform dargestellt.
Sprint Backlog
Die Issues werden einem Sprint zugewiesen. Die zu erledigenden Arbeiten innerhalb des Sprints (Iteration) werden hier verwaltet.
Fazit
Home Office stellt ein Team vor Herausforderungen bezüglich Zusammenarbeit und Organisation der Arbeit. Mit Hilfe von Tools wie Azure DevOps, Jira etc. kann die Arbeit geplant und sichtbar gemacht werden und so die Zusammenarbeit von Teams unterstützen. Das ist nicht nun im Kontext von DevOps wichtig.