Do-it-yourself-Tutorials und weitere interne Bildungsprogramme Platform-Engineering-Lerninhalte für mehr Produktivität

Ein Gastbeitrag von Serhii Vasylenko * 8 min Lesedauer

Anbieter zum Thema

Platform Engineering kann durch den SB-Aspekt die Entwicklung von Anwendungen deutlich beschleunigen. Wichtig ist allerdings, dass Software-Ingenieure und Platform Engineering Teams vernünftig zusammenarbeiten.

Beispiel einer User Journey.
Beispiel einer User Journey.
(Bild: Grammarly)

Jüngste Studien bestätigen die zunehmende Verbreitung von Platform Engineering: Das Marktforschungsunternehmen Gartner erwartet, dass bis 2026 vier von fünf Software-Unternehmen sogenannte „Platform Engineering Teams“ aufgebaut haben werden. Diese agieren dann als interne Anbieter von wiederverwendbaren Services, Komponenten und Werkzeugen für Softwareentwicklung.

Die aktive Zusammenarbeit zwischen Plattform-Engineering-Teams und Software-Ingenieuren kann für das Unternehmen von enormen Vorteil sein. Sie trägt beispielsweise dazu bei, die Geschwindigkeit und Qualität der Softwareentwicklung zu verbessern, Prozessherausforderungen und Ablaufbeschränkungen zu reduzieren und die Produktivität der Entwickler und Entwicklerinnen zu erhöhen.

Platform Engineers fungieren dabei als Partner für andere Entwicklerteams im Unternehmen. Deshalb müssen sie ein solides Verständnis der verschiedenen zugrundeliegenden Technologien haben, die in DevOps-Prozesse eingebettet sind.

Software-Ingenieure sollten derweil über Kenntnisse der internen Plattform-Toolsets verfügen, wie ein Platform-Engineering-e-Book von CircleCI verrät. Sie versetzen jeden Ingenieur in die Lage, sein Produkt mit Hilfe der internen Toolsets einfach zu erstellen, zu entwickeln und zu warten. Die Kenntnis der internen Plattform-Toolsets hilft den Entwicklern, während des gesamten Entwicklungszyklus Eigenverantwortung und Autonomie zu übernehmen und weniger abhängig vom Plattform-Team zu sein.

Herausforderungen beim Skalieren von Engineering-Teams

Kein Wachstum kommt ohne gewisse Herausforderungen. Besonders beim Skalieren von Engineering-Teams möchte ich folgende Kerngedanken festhalten:

  • In wachsenden Softwareunternehmen, die ihre Entwicklerteams skalieren, ist es sehr wichtig, einen reibungslosen Onboarding-Prozess für die neuen Engineers bereitzustellen.
  • Je schneller sie sich mit den internen Systemen und Tools vertraut machen, desto eher können sie mit ihren Aufgaben beginnen.
  • Komplexe interne Systeme und Infrastrukturen stellen eine Herausforderung für schnelles Lernen dar. Häufig tritt der Fall ein, dass neue Software-Ingenieure lange nach Antworten suchen und sich oft an die Kollegen aus dem Engineering-Platform-Team wenden müssen, um Unterstützung und Rat zu erhalten.
  • Insbesondere für Remote-First- oder verstreut arbeitende Teams mit einem hohen Anteil an asynchroner und schriftlicher Kommunikation stellt dies eine große Herausforderung dar.

Um diese Hürden zu meistern, hat das Engineering Platform Team bei Grammarly ein internes Bildungsprojekt ins Leben gerufen: die „Platform University“. Sie hilft jedem im Unternehmen, schnell die Grundlagen der genutzten Drittanbieter-Dienste und des Cloud-Hosting zu erlernen, sowie die Werkzeuge, die wir für verschiedene Infrastrukturaufgaben entwickelt haben, besser zu verstehen.

Dieser Artikel behandelt daher hilfreiche Tipps und Tricks, wie dieses Programm entwickelt wurde, wie dessen Themen gestaltet und die Tutorials vorbereitet sind. Das Teilen der Erfahrungen soll für Entwicklungsteams nützlich sein, die ihren Entwicklungsprozess beschleunigen und die Zugänglichkeit sowie das Verständnis der internen Entwicklertools mithilfe eines eigenen Bildungsprogramms erleichtern möchten.

Warum braucht ein Unternehmen ein Engineering-Platform-Bildungsprogramm?

