Tech
Automatische WordPress Deployments auf DigitalOcean App PlatformEine step-by-step Anleitung, um aus einem GitLab.com Repository einen Container deployen kann
… und wie dies vermieden werden kann. Denn zugegeben: Softwareprojekte haben es in sich. Wir sprechen von der Realisierung komplexer Geschäftsideen mit grossem Innovationscharakter. Und Innovation beinhaltet zumeist eine unbekannte Komponente.
Um der grossen «Unbekannten» einen Namen zu geben, habe ich einige Learnings aus den letzten Jahren zusammengetragen.
Wir erhalten laufend Projektanfragen für Softwareprojekte und freuen uns über jede einzelne. Dennoch müssen wir auch abwägen, ob wir der passende Anbieter dafür sind – dies zum Schutz für den Kunden wie auch für uns. Dabei gibt es Faktoren wie die Projektgrösse, aber auch technologische Aspekte, wie zum Beispiel ob wir Erfahrung in dem Bereich haben und ob unsere Technologien in die Systemlandschaft des Kunden passen, zu beachten. Früher oder später rächt sich der Entscheid, ein inadäquates Softwareprojekt durchzuführen.
Wir haben für uns eine kleine Guideline niedergeschrieben, um zu entscheiden, ob ein Projekt zu uns passt.
Einer Idee müssen klare Ziele folgen. In der Regel sind die besten Geschäftsideen klar, verständlich und idealerweise in einem Satz erklärt. Wir sollten uns daher die Frage stellen, was wir mit diesem Software-Projekt erreichen wollen. Sollten zu Beginn keine klaren Ziele existieren, kann sich das ganze Projektteam in Details verlieren.
Mit dem Verrennen kommt dazu, dass wir Ungeklärtes gerne interpretieren. Dies ist für Projekte nicht ideal. Damit so wenig wie möglich interpretiert wird, ist es nötig, messbare Ziele zu definieren. So wird die Komplexität abschätzbar und der Kunde erhält ein Produkt, welches seinen Vorstellungen gerecht wird.
Je früher Ziele festgehalten werden und als Leuchtturm für das Projektteam dienen, desto erfolgversprechender kann ein Projekt umgesetzt werden. Welche Fragen eignen sich für die Zieldefinition? Anbei ein kleiner Auszug:
Dennoch muss regelmässig der Scope geöffnet werden und mittels kreativen Workshop- und Designphasen mit neuen Ideen gespielt werden. Diese öffnen den Weg, um in nächsten Iterationen neue Funktionen in die Software zu bringen und diese zu verbessern.
Planung ersetzt Zufall durch Irrtum. Irrtum führt im Projektwesen häufig zu hohen, unvorhergesehenen Kosten. Deshalb ist es wichtig, möglichst früh die verschiedenen Phasen im Projekt zu planen.
Wenn die Zeit knapp wird, entsteht Druck. Wir haben für uns eine Methode gefunden, wie wir regelmässig Zwischenziele festlegen und falls nötig eine Kursänderung einleiten können. Dabei behalten wir immer den Fokus auf der Hauptzielsetzung des Projekts. Wir empfehlen unseren Kund:innen Alternativen in der Umsetzung, Zwischenresultate oder ab und an auch eine Verschiebung eines Deployments, wenn die Umstände es nicht anders zulassen.
Wir setzen auf Meilensteine, die wir im Projekt erreichen wollen. Weiter eignen sich Sprints in Iterationen, welche den Sprint-Scope definieren. Jede Einheit wird im Sprint-Planning-Meeting begutachtet und mit einer Priorität versehen. Zudem gewichten wir Tickets nach einem Punktesystem, welches die Komplexität der Aufgaben beschreibt.
Aus meiner Erfahrung weiss ich, dass es ebenfalls kontraproduktiv sein kann, wenn ein Projekt bis ins letzte Detail geplant ist. Dies ist enorm aufwändig und in Anbetracht dessen, dass wir nie alle Faktoren zu Beginn kennen, auch vielfach unrealistisch. Gerade in der Softwareentwicklung kann vieles nicht minuziös bis zum Release geplant werden. Ein Grund dafür ist, dass wir immer auf neue Herausforderungen stossen. Diese benötigen Zeit, sollen kritisch hinterfragt und sauber gelöst werden. Wir sehen die Entwicklung als kreatives Handwerk – und weil dem so ist, ist sie nicht auf die Minute steuer- und planbar.
Agile und iterative Projektmodelle haben sich in vielen Branchen zum Standard etabliert. Diese dürfen aber nicht falsch verstanden werden: Ein agiles Projektvorgehen bedeutet, sich an den Zielen auszurichten und Arbeit sinnvoll zu planen, ohne jedes Detail im Vorfeld zu kennen. Solange der Gesamtplan nicht ins Wanken kommt, sollen neue Ideen Platz haben.
Stick to the plan – but keep it simple.
In unserer Erfahrung geht es in einem agilen Prozess darum, Ressourcen planen zu können und fixe Meilensteine festzulegen. Dies bringt unseren Kunden und uns den grössten Mehrwert. Auf eine stundengenaue Fertigstellung von Aufgabe XY verzichten wir lieber.
Aus der Praxis:
Es ist unabdingbar, dass wir gemeinsam die Features und Aufgaben priorisieren, ergo den Fokus legen. Die Hauptaufgabe der Priorisierung folgt dem Prinzip des MVPs. Ein Minimal Viable Product reduziert die nutzbringenden Funktionen und Eigenschaften auf das Wesentliche. Von diesem Punkt aus kann iterativ optimiert werden. Unsere Kunden können mit diesem Arbeitsansatz während der Entwicklung die Richtung ändern und zu attraktiveren Konditionen den Mehrwert ihres Produktes beeinflussen.
Wir achten bei der Planung und der Entwicklung darauf, dass alle Aspekte einer Funktion gleichmässig erfüllt werden. Ein MVP ist:
Der minimale Funktionsumfang, um eine erste Einführung zu machen, wird mit dem Kunden festgelegt.
Auch bei bestehenden Projekten ist es uns ein Anliegen, dass wir bestehende Codes kontinuierlich optimieren können. Das heisst, dass wir den Fokus manchmal auch darauf legen, einen Schritt zurück zu treten und Bestehendes beleuchten. Software-Updates sorgen dafür, dass die Software stabil, sicher und kosteneffizient bleibt.
Wer mit Software in Berührung kommt weiss, dass gewisse Use-Cases funktionieren müssen. In der Softwareentwicklung gibt es eine Vielzahl von Ebenen, die vor dem Deployment auf die produktive Instanz geprüft werden müssen. Wir unterscheiden im Schnitt sechs Testphasen:
Es gibt viele weitere, zusätzliche oder alternative Stufen, je nach dem, wo der Fokus des Produkts liegt. Ein ausgewogenes Testing stellt sicher, dass die Endanwender:innen keine bösen Überraschungen erleben.
Meine Erfahrung zeigt, dass das Thema Software-Testing meistens zu wenig Beachtung erhält. Die Gründe dafür sind unterschiedlich: Es fehlt an Budget, es fehlt an Zeit oder an Ressourcen. Der Schuss geht jedoch nach hinten los, wenn die Qualität nur an einem Augenpaar hängt. Es ist in unserem Prozess unabdingbar, dass unsere Kund:innen ihre Zwischenergebnisse unter die Lupe nehmen. So entsteht bereits vor dem Go-Live ein tiefes Verständnis dafür, was auf ihr Business zukommt.
Der 6. Testphase darf mehr Beachtung geschenkt werden: Ein digitales Produkt lässt zu, dass es sehr rasch beim Endkunden getestet werden kann. Aus dem User-Acceptance-Testing kristallisiert sich heraus, ob die umgesetzte Idee funktioniert und gefällt. Wenn sie fehlschlägt, kann die Idee nach dem MVP-Ansatz validiert, verändert und adaptiert werden. Das zeitnahe und ehrliche Feedback der Benutzergruppe bietet in meinen Augen den grössten Mehrwert für eine Software.
Also, mehr Mut für einen raschen Go-to-Market, für Test-Phasen, für bewusstes Scheitern (und gleich verbessern) – wir können davon so viel lernen!
Das Projektwesen ist so umfangreich, wie es facettenreich ist. Und das macht es so spannend! Ich bin der Überzeugung, dass wir mit kontinuierlicher Optimierung weiterkommen. Meine Learnings zusammengefasst:
Desirée Moor
Head of Project Services
Eine step-by-step Anleitung, um aus einem GitLab.com Repository einen Container deployen kann
Wie man die Sicherheit der eigenen Domain in wenigen Schritten erhöhen kann.