8

Agile Softwareentwicklung – eine weitere Lanze gebrochen

lanzeAgile Softwareentwicklung scheint nun endlich aus den Kinderschuhen zu sein. Wenn selbst eine Firme wie Microsoft sich bei der Entwicklung von Windows 7 auf dieses Vorgehen festlegt. So ist es derzeit bei Spiegel-Online nachzulesen. Die Redmonder setzten vor drei Jahren auf das Thema Extreme Programming und versuchten dadurch die Fehler der Vergangenheit zu vermeiden.

So ist Microsoft neben Google und ebay ein weiteres großes Unternehmen, das auf Agilität in der Softwareentwicklung setzt.  Dass ich ein großer Freund von Agilen Methoden bin, hat der ein oder andere vielleicht bereits bemerkt. Für mich der Schlüssel zu guter Software, da wir uns in kleinen Schritten dem Ziel nähern. Leider kenne ich aber immer noch Unternehmen, die strikt nach den Phasen der Softwareentwicklung (Analyse, Design, Realisierung und Test) eine SAP-Einführung planen.

Das große Problem dabei entsteht, durch die Aussicht alles Technische umsetzen zu können  und die Softwareentwicklung wie den Bau eines Hauses zu sehen.  Zumindest hat Microsoft damit eine weitere Lanze für agile Softwareentwicklung gebrochen. Ich hoffe andere Unternehmen folgen dem Beispiel und lassen die Phasenmodelle dort wo sie hingehören – in die 70er und 80er.

0

Scrum-Anti-Patterns

rugby

Eben erst hatte ich Zeit mir die neue  iX anzusehen und mir spring sofort der Artikel auf Seite 110 in die Augen. Ein Beitrag über agile Softwareentwicklung speziell mit Scrum – insgesamt lesenswert. Was mir aber besonders gefallen hat, ist die Liste der Scrum-Anti-Patterns:

  1. Der Scrum Master weist Aufgaben zu und zerstört so das sich selbst steuernde und organisierende Team.
  2. Der Sprint wird von außen gestört. Es werden neue Aufgaben eingefügt oder Änderungen an den gewählten User Stories vorgenommen.
  3. Es finden keine Review Meetings statt.
  4. Es findet keine Retrospektive statt.
  5. Es gibt keine regelmäßigen Daily Standup Meetings.
  6. Der Product Owner hat keine ausreichende Kompetenz und nimmt seine Rolle nicht wahr.
  7. Es gibt kein „1 to 1 Agreement“, also keine persönliche Vereinbarung zwischen dem Product Owner und dem Team.
  8. Die Beteiligten sind nicht ausreichend geschult.
  9. Meetings sind nicht Timeboxed.
  10. Anstatt Features werden Aktivitäten erfasst.
  11. Man schickt ein paar Scrum Master zum Training und denkt, nun werde alles gut.

Diese Liste ist bei weitem noch nicht vollständig. Mir fallen da spontan noch ein paar Ding wie „Bug-fix Sprints“ oder die aktive Beteiligung des Management am Daily Scrum ein.

Fallen Ihnen vielleicht noch ein paar schöne Scrum-Anti-Patterns ein? Ich bin gespannt.

(Bildquelle: Stock Exchange, johnmckeag)

0

Ist Programmieren Sekretärinnen-Arbeit?

Jens Coldewey beschreibt in seinem Artikel “Certified Scrum Developer und implizites Wissen” sehr anschaulich wie implizites Wissen eigentlich aufgebaut wird und welche Gefahren in  Zertifizierungen von Programmierern  lauern.

Er geht davon aus, dass das der Erfolg von Scrum auch zum Teil auf den Zertifizierungen der Scrum-Alliance beruht, was ich genau so sehe.  Weiterhin geht er davon aus, dass ein unfähiger Scrum Master nicht so großen Schaden im Projekt anrichten kann wie es die nicht so talentierten Programmierer könnten.  Dieser Schaden könnte dann auf die Scrum-Zertifizierungen oder gar Scrum zurückfallen.

Dies hat mich dazu bewegt mich mit dem Thema nochmals auseinanderzusetzen. Tatsächlich sehe ich es auch so, dass schlechter Code das Projekt weit zurückwerfen kann, nämlich genau dann wenn der Programmierer aufgrund seiner Leistungen (meist wird ein anderer Grund gefunden) aus dem Projekt ausscheidet und die verbleibenden oder nachfolgenden Programmierer ein Refactoring  durchführen müssen.

Faktisch habe ich in meinem Studium ebenfalls erlebt, dass einigen Professoren die Meinung vertreten: “Programmieren ist Sekretärinnen Arbeit.” Insgesamt kommt es aber sicherlich auf das Projekt und das Umfeld an. Ich habe Programmierer kennen gelernt, die nicht mehr geleistet haben als fertige Konzepte in Code zu gießen.