Die Vielfalt der Dienstleistungen, die ein Engineering Platform Team anbieten kann, ist groß und kann viele selbst entwickelte Tools umfassen. In unserem Fall waren das beispielsweise:

  • Ein kundenspezifisches System zur Log- und Metriken-Aggregation, das es uns ermöglicht, Observability-Daten von Millionen von Anwendungen zu erfassen
  • Eine CI/CD-Infrastruktur, auf der Tausende von Pipelines laufen, um die Bereitstellung unserer Back-End- und Front-End-Dienste zu unterstützen
  • Automatisierungsdienste zur Erstellung von Cloud-Konten, die bereits mit allen benötigten Ressourcen gefüllt sind
  • Slack-Bots und -Anwendungen, die den Austausch von Informationen über die Netzwerktopologie im gesamten Unternehmen erleichtern
  • Templating-Tools für ein schnelles und vorhersehbares Bootstrapping der neuen Umgebungen, die für die Entwicklung und das Hosting eines neuen Dienstes erforderlich sind
  • CLI-Tools, die lokal und in CI/CD zur Verwaltung und Deployment von Backend-Diensten verwendet werden

Darüber hinaus verwenden wir verschiedene SaaS- und selbst gehostete Softwareprodukte sowie Tools für das Infrastrukturmanagement. Das Platform-Team schafft Abstraktionen um diese Tools herum, um den Arbeitsaufwand zu verringern, der von anderen Engineering-Teams für die Entwicklung und Wartung der zugrunde liegenden Dienste verlangt würde.

Es ist nicht verwunderlich, dass wir in den letzten Jahren mit einer schnell wachsenden Softwarefirma immer mehr Fragen in unserem Slack-Channel des Engineering Platform-Teams erhielten, in dem wir On-Call-Support anbieten. So entstand die Idee, eine Self-Service-Bildungsplattform zu schaffen. Wir haben gründlich recherchiert und die Ingenieure gebeten, eine Umfrage auszufüllen, um herauszufinden, welche Informationen sie benötigen und wie sie diese erhalten möchten. Daraufhin haben wir die Platform University ins Leben gerufen und sie im März 2021 gestartet.

Eintrag in der sogenannten Platform University.
Eintrag in der sogenannten Platform University.
(Bild: Grammarly)

Die Platform University stellt eine Reihe von Online-Tutorials dar, die grundlegendes Wissen über die Nutzung der internen Platform-Angebote, Automatisierungs- und Management-Tools vermitteln. In schriftlichen Tutorials und Videovorlesungen werden verschiedene Themen behandelt, z. B. die Nutzung unserer Infrastruktur, die Wartung der bereitgestellten Anwendungen und die Einrichtung der Observability. Sobald Ingenieure die Grundlagen beherrschen, wird die weitere Suche und das Überfliegen der Dokumentation einfacher und produktiver.

Wie legt man fest, was Ingenieure wissen müssen?

Wenn man an einem internen Weiterbildungskurs für Ingenieure arbeitet, besteht eine der größten Herausforderungen darin, zu definieren, welche Themen in das Programm aufgenommen werden müssen. Hier haben wir einige Tipps, wie man dies angehen kann:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

In einem ersten Schritt kann man interne Nachforschungen anstellen und seine Kollegen aus den Entwicklungsteams befragen. Das Ziel dieser Interviews ist es, eine „User Journey“ zu definieren. Diese „User Journey“ sollte jeden Schritt veranschaulichen, den ein Entwickler durchlaufen muss, um sein Projekt zu deployen und es produktionsreif zu machen

Beispiel einer User Journey.
Beispiel einer User Journey.
(Bild: Grammarly)

In diesem beispielhaften Fall ist der Benutzer für das Platform Engineering Team ein Entwickler aus anderen Teams im Unternehmen.

Ein weiterer Grund für die Erstellung einer User Journey ist die genaue Darstellung von Dingen, die automatisiert werden können oder sollten. Durch die Identifizierung von Pain Points hat diese Karte unserem Team auch geholfen, Self-Service-Lösungen für andere Teams zu entwickeln. So ist beispielsweise das Einrichten und Konfigurieren von CI-Runnern oder die Log-Speicherung jetzt automatisiert, da diese Aufgaben sowohl für die Benutzer als auch für das Engineering Platform-Team zeitaufwändig waren.

Mit diesen Informationen in der Hand können die Themen für die Tutorials ausgewählt werden. Die visuelle Darstellung hilft dabei, die Lerneinheiten zu einer vollständigen User Journey oder einem Miniprojekt zusammenzustellen, bei dem jede Übung ein Teil des Gesamtbildes ist.

Wie können die Tutorials aussehen?

Das Entwickeln von Lernprogrammen ist eine Herausforderung. Es gibt keine „Einheitsgröße“, solche Programme so zu erstellen, damit sie allen gefällt. Unser Ansatz war es, die Lektionen einfach und dennoch anspruchsvoll zu gestalten sowie gleichzeitig sicherzustellen, dass jedes Tutorial ein klares Ziel hat.

Die Tutorials fügen sich zu einer Geschichte zusammen, die das Gefühl vermittelt, an einem ganzen Projekt zu arbeiten und nicht nur an einzelnen Bruchstücken. Wenn ein Ingenieur jedoch tiefer in ein bestimmtes Thema eintauchen möchte, hat er eine detailliertere Dokumentation zur Verfügung, die nach Dienst oder Tool gruppiert ist.

