Montag, 4. Juni 2012

Wann sollte man von der Agile Software Entwicklung fern bleiben


Hallo liebe Leser,

In den letzten drei Beiträgen zum Thema ‚Software entwickeln mit agilen Methoden’ war der Fokus klar auf den Punkten, die für dieses Vorgehen sprechen. In diesem Abschnitt will ich noch auf ein paar wenige Punkte eingehen, die eventuell dagegen sprechen umzusteigen.

An dieser Stelle kann oder vielleicht muss man sich fragen:
Wofür agile Methoden in der Software Entwicklung?

Ein zählendes und gewichtiges Argument ist mehr Geld verdienen! Dies auf der Basis eines verbesserten Produktes und kürzerer Entwicklungszeit!
Ich bin überzeugt, es gibt Organisationen, die mit der hergestellten Softwarequalität zufrieden sind, dennoch einen Wechsel ins Auge fassen um zu schauen was verbessert werden könnte.

Aber diskutieren wir jetzt über Punkte, die Argumente liefern es nicht zu tun. Während meiner Berufszeit habe ich schon einige Argumente gehört, die eingeworfen wurden nicht umzustellen. Diese kurz beschrieben:
-       Es bringt alles zu sehr durcheinander und ist zu umfangreich.  
-       Es ist zu viel um umzustellen, zu komplex, zu reguliert oder zu verteilt.

Ich bin der festen Überzeugung, wenn man ins Thema eintaucht, das ‚Doing’ in übersichtliche Pakete unterteilt und sich die Leute konstruktiv den neuen Prozessen und Ablauforganisation stellen, sind kontra Argumente nicht mehr relevant. Zugegeben wenn neue Prozesse, Rollen und Abläufe eingeführt oder stark geändert werden, führt das zu etwas Unübersichtlichkeit und ein wenig Verwirrung.
Wenn aber die Mitarbeiter und das Management nicht bereit sind Arbeitskultur und markante Veränderungen auf der Ebene der funktionalen und instrumentalen Organisation vorzunehmen, sollte man fern bleiben von einem Wechsel auf agile Software Entwicklung.

Ihr seht viele Argumente habe ich nicht, die dagegen sprechen. Vielleicht habt Ihr welche?

Lasst ruhig mal einen Kommentar auf diesem Blog liegen ...


Dann hoffe ich, dass Ihr Spass habt beim Lesen und bis bald,
   Marcello

Freitag, 18. Mai 2012

Agile Software Entwicklung kombiniert mit Scrum


Hallo liebe Leser,

Hier eine mögliche Zielformulierung für ein Projekt mit dem Ziel: Agile Softwareentwicklung!

Konkret:
Die Softwareentwicklung soll durch eine Kombination von Srcum- und Agile-Entwicklungsvorgehensmodell effizient, übersichtlich und transparent gestaltet sein. Durch den Scrum-Ansatz sind die Entwicklungsprozesse empirisch, inkrementell und iterativ. Der Agile-Ansatz hält die Prozesse flexible und schlank. Somit fallen Verwaltungsaspekte gering aus, der Fokus liegt auf funktionierender Software, das Reagieren auf Veränderungen findet statt, das Planen ist iterativ und auf die aktuelle Situation möglich. Der Kunde ist permanent im Aktivitätszyklus integriert.   

Messbar:
Das Risiko für Projekte wird minimiert durch das runterbrechen der Komplexität (übersichtliche Arbeitspakete durch dynamic Systems Develompment Model DSDM oder Features-Driven Development). Der Aufwand über das gesamte Projekt wird reduziert. Somit wird das Fertigstellen eines komplexen Projektes unter einhalten von Budget und Zeit möglich.

Erreichbar:
Um die anspruchsvollen Ziele zu erreichen müssen die Betroffenen detailliert informiert und ausgebildet werden. Daraus wird klar kommuniziert, dass Prinzipien der Vorgehensmodelle eingehalten werden müssen.
Sind die Teammitglieder auch bereit sich selber zu organisieren und auf das Ausführen von exklusiven Rollen zu verzichten, dann ist eine Kombination von Scrum- und Aglie-Vorgehensweise absolut möglich.  