Da wir uns hier aber in agilen Projekten bewegen, werden solche Programmierer sicherlich nicht daran beteiligt sein.

Dass Programmieren als niedere Tätigkeit angesehen wird, liegt  einerseits  an den Hochschulen, die es so lehren, andererseits aber auch an den Unternehmen, die diese “homogene Tätigkeit” in  Niedriglohnländer verlegen.

Für mich entscheidend  liegt es aber auch an den Programmierern selbst, die wie Administratoren ihre Tätigkeiten nicht angemessen kommunizieren und zu wenig Eigenmarketing betreiben. So werden IT-Spezialisten von den Fachabteilungen häufig als arrogant und überheblich angesehen.  Da man sich nicht mit den “Standard Nerds” auseinandersetzen möchte, wird deren Tätigkeit eben degradiert.

Also, Informatiker aller Länder redet mehr mit anderen Menschen!

(Bildquelle: Stock Exchange, Zela)

2

Der Administrator und das agile Projektteam

Der letze Beitrag zur agilen Systemadministration enthielt einen Vorschlag wie man die agilen Methoden auf das Tagesgeschäft eines Administrators übertragen kann.

Nun versuche ich einen Überblick zu geben wie Systemadministratoren in agilen Projekten involviert werden können. Dabei sind offensichtlich drei Aspekte relevant:

  • Zusammenarbeit mit Menschen
  • Iteratives Vorgehen
  • Beraten und Coachen

Diese Punkte sind in meiner Sysadmin-Zeit immer wieder aufgetreten und haben sich in Projekten erfolgreich bewährt.

Punkt 1: Zusammenarbeit mit Menschen.
In (agilen) Projekten ist es häufig erforderlich, dass die Administratoren mit ihrem Wissen das Projektteam unterstützen.  Leider gibt es Vertreter dieser Zunft, die ständig versuchen das Projektteam zu manipulieren und ihre eigenen Regeln getreu dem Motto: “Ich bin root, ich darf das” durchzusetzen. Dabei bedienen sie sich häufig starrer Regeln und Policies (ITIL sei Dank). Hier zeigt sich der grundsätzliche Konflikt zwischen Projektteam und Serviceteam. Die einen wollen ihr Projekt erfolgreich zu Ende bringen (da stören diese Richtlinien eben). Und die Anderen müssen das operative Tagesgeschäft samt Rechteverwaltung sicherstellen.

Daher stammt vermutlich auch das alte Klischeedenken, dass der Administrator der natürliche Feind des Entwicklers ist. Vielmehr muss hier auch dem Admin daran gelegen sein, das Projekt erfolgreich zu beenden und nicht zu behindern.

Punkt 2: Iteratives vorgehen.
So wie das Projektteam arbeitet, muss auch der Administrator iterativ arbeiten.  Das bedeutet, dass die Systeme zuerst grundsätzlich installiert werden und in Folgeschritten die User angelegt und berechtigt werden. Eine komplette Berechtigungsliste kann man hier noch nicht erwarten. Auch kann es sein, dass Systeme während einer langen Projektlaufzeit aktualisiert werden müssen, weil das Projektteam die neuen Funktionalitäten dringend benötigt, oder das Netzwerk aktualisiert werden muss, da die Bandbreite nicht ausreicht.

Punkt 3: Beraten und Coachen.
Hier geht es darum den Entwicklern die Richtlinien und Policies zu erläutern, die für den operativen Betrieb gelten; sie von der Einhaltung der Richtlinien zu überzeugen.  Der Kampf ist bereits verloren, wenn der Administrator versucht die Regeln einfach durchzusetzen. Insgesamt gilt es aber auch die bestehenden Richtlinien selbst immer wieder zu hinterfragen und zu prüfen, ob sie tatsächlich dienlich oder hinderlich sind.

Ebenso müssen dem Projektteam die Zusammenhänge der IT-Infrastruktur erläutert werden. Dies ist insbesondere dann interessant, wenn die IT-Architektur ausschließlich von dem Team festgelegt wird.

Fazit:
Gerade wenn in Projekten agil gearbeitet wird, ist es erforderlich die agilen Werte für die Zusammenarbeit auch zu leben. Das gilt insbesondere für den Urkonflikt zwischen Systemadministratoren und Programmierern.  Allerdings sollte nicht nur der schnelle Projekterfolg im Auge gehalten werden, sondern auch die Gesamtheit der Maßnahmen, durch die ein stabiler und störungsfreier IT-Betrieb möglich wird.