Jedes Tutorial hat ein eigenes Lernziel, eine definierte Reihe von Voraussetzungen und eine Liste der nächsten Schritte. Dies hilft dem Benutzer, jedes Mal, wenn er ein Tutorial beginnt oder beendet, den Zusammenhang zu bewahren.

In unserem Fall stellen wir Codeschnipsel und Diagramme zur Verfügung, um die wesentlichen Teile zu erklären. Allerdings kopieren und fügen wir keinen Text aus der Dokumentation der beteiligten Dienste ein. Das trifft auf unsere eigenen oder die eines Dritten zu. Stattdessen stellen wir Links zu den Dokumentationen bereit, um die Tutorials nicht mit Erklärungen zu überladen. Nach dem KISS-Prinzip verwenden wir einfache Überschriften, Absätze mit zwei bis drei Sätzen und ein Minimum an farbigem bzw. gestyltem Text.

Hier ein paar Tipps: Es ist wichtig, in Tutorials zu erklären, wie Cloud-Dienste oder Infrastrukturmanagement-Tools verwendet werden, aber noch wichtiger ist es, zu zeigen, wie alle Tools und Produkte zusammen in verschiedenen Anwendungsfällen und Szenarien verwendet werden können. Ingenieure lernen oft am besten durch Üben und Experimentieren. Man kann also von einer speziellen Umgebung ausgehen, in der Entwickler üben können: Kreieren, zerstören und Dinge erforschen, ohne die Entwicklungs- oder Produktionsumgebung zu gefährden.

Vorteile eines „Platform Engineering“-Kurses im eigenen Unternehmen

Kurz gesagt tragen solche Programme dazu bei, dass die Entwickler weitreichende betriebliche Verantwortung und Kontrolle haben – ganz nach dem Motto: „You build it, you own it“. Natürlich sollten Ingenieure nicht jedes Detail über die Infrastruktur oder die Tools wissen müssen, um zu verstehen, was sie bauen. Wenn sie jedoch mit einem Selbstlernkurs und strukturierten Tutorials ausgestattet sind, die jederzeit leicht zugänglich sind, können sie sich auf die Entwicklung konzentrieren.

Besonders Entwicklerteams genießen hier folgende Vorteile:

  • Bevor ein Code deployt wird, können die Ingenieure mithilfe von Hintergrundwissen über interne Systeme von Anfang an eine zuverlässigere Lösung entwickeln.
  • Nach dem Code-Deployment sind die Code Owners in der Lage, viele ihrer eigenen Infrastrukturanforderungen zu erfüllen, z. B. die Überwachung und Skalierung. Dies ist hilfreich, da der Code Owner die besonderen Bedürfnisse und Anforderungen seines Projekts am besten kennt.
  • Entwickler sind in der Lage, viel schneller auf Störungen zu reagieren: Wenn man weiß, wie etwas funktioniert, kann man Probleme viel besser beheben.
  • Entwicklerteams erhalten mehr Autonomie und sind weniger von anderen Teams abhängig, sodass das Unternehmen neue Projekte und Funktionen schneller einführen kann.

Ein zusätzlicher Vorteil solcher Self-Service-Schulungsprogramme besteht darin, dass die Engineering Platform-Teams nicht mehr dasselbe Thema mehrfach für verschiedene Teams behandeln müssen, was ihnen die Möglichkeit gibt, sich auf die Entwicklung weiterer Tools für die Entwicklerproduktivität zu konzentrieren!

Der Kurs ist entwickelt – wie geht es weiter?

Sobald das Lernprogramm und die Tutorials entwickelt sind, ist es sinnvoll zu überlegen, wie sie am besten in den Lernpfad und insbesondere in das Onboarding der neuen Entwickler integriert werden können. Eine Möglichkeit ist es, diesen Kurs als obligatorische Onboarding-Aufgabe für Neueinsteiger aufzunehmen. So können sich diese im Selbststudium mit den Dingen vertraut machen, die sie für ihre Arbeit benötigen.

Wichtig ist es auch, die Kommentare und Rückmeldungen zu den Tutorials ständig zu überwachen, z. B. durch regelmäßige Umfragen, um den Supportbedarf zu ermitteln. Die Umfrageergebnisse lassen sich dann zur Aktualisierung des Programms und anderer interner Angebote des Engineering Platform-Teams nutzen.

* Über den Autor
Serhii Vasylenko hat die Position des Technical Lead Manager bei Grammarlyy inne. Nachdem er mehr als 12 Jahre lang sowohl als Ingenieur als auch Manager arbeitete, ist er nun für die Überwachung von End-to-End-CI/CD-Lösungen für Software-Ingenieure im Unternehmen verantwortlich. Darüber hinaus spielt Serhii eine aktive Rolle bei der Entwicklung von Projekten zum Wissensaustausch und Produktivitäts-Tools als Teil des Developer Experience Teams.

Bildquelle: Grammarly

(ID:49778439)