Ergebnisorientiert:
Sie erreichen eine Umsatzsteigerung im Unternehmen durch eine Senkung der Projektkosten. Erreicht wird dies durch mehrfaches nutzen von vorhandenen Ressourcen im Entwicklungsteam und Folgeaufträge durch Kundennähe.

Time:
Diesen Zustand kann erreicht werden durch ein Projekt in ca. sechs Monaten.  

Bis bald,
 Marcello

Was sind Erfolgsfaktoren in der agilen SW-Entwicklung ?


Hallo liebe Leser,

In diesem Abschnitt machen wir uns Gedanken zu den Erfolgsfaktoren – wie angekündigt - bei der Softwareentwicklung mit agilen Methoden. Dabei erscheint es mir als sehr wichtig auch die Kehrseite der Medaille zu diskutieren. Denn auch mit den agilen Methoden wird nicht alles perfekt Verlaufen, weder am Anfang noch später!

Deshalb ist es wichtig –abgestimmt auf die Mitarbeiter und Organisation (im operativen, normativen und strategischen Umfeld) - die Erfolgsfaktoren und deren Wechselwirkung akribisch zu analysieren. Diese Untersuchung und Festlegung der Schlüssel-Faktoren sollte bei der Initialisierung oder am Anfang des Projektes gemacht werden.
Der ‚schnelle Erfolg’ ist sicher einer der zentralen Schlüssel-Faktoren. Er bringt die Kritiker zum Schweigen – vorläufig - und hält die Motivation somit auch die Energie der Beteiligten, aufrecht. In enger Wechselwirkung mit dem ‚schnellen Erfolg’, stehen die Mitarbeiter und deren Einstellung zum Vorhaben. Da ist es wichtig, dass sie nicht zu den grössten Kritikern gehören! Um das zu verhindern ist im Vorfeld Überzeugungsarbeit zu leisten: Das Thema und seine Vorteile in kleinen Schritten näher zu bringen. Ein entscheidender Faktor für die Mitarbeiter ist auch die Disziplin. Die Vorgaben/Prozesse sind einzuhalten. Ist das nicht der Fall wird es chaotisch oder zu organisiert (die Agilität ist dann weg!).

Vorwärts gehen, auch wenn’s mal nicht so rund läuft  ist ebenfalls sehr wichtig. Denn je mehr Erfahrung eingespielt wird, desto mehr Erfolg lässt sich erzielen. Mit Erfolg lässt es sich einfacher Arbeiten und Führen.
Die Definition der Arbeitspakete wie die Reihenfolge der Verarbeitung ist entscheidend.

Die Grösse / Umfang der Pakete soll gering gehalten werden. Coding und Testing sind in einem Schritt (Exetreme Programming). Vorteil: Der Code kann in kleinen Stücken dem Produkt zugefügt werden. Somit wird der Überblick bewahrt und die Qualität bleibt hoch (stabil, wenig Bugs). Dabei sind die Arbeitspakete auch nach ihrer Komplexität zu strukturieren. Zu beginnen ist mit jenem Bündel, das den geringsten Schwierigkeitsgrad aufweist. Somit ist der Einstieg ins Thema nicht zu heftig und bei den komplexen Brocken weist der Entwickler schon so viel implizites Wissen auf, dass die Lösung einfach erscheint. Da setzt ein wichtiger Punkt der agilen Softwareentwicklung ein: Die Codierer sind in der Lage sämtliche Arbeitspakete zu bearbeiten! Somit wird der Stapel an Paketen abgearbeitet, wie beim Ticketsystem auf der Post!

Der Kunde kann einfach in die Entwicklung seines Systems eingebunden werden, indem ihm z.B. bis zur Ticket Nummer 45 das Produkt vorgeführt, zum Testen oder für den operativen Gebrauch übergeben wird.

Die oben dargestellten Keyfactors beeinflussen das Planen wie das Dokumentieren. Es wird den Zyklen / Prozessen angepasst. Was bedeutet, dass nur dokumentiert wird was auch benötigt und in kurzen Schritten geplant wird. Das Projekt wird somit sehr flexibel. Requirement-Engineering ist dadurch auch während der Entwicklung von Software möglich.

