Verantwortung basiert auf Vertrauen. Nur Mitarbeiter, die den Prozessen, ihren Fähigkeiten, Tools, anderen Teammitgliedern und der Architektur, auf der sie entwickeln, vertrauen, können letztlich Verantwortung übernehmen.
Teams
Wir glauben an moderne und agile Entwicklungsmodelle, was den Aufbau cross-funktionaler Teams zur Steigerung der Produktivität bedarf.
Fähigkeiten
“Never stop learning" und „jeder kann alles“ beschreiben unser Vorgehen zur Weiterbildung und -entwicklung unserer Mitarbeiter am besten. Als Trainingscenter können wir unseren Mitarbeitern sowohl interne als auch externe Weiterbildungsmöglichkeiten anbieten.
Architektur
Eine solide und wartbare Architektur ist als technologische Basis unabdingbar. Unsere Erfahrung zeigt, dass sich bspw. ROCA (resource orientated component architecture) hervorragend für die entkoppelte Entwicklung eignet. Zudem folgen wir dem “Security by Design” Paradigma. Dabei werden bereits beim Design der Architektur und Prozesse Sicherheitsstandards und Maßnahmen beachtet – und nicht erst gegen Ende des Projekts.
Code Conventions und Patterns, vom geschriebenen Code, Style Sheets bis zu Commit Nachrichten ins SCM, ermöglichen dem ganzen Team, die Arbeit der Teammitglieder nachzuverfolgen.
Prozesse
Innerhalb unserer Teams ist die Qualitätskontrolle kein optionaler Baustein, sondern ein integraler Bestandteil eines Entwicklungsprojekts. Der QA Verantwortliche ist dabei für die Einhaltung der Qualitätsrichtlinien verantwortlich. Der QA Engineer ist daher genauso wie ein Entwickler, ein unabdingbarer Bestandteil einer User Story. Für eine effektive und konsistente Projektarbeit ist darüber hinaus ein hoher Grad an Automatisierung erforderlich.
Wie bringen wir Personen, Tools, Workflows und Prozesse im Rahmen von DevOps zusammen?
Personen
Wir bilden unsere Mitarbeiter zu T-shaped Developer aus. Ein T-shaped Developer hat mind. ein Fachgebiet, in dem er herausragend ist. Darüber hinaus hat er eine breitgefächerte Expertise und kann daher unterschiedliche Aufgaben in einem agilen Entwicklungsprojekt übernehmen.
Tools
Wir arbeiten mit einer “agile tool-chain” für die Automatisierung unserer Entwicklungsprozesse. Diese Tools sind bei uns stark ineinander integriert und arbeiten – vorwiegend virtualisiert - nahtlos zusammen. Es dauert bei uns heute bspw. nur noch 15 Minuten, um für einen Kollegen eine definierte Entwicklungsumgebung auf seiner lokalen Maschine einzurichten.
Workflows und Prozesse
Bei der Umsetzung von Softwareprojekten achten wir immer darauf, Software so oft und früh wie möglich zu integrieren, um Fehler zu reduzieren und die Qualität zu maximieren.
Unser höchstes Ziel dabei ist, jederzeit in einem Software Entwicklungsprozess einen release-fertigen Stand des Projekts zu haben.
Dabei versuchen wir stets, das große Projekt in viele kleine Pakete zu schneiden, schnell auszuliefern und frühzeitig das Kundenfeedback einzuholen. Unsere Prozesse basieren dabei auf Best Practices unterschiedlicher Methoden wie Scrum, Kanban, ITIL und CMMI.
Wie läßt sich der Erfolg in DevOps Projekten messen?
In DevOps Projekten lassen sich Service Levels definieren, von welchen man die entsprechenden KPIs ableiten kann. Dazu gehören beispielsweise die Verfügbarkeit des Teams (KPI: %), Continuous Delivery (KPI: Häufigkeit von Deployments, erfolgreiche Deployments), System Verfügbarkeit (in %), Prozess Automatisierungsgrad (in %) oder die Lieferzeit (in Stunden oder Tagen).
Alle gemessenen KPIs haben dabei einen Einfluss auf die zukünftigen Prozessverbesserungen, da Erfahrungswerte stets in Prozessverbesserungen einfließen.
Eine Herausforderung dabei ist, die richtigen KPIs zu finden und diese als Entscheidungsgrundlage für zukünftige Verbesserungen zu verwenden. Die Frage, die man sich dabei immer stellen muss, ist folgende: Sind die identifizierten Faktoren vollständig und haben sie einen Einfluss auf die KPIs?
Klingt einfach. Ist es aber nicht immer.