Agile Methoden und Methoden für Anfänger - Beispiele für agile Softwareentwicklung und agiles Projektmanagement

Agile ist eine Methode zur Herangehensweise an die Softwareentwicklung. Es besteht aus verschiedenen Frameworks wie SCRUM oder Kanban, mit denen Entwicklungsteams ihr Produkt kontinuierlich aufbauen, testen und Feedback einholen können.

Agile besteht aus vier Grundprinzipien:

  1. Individuen und Interaktionen über Prozesse und Werkzeuge
  2. Arbeitssoftware über umfassende Dokumentation
  3. Kundenzusammenarbeit über Vertragsverhandlungen
  4. Antworten auf Umstellung nach einem Plan

Ich werde diese Prinzipien später noch einmal aufgreifen und sie sinnvoller verstehen. Um dies zu tun, ist es wichtig, einen Schritt zurückzutreten und die zuvor verwendeten Softwareentwicklungspraktiken zu verstehen.

Wasserfall

Die Entwicklung von Wasserfällen ist ein sehr linearer Ansatz zum Aufbau eines Produkts. Es gibt wenig bis gar keinen Raum für Feedback oder Iteration, bis das Produkt vollständig erstellt und getestet ist.

So funktioniert es: Teams verbringen Wochen (und manchmal Monate) damit, Produktanforderungsdokumente zu erstellen.

Bevor Code tatsächlich geschrieben wird, stellen Produktmanager, Analysten und Designer ein umfangreiches Dokument zusammen, in dem die Produktanforderungen äußerst detailliert beschrieben werden.

Um es gelinde auszudrücken, dies ist ein langer und mühsamer Prozess, bei dem unweigerlich einige Dinge übersehen werden.

Hier ist ein einfaches Gedankenexperiment. Denken Sie an die Google-Suche oder einen Client-E-Mail-Finder.

Versuchen Sie nun, sich das Anforderungsdokument für diese Produkte vorzustellen.

Zweifellos werden wichtige Dinge übersehen. Man kann sich einfach nicht vorstellen, wie sich diese Produkte im Laufe der Zeit entwickeln werden.

Wenn Sie ein Produkt erstellt haben - als Solo Builder oder als Mitglied eines Teams - können Sie sich wahrscheinlich auf diese Behauptung beziehen.

Wenn alles vereinbart ist, werden die Spezifikationen an das Engineering-Team übergeben, das das Produkt dann nach Spezifikation erstellt, qualitative Daten nutzt und Daten und Eingaben quantifiziert.

Wenn alles codiert ist, beginnt der Test.

Wenn es sich um ein komplexes Produkt handelt, kann das Testen und Beheben von Fehlern Wochen oder Monate dauern, da das gesamte Produkt einer strengen Überprüfung unterzogen werden muss. Wenn Tester und Produktmanager die Testanforderungen abzeichnen, kann das Produkt an die Produktion geliefert werden.

Es gibt eine Reihe von Mängeln bei der Entwicklung von Wasserfällen, und hier sind einige.

Fehlende eingebaute Feedback-Mechanismen

Was ist, wenn das Entwicklungsteam die Spezifikationen genau befolgt und sich herausstellt, dass es nicht so überzeugend ist, es zum Leben zu erwecken, wie das Produktteam gedacht hat? Oder noch schlimmer, was ist, wenn das Spezifikationsdokument einen Fehler enthält?

In der Wasserfallentwicklung kennen Sie die Antwort auf diese Fragen erst, wenn das Produkt bereits erstellt wurde.

Produktentwicklung kann zu hohen Fixkosten führen. Wenn das Produkt nicht funktioniert, können diese Kosten zu versunkenen Kosten werden.

Versunkene Kosten sind der Feind des Erbauers, da versunkene Kosten Kosten sind, die bereits angefallen sind und nicht erstattet werden können.

Was ist, wenn sich die Roadmap ändert?

Das passiert die ganze Zeit. Dies geschieht auf dem Computer, auf dem Sie diesen Artikel lesen, in Ihrem Unternehmen und bei großen und kleinen Technologieunternehmen.

Was ist, wenn sich die Roadmap ändert und das Team seine Aufmerksamkeit auf etwas anderes richten muss? Unter Wasserfall bleibt ein unbrauchbares Produkt übrig. Denken Sie: Starrheit.

Wenn Sie Ihre Fixkosten nicht in etwas Flexibles verwandeln können, bleibt Ihnen eine große Rechnung und es gibt nicht viel zu zeigen.

Alle engagierten Arbeiten, stressigen Fristen, Whiteboard-Kalender und späten Nächte führen nicht zu den gewünschten Ergebnissen zu Beginn des Projekts.

Das Produkt sammelt Staub, bis es endgültig versendet wird

Anstatt inkrementelle Verbesserungen über einen bestimmten Zeitraum an die Produktion zu liefern, wartet die Wasserfallmethode darauf, das gesamte Produkt bis zum Ende zu liefern.

Dies ist zwar ein vernünftiger Ansatz für den Bau eines Autos, aber kein guter Ansatz für Software.

