Derzeit arbeite ich mit einem Professor an meiner Universität zusammen, um neue Lehrpläne für die an meiner Hochschule angebotenen Kurse Software Engineering und Capstone Design zu entwickeln.
Bis vor kurzem verwendeten beide Kurse ausschließlich das Wasserfallmodell, weshalb die Schüler einen Großteil ihrer Zeit damit verbrachten, ausführliche Berichte zu verfassen. Auf viel Druck von mir beschloss mein Professor, Scrum im vergangenen Semester in den Lehrplan für Softwaretechnik aufzunehmen.
Die erste Hälfte des Semesters war immer noch wasserfallartig. Die Studenten schrieben 40-seitige Designberichte und Software-Spezifikationsdokumente. Mitte des Semesters mussten alle Teams eine Demo ihrer Anwendungen veröffentlichen. Zu diesem Zeitpunkt wechselte der Kurs mit zwei dreiwöchigen Sprints zu Scrum. Wir versuchen nun herauszufinden, wie wir den Wasserfall vollständig beseitigen und einen ausschließlich auf Scrum basierenden Lehrplan erstellen können.
Leider sind wir auf einige Inkompatibilitäten zwischen Scrum und den Studenten gestoßen:
- Tägliche Scrum-Meetings sind für Studenten nahezu unmöglich. Selbst während des Unterrichts ist es für Schüler unpraktisch, Scrum-Meetings abzuhalten, da der Professor normalerweise Vorlesungen hält.
- Das Schätzen von Punkten / Stunden ist schwierig, da die Schüler unerfahren sind und daher nicht genau vorhersagen können, wie lange etwas dauern wird.
- Scrum arbeitet am besten mit hauptberuflichen Entwicklern zusammen, Studenten jedoch nicht. Die Studenten widmen dem Kurs höchstens 15 bis 20 Stunden pro Woche, und die Organisation von Arbeitstreffen kann äußerst schwierig sein. Teams können bis zu 10 Schüler haben (und es gibt immer ein oder zwei Faulenzer).
- Professoren sehnen sich nach Dokumentation! Ich habe noch nichts von Scrum-Berichten gehört - nur die Rückstände und Burndown-Charts (von denen ich nicht sicher bin, ob sie ausreichen, um die Akademiker zu beruhigen).
- Die Schüler gehen oft davon aus, dass Agilität "direkt einspringen und ohne Rückblick mit dem Codieren beginnen" bedeutet. Dies führt zu einigen der schrecklichsten Codes, die man sich vorstellen kann. Aus diesem Grund suche ich nach einer Möglichkeit, das richtige Design durchzusetzen, ohne ein 50-seitiges Dokument oder einen Stapel von UML-Diagrammen zu benötigen.
Wie denken Sie, können mein Professor und ich angesichts dieser Probleme Scrum anpassen, um in einem akademischen Umfeld zu funktionieren (und sollten wir uns überhaupt mit Scrum beschäftigen)? Hat das Unterrichten des Wasserfallmodells noch einen Wert?
Vielen Dank im Voraus für jede Rückmeldung!
Antworten:
Ich würde zögern, Waterfall so schnell auf der ganzen Linie zu verwerfen.
Obwohl es sich um ein fehlerhaftes Modell für die eigentliche Erstellung von Softwaresystemen handelt, ist es kein schlechtes Lehrmodell, in jeder Phase des Lebenszyklus bewährte Vorgehensweisen zu vermitteln. Unabhängig vom Prozessmodell, das Sie auf das Projekt anwenden, führen Sie weiterhin Anforderungsengineering, Systemarchitektur und -design, Implementierung, Test, Freigabe und Wartung (einschließlich Refactoring und Erweiterung) durch. Der Unterschied besteht darin, wie diese Phasen organisiert und durchgeführt werden, aber alle Aktivitäten finden immer noch statt.
Ich würde argumentieren, dass Ihr Übergang von Waterfall zu Scrum in der Mitte des Projekts nicht die beste Idee ist. Ein Schlüssel zum Erfolg von Scrum ist ein langjähriges Projekt. Die ersten drei bis fünf Sprints bestehen darin, dass sich das Team auf eine Geschwindigkeit einstellt, den Prozess lernt und die Teamentwicklung durchläuft. Obwohl Sie die Bewegungen durcharbeiten, ist es zu diesem Zeitpunkt nicht wirklich Scrum. Darüber hinaus ist der Versuch, ein ausschließlich auf Scrum basierendes Curriculum zu erstellen, wahrscheinlich eine schlechte Idee, da Scrum kein Königsweg ist - es ist besser, Best Practices zu vermitteln, als eine einzelne Methodik. In der Belegschaft werden nicht alle Projekte Scrum verwenden. Tatsächlich würde Scrum in einigen Umgebungen den Erfolg des Projekts beeinträchtigen.
Sie haben bereits Probleme mit Scrum in einem akademischen Umfeld festgestellt, und einige davon sind nur schwer angemessen anzugehen.
In Ihrer Liste der Inkompatibilitäten steht außer Frage, dass das Abschätzen schwierig ist. Ja ist es. Die einzige Möglichkeit, die Schätzung zu verbessern, besteht darin, die tatsächlichen Werte zu schätzen und mit den Schätzungen zu vergleichen. Die Schüler sollten Größe, Zeit und Aufwand mit verschiedenen Mitteln (Handlungsstränge, Quellcode, Stunden, Seiten, Personenstunden) frühzeitig abschätzen, um nach Abschluss und Eintritt in die Belegschaft besser darauf vorbereitet zu sein.
Der Dokumentationsbedarf kann sowohl aus Sicht des Professors als auch aus Sicht der Studierenden angegangen werden. Die Lean-Ansätze verdeutlichen, dass Dokumentation, die weder für das Team noch für den Kunden von Nutzen ist, zeit- und kostenaufwändig ist. Es sind jedoch einige Unterlagen erforderlich, um einige Ziele sowohl der Studenten als auch des Professors (des Kunden / Kunden) für verschiedene Zwecke zu erreichen. Insgesamt scheint es eine Gelegenheit zu sein, Prozess-Tailoring und quantitatives Projektmanagement zu unterrichten (was auch bei agilen Methoden eine Rolle spielt).
In Bezug auf Scrum-Meetings und -Planungen fallen mir zwei Ideen ein. Das erste ist, dass dies darauf hinweist, dass Scrum möglicherweise nicht der beste Prozess für eine akademische Umgebung ist. Es gibt kein einzigartiges "bestes Prozessmodell" für Softwareprojekte, mit Faktoren wie Zeitplan, Personalausstattung, Sichtbarkeit und Erfahrung des Entwicklungsteams (unter anderem).
Insgesamt würde ich vorschlagen, Good Practices, Prozessanpassung und Prozessverbesserung gegenüber einzelnen Methoden hervorzuheben. Auf diese Weise sind Sie für jeden, der an den Kursen teilnimmt, am effektivsten. Sie können sie einer Vielzahl von Prozessmethoden aussetzen und die Best Practices für einen bestimmten Satz von Bedingungen verstehen.
Da Sie an der Erstellung eines Universitätslehrplans arbeiten, gebe ich einen allgemeinen Überblick darüber, wie der Lehrplan für Softwaretechnik an der Universität, an der ich teilgenommen habe, zusammenpasst.
Das war eine Einführung in die Softwareentwicklung, die das Projekt in einem Wasserfallmodell durchlief, wobei die Vorlesungen in jeder Phase unterschiedlichen Methoden zur Durchführung der Aktivitäten dieser Phase entsprachen. Die Teams durchliefen die Phasen im gleichen Tempo. Diese klar definierten Grenzen haben sich gut in das Unterrichtsmodell für eine Gruppe von Menschen eingepasst, die keine oder nur minimale Erfahrung in der Erstellung von Software in Teams haben. Im Verlauf des Kurses wurde auf andere Methoden verwiesen - verschiedene agile Methoden (Scrum, XP), Rational Unified Process und Spiral Model - hinsichtlich ihrer Vor- und Nachteile.
In Bezug auf die Aktivitäten gab es spezielle Kurse zur Diskussion von Requirements Engineering, Architektur und Design (zwei Kurse - einer mit Fokus auf Detail-Design mit objektorientierten Methoden und einer mit Fokus auf Systemarchitektur), eine Reihe von Kursen mit Fokus auf Design und Implementierung verschiedener Systemklassen (Echtzeit- und eingebettete Systeme, Unternehmenssysteme, gleichzeitige Systeme, verteilte Systeme usw.) und Softwaretests.
Es gibt auch drei Kurse, die sich mit Softwareprozessen befassen. Software-Engineering-Prozess- und Projektmanagement mit Schwerpunkt auf Best Practices für die Verwaltung eines Softwareprojekts in Bezug auf mehrere Methoden. In einem zweiten Kurs werden Messungen, Metriken und Prozessverbesserungen unterrichtet (Schwerpunkt CMMI, Six Sigma und Lean). Schließlich gibt es einen Prozesskurs, in dem die agile Softwareentwicklung (Scrum, Extreme Programming, Crystal, DSDM) anhand eines Projekts unter Verwendung der Scrum-Methodik vermittelt wird.
Das Schlusssteinprojekt war ein zweivierteljährliches Projekt, das für eine Sponsorfirma durchgeführt und vollständig vom studentischen Projektteam unter Anleitung der Sponsoren und eines Beraters der Fakultät durchgeführt wurde. Jeder Aspekt der Durchführung des Projekts unterliegt den Studenten und unterliegt den von den Sponsoren festgelegten Einschränkungen. Die einzigen von der Universität vorgegebenen Fristen waren eine Zwischenpräsentation in der Mitte (10 Wochen) des Projekts, eine Abschlusspräsentation am Ende und eine Quad-Poster-Präsentation kurz vor dem Ende. Alles andere war Sache des Sponsors und des Teams.
quelle
Als ich meinen Master in Software Engineering machte, gab es einen Kurs namens Software Process, der sich mit XP, Scrum und anderen agilen Ansätzen befasste. Im Wesentlichen bildete die gesamte Klasse eine hypothetische Softwarefirma und wurde angewiesen, während der Dauer des Kurses eine ziemlich ausgefeilte Software zu entwickeln. In den Vorträgen ging es um Dinge wie XP-Übungen, Stand-up-Meetings usw.
Die meisten Schüler haben von diesen Techniken gehört und sind normalerweise daran interessiert, sie anzuwenden. Natürlich gibt es keine Möglichkeit, das Team dazu zu zwingen , tatsächlich iterativ zu arbeiten usw. Aber das war eigentlich der Punkt des Kurses: Sich selbst zu motivieren, viele kurze Besprechungen abzuhalten, iterativ zu arbeiten, fortlaufend zu bauen usw., weil Sie schnell feststellen, dass dies der Fall ist Es ist einfach der einfachste und zuverlässigste Weg, mit einer Gruppe von Menschen und in kurzer Zeit etwas Wertvolles zu produzieren.
Eine Sache, an die Sie sich erinnern sollten: Stellen Sie sicher, dass Sie den Kunden gut spielen, und ändern Sie einige wichtige Anforderungen in der Mitte. Oder "vergessen", sie anfangs zu erwähnen.
quelle
Ist der Zweck, die Entwicklung zu erleichtern oder Scrum zu lernen, oder - meine Vermutung - beides? Ich würde kürzere Sprints in Betracht ziehen, um den Lernprozess zu beschleunigen.
Vielleicht können Sie tägliche Stand-ups durch eine weniger strenge Form ersetzen, wenn dies für die Schüler am besten funktioniert. Außerdem muss nicht jeder an jedem Meeting teilnehmen.
Die Schätzung der Kalenderzeit ist aus den gleichen Gründen noch schwieriger :-) Bei Story Points schätzen Sie nicht, wie lange etwas dauern wird: Sie schätzen seine relative Größe. Dauer wird abgeleitet.
Vielleicht mit kleineren Teams versuchen? 10 liegt für ein Scrum-Team auf der oberen Skala. Ich denke, Sie können auch mit nicht vollzeitverteilten Teams erfolgreich sein, aber es ist natürlich schwieriger! Lassen Sie das eine Lektion für sich sein.
Scrum schreibt nicht vor, welche Art von Dokumentation erforderlich ist. Tatsächlich sind nicht einmal Burndown-Diagramme obligatorisch. Dies bedeutet nicht, dass Dokumentation verboten ist: Das Team sollte die erforderlichen Unterlagen einschließlich der von Professoren als notwendig erachteten Berichte vorlegen.
Nicht nur Studenten :-) Die meisten Scrum-Teams verwenden XP-Methoden wie TDD (Test Driven Development) und Refactoring: Ich schlage vor, dass Sie dies in die Lehrpläne aufnehmen.
Zumindest aus zwei Gründen: Erstens ist es nicht sicher, ob Ihre Schüler Scrum in ihrem Arbeitsleben einsetzen werden, und zweitens ist es meiner Meinung nach einfacher, die Essenz der agilen Entwicklung zu verstehen, wenn Sie damit etwas zu vergleichen haben.
quelle
Es klingt ein bisschen ähnlich wie ein Thema, das ich einmal aufgenommen habe.
Einige Gedanken:
quelle
Mein Rat ist, zu trennen und zu isolieren, was Sie unterrichten wollen. Wenn es sich um einen Kurs in Software-Design oder ein anderes Thema der Software-Entwicklung handelt (Algorithmen oder so weiter), konzentrieren Sie sich darauf. Wenn das Einbeziehen von SCRUM ein Hindernis ist (wie Sie andeuten), dann kümmern Sie sich nicht darum.
Wie wir das gemacht haben, als ich auf dem College war, war ein Kurs für agile Methoden. Der Kurs beinhaltete ein Entwicklungsprojekt, das entweder mit SCRUM oder XP durchgeführt werden sollte. Die eigentliche Software, die geliefert werden sollte, war trivial, da der Schwerpunkt des Kurses nicht auf Programmierung oder Design, sondern auf dem Prozess lag. Die Argumentation hier ist die gleiche wie die, warum Sie "Hardcore" -Softwareentwicklungsfächer nicht mit Methodikfächern kombinieren sollten, da die einen die anderen in den Schatten stellen und die Schüler in diesem Stadium meist nicht bereit oder nicht fähig genug sind, beides zu behandeln.
Die Ergebnisse des Kurses waren Sprint-Planungsberichte, wöchentliche Fortschrittsberichte, Rückblicke, Abnutzungsberichte sowie jede Woche mindestens zwei Sitzungen, die ein Gruppen-Stand-up / Scrum-Meeting beinhalteten, in dem die TAs zirkulierten und zuhörten.
Dieser Kurs beinhaltete auch TDD (Test Driven Development) und das hat sehr gut funktioniert.
Das ist es mit Sicherheit. Viele Unternehmen verwenden Versionen dieses Modells für ihre Projekte (PPS, RUP, PROPS usw.). Viele finden (meiner Meinung nach zu Recht), dass "reines" SCRUM für die laufende Wartung besser geeignet ist als Projekte. SCRUM (und Agile im Allgemeinen) erfordern eine gewisse Flexibilität im Umfang und die Möglichkeit, Anforderungen und Lieferung auf dem Weg zu verhandeln. Nicht alle Projekte funktionieren so, sie sind binär: Liefern Sie X zum Zeitpunkt Y, alles andere ist ein Fehler.
quelle
Der Sinn eines akademischen Software-Engineering-Kurses besteht darin, grundlegende Phasen des Software-Lebenszyklus zu lehren - Analyse, Design, Implementierung, Testen unter Verwendung aktueller Software-Qualitätsstandards anstelle des regulären Qualitätscodes für Hausaufgaben.
Es ist jedoch sinnvoll , die Praxis anhand eines Prozesses ohne Wasserfall zu demonstrieren. Aus den Gründen, die Sie dachten, dass SCRUM kein geeigneter Prozess ist, belegen die Studenten viele Kurse pro Semester, viele haben auch echte Jobs während des Studiums, daher können Sie nicht 100 haben % engagierte Teammitglieder oder führen tägliche Meetings durch.
Verwenden Sie stattdessen einen weniger agilen iterativen Prozess wie UP (RUP).
Ändern Sie die Anforderungen zwischen den Iterationen, um den Wert im Vergleich zum Wasserfallprozess anzuzeigen. Dies zeigt den Unterschied zwischen UP und dem Wasserfall und weist auf den Wert der Verwendung agiler Prozesse hin.
Die anschließende Demonstration des Wasserfalls ist überflüssig, da UP alle Stufen des Wasserfalls abdeckt.
Da die Semester relativ kurz sind, wären 2 kleine Iterationen realistisch.
Bieten Sie den Schülern einen breiten Rahmen für die Verwendung, da der Schwerpunkt dieses Kurses nicht auf der Tiefe der Implementierung liegen sollte, sondern auf anderen Kursen. Stattdessen sollten Codierungsstandards und Unit-Tests im Vordergrund stehen.
In den Vorlesungen wird die Theorie einiger Prozesse vermittelt, z. B. Wasserfall, UP, XP, SCRUM und Kanban (zusammen mit anderen Themen, z. B. Schreibanforderungen, UML, Testen usw.).
Für Studierende, die den oben genannten Kurs absolviert haben, ist ein separater SCRUM-Workshop ein Wahlfach, das während des Sommersemesters zwei Wochen in Vollzeit dauert.
quelle
Scrum funktioniert, wenn Sie ein Semesterprojekt haben und die Klasse in 6 bis 10 Personengruppen unterteilt ist. Dann können Sie die letzten 10 Minuten der Unterrichtszeit dem Scrum-Meeting widmen.
quelle