Dienstag, 13. Mai 2008

Orbit-iEX Zürich

Mein Arbeitgeber, die namics ist auch dieses Jahr an der Orbit-iEX Zürich mit einem Stand vertreten. Es gibt Referate zu den Top 11 Internet-Themen und einen eindrucksvollen Stand, wie ich finde! 100% namics, das ist auf jedenfalls einen Besuch wert.

Marcello Leonardi, ein Arbeitskollege mit dem ich unser erstes agiles Projekt bei der namics bestritten habe, wird bei der Orbit-iEX Zürich ein Referat über Software-Innovationsprojekte halten:

"Können Software-Innovationsprojekte gefördert, geplant und geführt werden?", Mittwoch, 21. Mai 2008, 09:15 – 10:45 Uhr, Anmeldung
Marcello und ich werden auf der Orbit-iEX Zürich am namics Stand anwesend sein. Sie können uns direkt ansprechen oder Termine am Stand in der namics Lounge vereinbaren mit uns vereinbaren.

Wir freuen uns auf viele Kontakte und interessante Gespräche.

Treffen Sie uns...

100% namics
Orbit-iEX Zürich
20.-23. Mai 08
Messe Zürich, mit der Tram 11 oder 4 vom Hauptbahnhof

Freitag, 9. Mai 2008

Scrum Breakfast in Zürich, Guideware Case Study

This month we are honored to have a special guest to the Scrum Breakfast in Zürich: Stuart Read, Professor of Marketing at the IMD in Lausanne.

You already know Scrum. You have likely seen it at work. In this discussion, we will investigate a firm built completely on Scum. Not only does the firm use Sprint teams for every function in the company, the firm has used Scrum since its founding day. I encourage you to review the case study so we can have a focused discussion on the issues around such a complete adoption of the methodology, especially as the firm expands beyond 500 employees.

Stuart Read is Professor of Marketing at IMD. He is currently developing cases and research in the following areas:

  • New ventures and innovation
  • Specifically investigating expertise in the entrepreneurial domain
  • Marketing of innovations with network externalities
  • Non-predictive strategies that enable managers to effectively make decisions in situations of true uncertainty
His academic credentials include a Ph.D. in marketing from the University of Washington and a Bachelor's degree in computer science from Harvard University. He has nearly 20 years of industry experience, having participated in the creation of six high technology start-up firms. Four of those firms were acquired by industry leaders including Sun Microsystems and Lotus Development Corporation. Two are publicly traded. Stuart also spent 6 years with enterprise database software provider, Oracle Corporation.

The Scrum Breakfast in Zürich is a monthly exchange of information around Scrum. The breakfast offers discussion, information and hands-on experience to CIO's, executive and operational project managers. The Scrum Breakfast takes place the first Wednesday of each month. The program starts with a short presentation about on an in interesting topic around Scrum. Then follows a moderated discussion among the participants to encourage an exchange of know-how and experiences.

The talk will be held in English.

Attendance is free and our sponsor namics provides the coffee, gipfeli (croissants) and orange juice.

Date: June 4, 2008
Time: 10:00 to 12:30 (Special Case!)
Location: namics ag, konradstrasse 12, 8005 zürich