Software ist im Gegensatz zu Autos flexibel in den Design-Eingaben.

Die Leute können keine halb produzierten Autos benutzen. Wir verwenden jedoch ständig halb erstellte Software.

Geben Sie Agile ein

Agile hilft bei der Lösung dieser Probleme, indem es Produktentwicklungsteams ermöglicht, kontinuierlich Funktionen zu entwickeln, die einen Mehrwert bieten. Außerdem können Teams regelmäßig Feedback zu ihrer Arbeit erhalten und bei Bedarf Änderungen vornehmen.

Mit dem Einsatz agiler Methoden liefern Teams konsistent und vorhersehbar kleine Codeteile schnell an die Produktion.

Sobald sie eine Funktion abgeschlossen haben, die einen Mehrwert bietet, testen sie sie und geben sie für die Welt frei. Dies ist ein iterativer Ansatz zum Aufbau von Technologien.

Anstatt Monate zu benötigen, um ein Endprodukt zu erstellen und einen End-to-End-Test durchzuführen, ermöglicht die agile Entwicklung den Teams, kontinuierlich kleinere Teile des Endprodukts zu erstellen und diese im Laufe der Zeit der Produktion hinzuzufügen.

Dies bedeutet, dass das Testen schneller geht, da Sie nur die Kompatibilität des neuesten Codes testen. Dies bedeutet auch, dass Benutzer und Stakeholder zufriedener sind, da sie die neuesten Produktverbesserungen kontinuierlich sehen und nutzen können.

Betrachten Sie beide Ansätze als Beispiel für den Umbau einer Küche. Nehmen wir an, es wird sechs Monate dauern, bis der Umbau gut abgeschlossen ist.

Waterfall schlägt vor, dass der Auftragnehmer und seine Crew die gesamte Küche wieder aufbauen und dem Kunden nach Ablauf der sechs Monate die gesamte Küche zeigen.

Während die Arbeit in der gleichen Zeit erledigt wird, bleibt der Besitzer im Dunkeln. Einfache Fragen wie, wie es läuft, bleiben weitgehend unbeantwortet. Am schlimmsten ist, dass die Eigentümer bis zum Ende keine Teile der Küche benutzen können.

Mit Agile würde der Auftragnehmer stattdessen alle paar Wochen herausfinden, was sein Team tun könnte, und dann seinem Kunden erlauben, es zu sehen und zu verwenden, während er den Rest umgestaltete.

Vielleicht können sie die Schränke im ersten Monat, die Arbeitsplatten im zweiten Monat ersetzen und im dritten Monat einen neuen Kühlschrank und Herd installieren. Kein schlechtes Ergebnis für beide Seiten!

Beim zweiten Ansatz erhält der Eigentümer den Vorteil, Teile der Küche zu nutzen, bevor alles fertig ist. Anstatt dass der neue Ofen nur dort sitzt und Staub sammelt, wird er tatsächlich verwendet, sobald er verwendet werden kann.

Und vielleicht möchte der Küchenbesitzer einen Schrank gegen ein Regal austauschen?  

Der Auftragnehmer kann diese Änderung nun zumindest vor Ablauf der sechs Monate planen und dem Eigentümer mitteilen, wie sich dies auf die Projektlaufzeit auswirkt.

Anscheinend können beide Parteien zusammenarbeiten und transparent kommunizieren, um sicherzustellen, dass die richtigen Ergebnisse und Arbeiten durchgeführt werden.

Dies sind einige der vielen Vorteile von Agile. Beide Parteien sind besser dran.

Versuchen Sie, diese Lektion voranzutreiben, während Sie auf freeCodeCamp neue Entwicklungsfähigkeiten erlernen und Ihre Fähigkeiten auf Projekte anwenden.

Betrachten wir einige andere Beispiele in der Software-Welt

Wenn wir uns die vier Prinzipien von Agile noch einmal ansehen, können wir nun Beispiele für die Anwendung von Agile in der realen und digitalen Welt finden.

Ich hoffe, Sie können jetzt sehen, wie diese Prinzipien einen direkten Angriff auf den Wasserfallprozess darstellen.

Prinzip Nr. 1: Individuen und Interaktionen über Prozesse und Werkzeuge

Ein solider Prozess und eine Reihe von Werkzeugen sind in Agile sehr wichtig. Die Bewertung von Personen und Interaktionen über Tools hinweg ermöglicht jedoch mehr Wertschöpfung und Output.

Einzelne Teammitglieder können innovativ sein.

Anstatt die Leute zu zwingen, sich an strenge Ideen und Spezifikationen zu halten, können Sie ihnen mehr Bandbreite zum Experimentieren geben.

Ein Teil der Platzierung von Personen über Werkzeugen besteht darin, mit neuen Arbeitsabläufen zu experimentieren. Ein Beispiel, das für Innovationen in der agilen Softwareentwicklung relevant ist, ist Codec, ein Computerprogramm, das einen digitalen Datenstrom oder Signale digital codiert oder decodiert.