Legen wir zum Schluss den Fokus auf mögliche Randbedingungen, die nicht unerheblich für die Firma sein können. Wenn die Strukturen in einem Unternehmen auf Agilität umgestellt werden, hat das auch einen Einfluss auf das Zusammenspiel zwischen Unternehmen, Kunden und Mitarbeiter.
Die Kultur, das Aufgabenfeld und die Arbeitsmethoden können für einzelne Mitarbeiter ändern. Mit Schulungen, Gesprächen und aufzeigen von Chancen sollte dem Rechnung getragen werden.


Bis zum nächsten Bericht, gute Zeit und wenig Stress,
 Marcello

Montag, 14. Mai 2012

Einstieg ins Thema


Hallo liebe Leser und willkommen auf meinem Blog bei Google. Seit einigen Monaten beschäftige ich mich im Selbststudium rund um die Themen der Softwareentwicklung.

Nichts ist so stetig wie die Veränderung!
Wenn bis heute etwas Bestand hat, gehört diese Aussage dazu. Dieser Blickwinkel lässt agile Softwareentwicklung erahnen oder als logisch betrachten. Ist das so? Die Anfänge können zurückverfolgt werden bis in die 90er Jahre. In dieser Zeit entwickelte man das ‚Extreme Programming’ mit dem Ziel schneller und flexibler Programmcode zu schreiben als im klassischen Stil.
Welche Argumente und Resultate stehen im Raum um die eigenen Entwicklungsprozesse  zu ersetzten oder zu optimieren? Mit jenen der agilen Prozesse? Kennt man doch genügend Praxisbeispiele, die belegen, wie schwierig das Aufbrechen oder verschieben von bestehenden Softwareentwicklungsstrukturen ist (umdenken der Mitarbeiter, Know-How-Transfer wie auch die Gefahr n= n + 1 Methoden zu erhalten).
In meinem Blog mit dem Thema ‚Agile Softwareentwicklung’ wähle ich einen Ansatz, der welcher auf viele Organisationsstrukturen passt. Dabei setzte ich Scrum als Organisations-Framework und ‚Extreme Programming’ ein. Die Kombination von beiden passt nach meinen Erfahrungen auf viele Organisationsstrukturen.
Die Alternativen, die sich aus den Kombinationen ableiten lassen, sind zahlreich und sollten vor einem definitiven Entscheid gut überlegt sein – inklusive Nebenwirkungen.
Welches sind denn nun die Erfolgsfaktoren  bei agiler Softwareentwicklung ?
Bevor ich auf die Frage eingehe, setzen wir den Fokus auf die Frage: Warum eigentlich ‚agile Softwareentwicklung’? Es gibt genügend Literatur, die dieses Thema behandelt und somit diese Frage im Detail erläutert.  Deshalb kurz ein paar Erfahrungspunkte aus meiner Sicht. Das Planen und die Administration werden auf die Zyklen des Programmings angepasst (agiles Management). Womit ich meine: Der Code zum Produkt wird in kleinen Stücken an das ‚Produkt’ angefügt – somit auch das Planen. Das birgt einige interessante Vorteile: Schnelles, stabiles Requirement, überschaubare Software Units (geringe Komplexität). Daraus entsteht ein  stabiles System und optimale Reaktionszeit. Dann lässt sich weiter ableiten, dass die Software eine Skalierbarkeit erreicht, womit die Betriebskosten tief gehalten werden können (Bugfixing, Systemerweiterungen).
Das Resultat – was kaum zu 100% erreichbar ist – regelmässige Auslieferung von Softwarepaketen, hohe Qualität, innovative und flexible Mitarbeiter und zuletzt das Wichtigste: Zufriedene Kunden! Dieses Resultat wird gesteuert durch die damit verbundenen Prozesse. Welche natürlich auf die agilen Methoden Einfluss nehmen.

Liebe Leser, die Frage nach den Erfolgsfaktoren in der agilen Softwareentwicklung habe ich in diesem Abschnitt nicht beantwortet. Er folgt im nächsten Eintrag, bestimmt!
Bis dann, gute Zeit und Grüsse,
 Marcello