Registration for the Scrum Breakfast via xing or via comment (won't be published). If you wish to join us for lunch, please register separately at xing.

Dienstag, 6. Mai 2008

amazee ist seit 05. Mai 08 online

Amazee verabschiedet sich mit dem heutigen Tag offiziell aus der private Beta Phase und ist nun für alle und jeden offen.

Ladies & Gentlemen, register and start your engines projects!

Für alle, die sich noch nicht mit Amazee auseinander gesetzt haben:
Amazee ist eine Plattform die es ermöglicht, weltweit Gleichgesinnte zu erreichen und Projekte zu initiieren. Welche Ziele man auch immer anstrebt, Amazee bietet die Möglichkeit, sie bekannt zu machen und gemeinsam umzusetzen. Egal ob kleine oder grosse Lebensziele.

Der Schwerpunkt liegt auf gesellschaftlicher Zusammenarbeit zwischen Privatpersonen und nicht unbedingt auf geschäftlicher Team- und Projekt-Collaboration. Bei Amazee kann man mit anderen zusammenarbeiten, mit dem Fokus auf Ziele und Projekte.

Mehr gibt es bei Amazee's Learn more...

Zeitgleich mit dem Beta-Launch lanciert Amazee einen Wettbewerb, bei dem es in den nächsten Monaten darum geht, mit seinem Projekt Aufmerksamkeit, Unterstützung und eine möglichst grosse Gefolgschaft aufzubauen.

Der Amazee-Contest findet in drei Phasen statt. Zunächst zählt das User-Rating der teilnehmenden Projekte. In Phase zwei geht es dann darum, möglichst viele Mitglieder für das eigene Projekt zu gewinnen. Schlussendlich entscheidet eine Jury, wie der Gesamtpreis unter den Top 3 Projekten aufgeteilt wird.

Die drei Sieger-Projekte werden durch Amazee mit insgesamt € 10'000 unterstützt.

Samstag, 3. Mai 2008

You broke the build

Auf meinem Blog schreibe ich meist über methodische Punkte rund um Scrum und/oder XP. Dabei beziehe ich mich immer auf Erfahrungen, die ich in Verbindung zu diesen Themen mache. Kürzlich hatte ich ein Erfahrung, die sich so gestaltete:

Das Set
Mehrere Entwickler arbeiten an verschiedenen Standorten an einem Software-Entwicklungsprojekt. Es gibt Entwickler, die sich ausschliesslich bei der Implementierung innerhalb eines Layers befinden, z.B. Backend, Business Services oder Web Container. Oft haben die Entwickler layerübergreifend nicht die Einsicht, von wem, wo und zu welchem Zeitpunkt Methoden aufgerufen werden.

Das Problem
Veränderung! Service Interfaces stellen einen Contract dar. Ein Änderung des Contract muss also allen Beteiligten mitgeteilt werden. So gedacht und durchgeführt von einem Entwickler, der an einem Standort die Runde per Zuruf informiert, dass er ein Interface ändern werde. Die Entwickler an anderen Standorten bekommen diese Information nicht. Der besagte Entwickler ändert das Interface und checkt den Code ins Repository ein. Alle Entwickler haben beim nächsten sync mit dem Repository nicht kompilierbaren Code. Der automatisierte Build failed in der Folge und alle Entwickler werden per Email benachrichtigt.

Was ist passiert?
Ein Entwickler hat für geschlagene 3 1/2h das gesamte Entwicklerteam mit seinem Checkin lahm gelegt.

Wie umgeht man das?
Zunächst mal sei gesagt, dass genau dieses Problem oft vorkommt und das Konzept von continuous integration aus den Angeln hebt. Hiermit soll sichgerstellt werden, das alle Veränderungen an der Codebasis, die in das Repository eingecheckt werden, die Lauf- und Funktionstüchtigkeit der Software nicht stören.

Am Beispiel eines bliebigen Interfaces möchte ich zeigen, wie man das Problem umgehen kann.

Die Methode
...
public void doSomething(String a, String b);
...

soll einen neuen Parameter bekommen:

...
public void doSomething(String a, String b, String c);
...

Wenn man das alte Interface verändert, werden alle Zugriffe auf diese Methode nicht kompilierbar sein. Man kann das wie folgt umgehen:

...
/** @deprecated */
public void doSomething(String a, String b);

public void doSomething(String a, String b, String c);
...

Die Implementierungen kann dann so aussehen:

...
/** @deprecated */
public void doSomething(String a, String b) {
// FIXME call doSomething(a,b,c) instead
doSomething(a,b, "fixed (dummy) c value");
}

public void doSomething(String a, String b, String c) {
// do stuff here
}
...


Per FIXME Kommentar kann man allen Entwicklern im Code erkenntlich machen, wie sie die neue Signatur aufrufen sollen. Wenn man das eincheckt wird nach wie vor Kompilierfähigkeit garantiert.

Natürlich muss sichgestellt werden, dass die deprecated Methode irgendwann entfernt wird. Hierfür gibt es Tools, die man im Rahmen der continuous integration laufen lassen kann. Sie raportieren TODO und FIXME Tags im Code

Mittwoch, 30. April 2008

XP oder doch besser Scrum?

"Wir möchten agil arbeiten. Sollen wir XP oder Scrum verwenden?" Diese Frage bekommt man immer wieder gestellt. Die Antwort ist recht einfach - es ist nicht die Frage ob XP oder Scrum, denn man kann XP und Scrum nicht vergleichen!

" Scrum is an agile management methodology. Whereas XP is an agile engineering methodology. As such they are entirely complementary." Kelly Waters
Ich würd' sagen, das trifft es ziemlich genau.

"XP is Agile, but Agile is not XP..." Kelly Waters

Montag, 28. April 2008

Who the f** is Agnes?

Was versteht man unter Continuous Integration, einer der wesentlichen Bestandteile der agilen Softwareentwicklung.

Software wird meist von mehreren Entwicklern parallel geschrieben. Dazu kommt oft, dass man über mehr Standorte hinweg implementiert. Damit jeder Entwickler immer den neuesten Stand der Software hat, gibt es Source Control Werkzeuge (SVN, CVS, SourceSafe, etc.).

Der Sinn eines zentralen Repositories ist neben zentraller Codeverwaltung das Sicherstellen von Qualität: kontinuierlicher Build, Tests und Integration.

Was bedeutet das?
Man installiert neben dem Code Repository eine Software auf einer Maschine, die regelmässig folgende Tasks abläuft, z.B. nightly build:

* Code aus dem Repository auschecken
* Kompilieren
* Alle Test laufen lassen
* Report zusammenstellen
* Warten auf nächsten Build

Eine solche Software ist z.B Bamboo, CruiseControl oder continuum und Luntbuild.

Warum das ganze?
Man möchte an zentraller Stelle die Qualität der Software kontrollieren. Die Idee dahinter ist, dass man bei regelmässig erfolgreichen Build, Test und Integrations-Vorgängen auf relativ stabile Software schliessen kann. Durch den agilen Ansatz sind changes welcome, dass bedeutet in aller Regel, dass die Codebasis einem ständigen Refactoring unterliegt. Wenn man hier kein continuous integration betreibt ist man hoffnungslos verlohren.

Wie sieht das der Entwickler?
Implement ->Test -> Implement ->Test -> Implement ->Test und wer errät es - genau! Es geht immer so weiter. Am Ende einer Implementierung kommt dann der Checkin in das zentrale Code Repository. Vor dem Checkin muss der Entwickler einen Update machen, um den neuesten Code bei sich zu haben, zu kompilieren und zu testen, dass seine Änderungen die bisherige Version im Repo nicht kompromtieren. Wenn das nicht der Fall ist - Commit!

Von nun an kompiliert und testet die Continuous Integration Maschine meinen Code.

Und Agnes will keiner sehen! Wenn Sie kommt, dann man ne Runde Bier zahlen ....

Agnes and friends.

The the beat - the XP beat


Bei eXtreme Programming arbeitet das Team selbstorganisierend und –regulierend. Jede Arbeit die anfällt, um eine Aufgabe zu lösen, wird vom Team geleistet. Während der gesamten Entwicklung folgt das Team einem gelegeltem Arbeitstakt: Plan->Do->Reflect->Improve.

Jede Iteration beginnt mit einem Planning Meeting. Anwesend ist das Team und der Product Owner. Das Team entscheidet, welche User Storys aus dem Product Backlog in der nächsten Iteration realisierbar sind. Aus der angenommenen Arbeit entsteht das Iteration Backlog. Das Team nimmt nur soviel Arbeit an, wie es leisten kann.

Nach mehreren Planning Meetings bekommt man ein Gefühl dafür, wieviel das Team an Arbeit pro Iteration leisten kann. Damit kann man einen Rückschluss auf die zuvor gemachte Releaseplanung ziehen und gegebenenfalls frühzeitig reagieren.

Nach dem Planning Meeting beginnt das Team mit der Umsetzung. In dieser Zeit ist das Team auf sich gestellt. Äussere Einflüsse werden vom Product Owner vom Team ferngehalten. Das Team fokussiert sich auf die angenommene Arbeit. Ziel ist es, aus jeder User Story ein fertiges und brauchbares Feature zu entwickeln.

Im Anschluss an die Iteration werden alle User Storys vom Team vorgeführt. Hier ist das Team, der Product Owner und alle sonstigen Projektinteressierten anwesend. Der Product Owner kann die entwickelten Features selbst verwenden oder sie vom Team vorführen lassen.

Nachdem alle User Story vorgeführt wurden, zieht sich das Team zurück und tauscht positive und negative Erfahrungen aus. Ziel ist es, positive Punkte in der kommenden Iteration zu wiederholen, negative zu vermeiden.

Nach der Team Reflection beginnt der Zyklus Plan->Do->Reflect->Improve erneut.

Montag, 21. April 2008

XP Series III - Let's go Kano

Das Team ist zusammengestellt, alle User Stories im Product Backlog aufgenommen, geschätzt und priorisiert. Womit soll begonnen werden? Eine Entscheidung, die mit einer vorausgegangen Zielgruppen- und Benutzerstudie einfach zu beanworten ist. Der Product Manager ist hier federführend.

Beim der Umsetzung wird mit den User-Storys begonnen werden, welche das höchste Risiko und den höchsten Nutzen auf sich vereinen. Danach werden diejenige User-Storys zu verwirklichen, die geringes Risiko aber hohen Nutzen haben. Anschließend geht das Team die User-Storys an, die geringes Risiko und geringen Nutzen auf sich vereinen. Die Fertigstellung von User-Storys mit geringem Nutzen aber hohem Risiko ist zu vermeiden. Zur Analyse wird das Kano-Modell verwendet.

Anschliessend beginnt das gesamte Team den Aufwand der User Stories zu schätzen. Hierfür werden Story Points verwendet, eine releative Kenngrösse, den Aufwand im Vergleich zu anderen User Stories wiederspiegelt. Es kann sein, dass erste Abschätzungen im Verlaufe des Projektes geändert werden.

Alle User Stories, mit Business Value und Risiko gewichtet und vom Team geschätzt, werden im Product Backlog festgehalten. Eine erste Releaseplanung aufgrund der Kano Analyse und der Aufwandschätzung und Zeitplanung wird vorgenommen.

Ausgehend vom Product Backlog in Verbindung mit der Release Planung beginnt das Team die User Storys in Iterationen umzusetzen.

Mittwoch, 16. April 2008

XP Series II - Release It!

Extreme Programming, ein informelle, unverbindliche, agile Methode, die das Lösen einer Programmieraufgabe in den Vordergrund stellt. In einem vorherigen Post habe über XP im allgemeinen geschrieben, hier geht es nun um Release- und Iteration Planung.

Das Team plant die Arbeit in Releases und Interationen. Ein Release definiert ein Featureset und einen Termin. Die Features werden in Iterationen erarbeitet. Der Zeitpunkt der Fertigstellung wird als Zeitintervall verstanden und kann aufgrund der gewonnenen Erkenntnisse und des durchgeführten Fortschritts vom Team abgestimmt werden.

Innerhalb einer Iteration arbeit das Team an einzelnen Neuerungen, die durch User Storys, eine schlanke Form von Anwendungsfällen, beschrieben werden. User-Storys beschreiben die Funktionsanforderungen an ein System aus Sicht eines Users. Jeder User Story werden Prioritätswerte zugeordnet. Die Priorisierung wird vom Team gemeinsam mit dem Product Owner definiert und soll beschreiben, welche User-Storys dem Produkt den höchsten, respektive den niedrigsten Mehrwert bieten. Man spricht hier vom Business Value. Neben Business Value ordnet das Team jeder User Story eine Risikoabschätzung zu.

Dienstag, 15. April 2008

XP Series - All you need to operate

















Agile, Scrum, XP und andere Begrifflichkeiten werden immer wieder im Zusammenhang mit Lean Software Development genannt. In den kommenden Posts werde ich mich dem Thema XP widmen.


Extreme Programming (XP) ist ein informelle und damit unverbindliche, agile Methode, die das Lösen einer Programmieraufgabe in den Vordergrund der Softwareentwicklung stellt und die Formalisierung des Vorgehens vermindert.

Neben dem Entwickler gibt es bei Extreme Programming Prozess nur eine Person, den Product Owner. Der Product Owner kann ein Kunde, ein Nutzer des Systems oder ein Produktmanager bzw. Projektmanager sein. Innerhalb des Teams gibt es keine Rollenteilung. Der Product Owner steuert und leitet das Team.

Im Team sind alle Spezialisten vertreten, die notwendig sind, um eine Programmieraufgabe zu lösen: Analysten, Business Developer, Tester, Entwickler, DBA's, GUI Entwickler, WAI + Usability Guys – All you need to operate.

Montag, 14. April 2008

Deadline - you are finally dead!

"Ich hab' eine Deadline und ein fixes Budget, hör' mir auf mit agil. Das ist doch Quatsch!" Aber Moment mal bitte!

Agiles Vorgehen steht in keinem Widerspruch zu einem fixierten Endtermin oder fixem Budget. Im Gegenteil! Ich würde sagen, dass man mit agil auf dem richtigen Weg ist, denn hier beginnt man gleich vom ersten Tag etwas nützliches zu produzieren. Gemäss agilem Takt, z.B. alle 3 Wochen, wird etwas präsentiert. Dannach wird die Arbeit für die kommenden 3 Wochen geplant und los geht es --- im 3 Wochentakt dem Ziel entgegen.

Budgetkontrolle? Kein Problem! Man kann die Kosten für 3 Wochen sehr gut vorausberechnen. Der ROI ist direkt messbar. Man kann früh etwaige Konzeptionsfehler erkennen und reagieren und - am aller wichtigsten - man kann bereits Ergebnisse vorweisen.

Donnerstag, 10. April 2008

Scrum Breakfast in Zürich, Lean Software Development, oder der optimale Weg vom Konzept zum Cash

Am 7. Mai 2008 findet wieder ein Scrum Breakfast in Zürich statt. Peter Stevens, Principal und zertifizierter Scrum Master, referiert über Lean Software Development.

Thema:
Dieser Vortrag schliesst den Kreis zwischen Agilität und Wettbewerbsfähigkeit auf der unternehmerischen Ebene mit Scrum und agile Software Entwicklung auf der operativen Ebene. Sie lernen, wie die Leitgedanken von Toyota mittels Scrum Ihre Agiliät und Wettbewerbsfähigkeit verbessern können.


Wann & Wo: 07.05.2008, 08:00 -- 10:00
namics ag, konradstrasse 12/14, 8005 Zurich (Map)

Anmeldung: xing.com

Wir sehen uns ...