Der H266 / VVC-Codec verwendet etwa die Hälfte der Daten zum Streamen von 4K-Videos. Und es gilt als die effizienteste Codierungslösung für das zukünftige 4K- und sogar 4K-VR-Echtzeit-Streaming.

Wie wurde diese Entdeckung gemacht? Es wurde von Leuten gemacht, die Agile verwenden, um Probleme mit der Videokomprimierung zu lösen.

Insbesondere wurde es gemacht, weil Einzelpersonen die Freiheit hatten, über einen bestimmten Zeitraum hinweg zu bauen, zu testen, zu experimentieren und Innovationen zu entwickeln. Sie wurden nicht angewiesen, die Küche von Grund auf neu zu bauen und in sechs Monaten wiederzukommen.

Sie machten kleine Schritte in die richtige Richtung. Dieses Ergebnis ist aufschlussreich.

Hier ein zweites Beispiel: Als Lastpass von LogMeIn übernommen wurde, war LogMeIn ebenso an der Technologie interessiert wie an der Designkultur, die Lastpass zum Erstellen von Produkten implementiert hatte.

Was für eine Kultur war das? Eine, die Agile Priorität einräumte.

Agile bringt Produkte nicht nur schneller auf den Markt, sondern schafft auch kreative und synergetische Ergebnisse, die wertvoll sind.

Wertschöpfung ist eingebettet in die Kultur von Agile.

Prinzip Nr. 2: Arbeitssoftware über umfassende Dokumentation

Dieser sollte jetzt offensichtlich sein. Schreiben Sie statt ausführlicher Spezifikationen und Planungen nur ein paar Codezeilen, die funktionieren.

Probier es aus. Holen Sie sich Feedback dazu. Es versenden.

Dann mach es noch einmal.

Wiederholen.

Ein äußerst relevantes Beispiel für diesen Wiederholungsprozess finden Sie in Forms on Fire.

Sie haben Software entwickelt, um die mobile Datenerfassung zu vereinfachen. Sie haben nicht ihre gesamte Firma geschrieben, bevor sie gestartet sind. Sie haben ein paar Codezeilen geschrieben, getestet und versendet.

Als sie in Schwung kamen, beschleunigten sie ihre Tests und iterativen Schritte.

Und sie wiederholten, was funktionierte und warfen, was nicht. Die Ergebnisse sprechen für sich.

Prinzip Nr. 3: Zusammenarbeit der Kunden bei Vertragsverhandlungen

Agile fördert eine schnelle Feedbackschleife, um Kunden- und Stakeholder-Feedback zu erhalten.

Was gibt es Schöneres, als rückwärts zu arbeiten, was echte Benutzer und Kunden wollen?

Ich habe einen Business-Mentor, der geraten hat, anstatt zu analysieren, was Kunden durch endlose Planung wollen, es einfach zu halten. "Mildern Sie Ablenkungen", sagte er.

Ich habe in freeCodeCamp über das KISS-Prinzip geschrieben, und dieser Rat gilt sicherlich auch für Agile: Bauen Sie etwas Kleines und sehen Sie, ob es Ihren Kunden gefällt.

Wenn ja, mach weiter.

Prinzip Nr. 4: Reaktion auf Umstellung nach einem Plan

Schnelle Rückkopplungsschleifen führen zu schnellen Änderungen und Anpassungen. Dies macht Agile für Entwicklungsteams so großartig.

Deshalb sollten Sie es annehmen.

Roadmaps ändern sich immer, dies ist eine bekannte Konstante. Mithilfe agiler Methoden können Teams auf Änderungen reagieren, indem sie auf Kundenfeedback hören und die erforderlichen Anpassungen vornehmen.

Es gibt Zeiten, in denen auf Änderungen zu reagieren bedeutet, Ihr Produkt anzupassen oder Ihre Meinung zu Benutzern oder der Konkurrenz zu ändern.

Ein klassisches Beispiel, das agile Studenten im E-Commerce-Bereich betrachten können, ist der Verkauf bei Amazon. Wie stellen Sie sich schnell auf den Wettbewerb ein? Eine Möglichkeit besteht darin, Gated Communities aufzubauen oder verschiedene Produkteinführungsstrategien auszuprobieren.

Es ist ratsam, taktische und formbare Lösungen einzusetzen.

Es gibt ein wunderbares Sprichwort: „Wir können die Windrichtung nicht ändern. Wir können nur unsere Segel einstellen. “

Wenn ich an Agile denke, denke ich an dieses Sprichwort.

Bei Agile geht es um Lernen, bei Agile geht es um Lehren. Bei Agile geht es um Flexibilität.

Sie können Agile in Ihrer täglichen Arbeit üben oder Online-Kurse belegen, um sich weiterzuentwickeln.

Einige Leute sind klug genug, um vorherzusagen, was ihre Kunden wollen. Sie wissen, in welche Richtung der Wind weht.

Für uns Sterbliche ist Agile jedoch eine Methode, um unsere Mängel beim Verständnis der Kundenwünsche zu umgehen.

Es ist das System, mit dem wir unsere Segel ständig anpassen können.