Samstag, 6. Juni 2009

Scrum Praxisbuch - Ein agiler Praxisbericht


Ein Buch mit ganz konkreten Techniken für die einzelnen Scrum-Bestandteile. Das gibt wirklich wertvolle Tipps, wie z.B. das Product-Backlog aufgebaut werden kann.

Author: Henrik Kniberg (Vorwort Jeff Sutherland und Mike Cohn)
Sprache: Englisch und Deutsch - u.a. Download-Link ist zur deutschen Version.

Inhalt:
Foreward by Jeff Sutherland
Foreward by Mike Cohn

1. Introduction
2. How we do product backlogs
3. How we prepare for Sprint planning
4. How we do Sprint planning

5. How we communicate Sprints
6. How we do Sprint backlogs
7. How we arrange the team room
8. How we do daily Scrum
9. How we do Spring demos
10.How we do Spring retrospectives
11.Slack time between Sprints
12.How we do release planning and fixed priced contracts
13.How we combine Scrum with XP
14.How we do testing
15.How we handle multiple Scrum teams
16.How we handle geographically distributed teams
17.Scrum master checklist


Buchdownload mit Registrierung bei InfoQ

Danke Henrik Kniberg

Freitag, 5. Juni 2009

Netbooking


Seit ein paar Tagen darf ich mit dem Netbook Samsung NC10 arbeiten. Ziemlich cooles Teil.

Mit WLAN und Chipkartenhalter, kann ich ab jetzt überall Online sein. Zu Hause WLAN - schnell und einfach in der ganzen Wohnung - selbst mit meinem normalen Notebook habe ich das bisher selten gemacht. Und draussen auf HSDPA umschalten und mit max. 7MBit/s ins Netz (super finde ich dabei, dass die Chipkarte ins Netbook kommt und damit der oft verwendete USB Stick in die Schublade wandern kann).

Ideal zur sofortigen Wissensverarbeitung beim Buchlesen (das war meine Hauptintention - endlich lesen und gleichzeitig festhalten). Durch die kleine Größe ;-) stört es nicht, die Akku-Laufzeiten von ca. 8h (habs probiert und kam mit viel Internet und dauernd an auf ca. 7,5h) sind genial, weil man nicht ständig das Netzteil hinterhertragen muss.

Eigentlich das, was ich mir schon seit ca. 2 Jahren vorstelle. Bisher bin ich immer zwischen Handy mit Tastatur (Blackberry,IPhone oder HTC,...) und Laptop geschwankt. Die Tastatur am Handy ist viel zu klein um sinnvoll schreiben zu können. Laptop ist zu sperrig... Das Netbook füllt - auch auf Grund der niedrigeren Kosten - diese Lücke für meine Bedürfnisse.

Kosten - naja - ohne Vertrag gekauft - so um die 400€, mit Vertrag 5GB/Flatrate über 24Monate kostet es pro Monat 35€ - und das Netbook gibts dafür gratis.
Ne Menge Geld - aber Flatrates für HSDPA (UMTS) gibt es ohne Gerät auch erst ab 25€. Von daher wieder sinnvoll.

Bestellt habe ich bei Handyscout. Die hatten nach Recherche ggb. T-Online, E-Plus und MoBook die besten Konditionen (und genauesten Produktbeschreibungen). Lieferung lief problemlos, das Netbook war in 3 Tagen bei mir, Freischaltung der Karte einen Tag später - Hotline zwischendrin (um als ungeduliger Mensch mal nachzufragen, obs schon eine Paketnummer bei DHL hat...) auch schnell und kostengünstig erreichbar.

Sonntag, 24. Mai 2009

ScrumYourMoney


Unter diesem Titel habe ich mir heute beim Radfahren überlegt eine neue Seite aufzubauen, auf der ich diverse Informationen zum Thema Geld zusammenstelle.

Seitenthema wird ein scrumbasierter Vorschlag, wie man mit verschiedenen Ansätzen seine Ausgabenseite besser kontrollieren und optimieren kann. Die Tipps werden nach Aufwand/Nutzen betrachtet und entsprechend im Backlog aufgelistet.

Eine Nutzenbetrachtung im Vergleich zum Geld-Verdienen wird ebenfalls Bestandteil

Sobald die erste Version steht, kommt die Info im Blog.

Evtl. habt Ihr jetzt/dann Anregungen bzw. wollt sogar mitmachen?!

bisherige Datensammlung ... http://simplefinance.netcipia.net/xwiki/bin/view/Main/WebHome

Mittwoch, 20. Mai 2009

Scrum

Eine ganze Reihe interessanter Webseiten und eigener Erfahrungen mit Scrum führen zum ersten Blogeintrag.
Schnelleinstieg in Scrum


Scrum verändert die Welt, wie Projekte abgewickelt werden nachhaltig. Es liefert einen verständlichen, strukturierten Rahmen, in dem Projekte mit Wertschätzung des Teams, mit Orientierung am BusinessValue, mit Spaß bei der Entwicklung durchgeführt werden können (ausführliche Beschreibungen zu Scrum gibt es sehr gute über die u.a. Linkliste & Bücherliste).

Was beeindruckt mich bisher mit Scrum am meisten?

  • verlorengeganges Leuchten in den Augen von Entwicklern kommt durch Eigenverantwortung und die Möglichkeit endlich wieder kreativ und wertvoll zu sein wieder zurück

  • Teams, die jahrelang nicht als Team funktionierten beginnen als Einheit produktiver Ergebnisse zu bringen - Scrum fördert z.B. durch Empfehlungen wie "alle Teammitglieder arbeiten möglichst an derselben Story, bevor mit der nächsten begonnen wird" die Auflösung von Kopfmonopolen und die Wissensverteilung.

  • Retrospektiven lassen Konflikte schnell deutlich werden und dienen als reinigendes Gewitter im Sprint. Wow - als ScrumMaster können Retros die Hölle werden - aber Blitzableiter verhindern nunmal größeren Schaden - als KOPF HINHALTEN

  • Transparenz - unangenehm für viele, die sich im Nischenhocken perfektioniert haben und plötzlich im Wettkampf mit Teammitgliedern stehen. Transparenz für das Management - das dann natürlich auch evtl. Fehler deutlich gezeigt bekommt. Transparenz - als fo(ö)rderndes Scheibenwaschmittel von Scrum.

  • Ergebnisse nach jedem Sprint (z.B. alle 2 Wochen)




Was finde ich schwierig?
  • Gute UserStories zu schreiben - als Techniker zur Vermitteln, wie fachliche Anforderungen in Form von technologieneutralen knappen Stories als Platzhalter für die damit verbundende wiederholte Kommunikation zu formulieren sind ist nicht einfach.

  • Schätzungen auf Basis von StoryPoints (und nicht Tagen); Finden von Referenzstories und relative Einschätzung der anderen Stories

  • Klarzumachen, das eine Projektflut keinen Sinn macht sondern besser an wenigen Projekten parallel gearbeitet werden sollte - Scrum erzwingt eine kleine Projektanzahl oder eine deutliche personelle Erweiterung. Scrum macht das Projektgewurschtel transparent.

  • Leute davon abzuhalten mal eben Scrum-Artefakte wegzulassen oder zu verändern (wenn sie schon jahrelange Erfahrungen aufweisen würden - kein Problem). "Denn sie wissen nicht was sie tun"
Was kann noch besser werden?
  • Die ScrumMaster Zertifizierung sollte Prüfungscharacter bekommen
  • Das ProductOwner-Training sollte deutlich ausgebaut werden
  • Der Geldaspekt für die Scrum-Zertifizierung und die weitergehenden Qualifikationen erweckt den Eindruck einer Gelddruckmaschine

Bücher

  • Scrum - Produkte schnell und zuverlässing entwickeln (Boris Gloger;ISBN:978-3-446-41495-2;2008)
    Ein wirklich motivierendes Buch, meine Einstiegsliteratur zu Scrum. Tolle Aufmachung, frisch, einfach zu lesen und gut zu verstehen. Nicht nur theoretisch. Kann ich als Einstieg (und Vertiefung sehr empfehlen)
  • Agile Estimating and Planning (Mike Cohn;ISBN:0-13-147941-5;2006)
    Sehr ausführliche Beschreibung, wie in agilen Projekten auch agil geplant werden kann. Vertiefungen zu StoryPoints, Charts, Reporting, Planning-Poker,... - sehr gut zur Vertiefung nach einem generellen Scrum-Überblick

  • User Stories Applied - for agile software development (Mike Cohn;ISBN:0-321-20568-5;2004)
    Abhandlung zum Thema UserStories, die eine super Grundlage zum erstellen fachlich geprägter ProductBacklogs bildet. Ebenfalls Vertiefungswissen Scrum

  • Agile Retrospectives - Making Good Teams Great (Esther Derby,Diana Larsen; ISBN:0-9776166-4-9;2007)
    Vertiefendes Wissen zum Scrum Herzschlag Retrospektive. Wie bekämpfe ich Einklang, wie persönliche Angriffe,...

  • Agile Software-Entwicklung (Alistair Cockburn;ISBN:3-8266-1346-5;2003)
    Ein Standardwerk von einem Star der agilen Softwarebewegung. Ein Muss - viele Grundlagen agil zu entwickeln - fließt in Scrum ein.

  • Spielräume - Projektmanagement jenseits von Burn-Out, Stress und Effizienzwahn (Tom DeMarco;ISBN:3-446-21665-0;2001)
    Tom DeMarco - eine Größe, ein Altmeister der Softwareentwicklung befasst sich mit einem Projektmanagment, das weg von dauernder Überlast hin zu Mitarbeitermotivation, sinnvoller Projektgestaltung argumentiert. Viele Anregungen, die auch in Scrumprojekten einfließen sollten.

  • Wien wartet auf Dich - Der Faktor Mensch im DV-Management (Tom DeMarco,Timothy Lister; ISBN:3-446-21277-9;1999)
    Was führt dazu, das Mitarbeiter frustriert aufgeben und abwandern und was kann dagegen getan werden. Scrum einführen ist ein richtiger Schritt. Aber auch mit Scrum, kann man bei falscher Anwendung Mitarbeiter festfahren. Welche Psychologie hilft ... ein wirklich tolles Buch.

  • Surviving Object-Oriented Projects (Alistair Cockburn; ISBN:0201498340;1998)
    Schon etwas älter, aber dennoch toll. Was kommen durch OO für Probleme in Projekten auf einen zu. Wie zieht man OO-Projekte richtig auf. Ergänzung, um den Unterbau in Scrum-Projekten ebenfalls richtig zu gestalten, denn diese Basis muss auch stimmen - Scrum macht hier hauptsächlich transparent, dass diese Ebene ggf. nicht stimmt.

Links

Sonntag, 10. Mai 2009

Social Bookmarking und Networking

"Es gibt kaum ein beglückenderes Gefühl als zu spüren, daß man für andere Menschen etwas sein kann. Dabei kommt es gar nicht auf die Zahl, sondern auf die Intensität an. Schließlich sind eben die menschlichen Beziehungen doch einfach das Wichtigste im Leben." (D.Bonhoeffer)

Für eine tolle Idee halte ich das SocialBookmarking - Verwalte deine Bookmarks online bei Delicious (z.B. meine auf http://delicious.com/sradics) und nutze:
  • Wer hat diesen Bookmark ebenfalls
  • Was haben andere, die diesen Bookmark haben für weitere Links (superschnelles Netz an Informationen zu evtl. ähnlichen Themen)
  • Endlich sind die Bookmarks nicht mehr nur auf dem lokalen Rechner sondern überall erreichbar und über Plugins im Browser (für Firefox habe ich es installiert) einfach nutzbar
  • Speichere weitere Informationen zum Bookmark und Tagge sie, um neue Gruppierungen zu bilden.
Eine coole SocialNetworking Plattform ist Facebook (mein Facebook).
  • Halte auch lose gekoppelten Kontakt mit vielen Freunden
  • Kombiniere Blog, Fotoalben, Twittern, Chat, Links, ... uvm. in einer Anwendung
Fürs Business bietet sich als Networking-Plattform Xing (mein Xing) an. Hier kannst du:
  • Mit (Ex-)Arbeitskollegen in Kontakt bleiben
  • In Gruppen organisiert nach evtl. Geschäftspartnern suchen
  • Neue Experten finden
Networking ist/wird immer bedeutender und ist mittlerweile mindestens ebenso wichtig wie Expertenwissen. Die Umstände in der Arbeitswelt und im privaten Umfeld ändern sich heute deutlich häufiger als noch vor wenigen Jahren. Das Netwerk aus Freunden, Kollegen und Experten hilft einem, um schnell auf Änderungen reagieren zu können.

"Zu den Erfolgsfähigkeiten gehören aber auch unsere Sympathiekräfte, das Freund-sein-können und das Freunde-gewinnen-können und das Freunde-erhalten-können" (G.Großmann)
Literatur: Erfolg hat Methode (Alexander Großmann, ISBN: 3-930799-03-0)

Montag, 4. Mai 2009

Projektsetting

Was sollte man zu Projektbeginn (IT) unbedingt festlegen (wenn nicht bereits definiert):
  • Codestandards (welche Coderegeln bzgl. Formatierung, Strukturierung z.B. Methoden/Klassen-Längen, Namensgebung, Kopplungen, If/Else-Verschachtelungen u.v.m.).
    Zur Prüfung kann z.B. Checkstyle eingesetzt werden. Mit Einbettung in der IDE kann die Prüfung schon zum Entwicklungszeitpunkt integriert werden. An die Standards gewöhnt man sich sehr schnell und bekommt eine einheitliche Struktur und damit einen schnelleren Überblick geschenkt (natürlich kann man noch immer unleserlichen Code schreiben...)
    Am Besten die Standards im Team zusammen festlegen. Kostet mal 1/2 Tag, aber dann wird nicht ewig diskutiert. Einmal festgelegt sollte man auch nicht laufend wieder ändern.

  • Testvorgehen klar definieren - was wird mit welchen Werkzeugen getestet. Diese werden dann als Architektur-Richtlinie festgehalten und im Projekt einheitlich eingesetzt.
    Ich habe sehr gute Erfahrungen mit JUnit gemacht (super Literatur: Testgetriebene Entwicklung mit JUnit & FIT von Frank Westphal - ISBN: 3-89864-220-8, Links zu einem einfachen Überblick zu JUnit: http://www.frankwestphal.de/UnitTestingmitJUnit.html und JUnit4 - http://www.frankwestphal.de/JUnit4.0.html, Testen mit Datenbanken: http://www.dbunit.org/bestpractices.html). TestNG habe ich noch nicht wirklich verwendet!?

    Es ist super spannend, wie Tests - gleich zu Beginn der Entwicklung eingesetzt - die Codequalität erhöhen. Der Fakt, dass man sofort einen Client für seinen Code schreibt zwingt zum Nachdenken bzgl. Struktur in einem Stadium der Entwicklung, in dem Änderungen sehr schnell und einfach möglich sind. Später hat man dann viele schnell laufende Testfälle und traut sich dadurch wieder an Refactorings an. Unbedingt ausprobieren - und "Grünbalkensüchtig" werden.

    Testen würde ich jede Klasse, die Logik enthält (blose Datencontainer sind eh in Frage zu stellen). Oft nimmt Test die gleiche Zeit oder sogar mehr Zeit wie die Entwicklung in Anspruch. Der Aufwand amortisiert sich aber schon im Projekt, sobald kleine Änderungen notwendig werden. Kein Entwickler testet gern diverse Konstellationen nochmalig manuell durch.

  • Manuell sollten auch die Unit-Tests nicht immer ausgeführt werden. Gleich zu Beginn muss eine Continuous Integration Umgebung aufgebaut werden - automatische Builds, zeitgesteuert/Event-gesteuert (z.B. Source-Checkin), die den Code compilieren und zu deployfähigen Artefakten umwandeln und darauf alle Unit-Tests abfahren. Zusätzlich können gleich noch Checkstyle, FindBugs (später mehr) und JavaDoc erstellen. Gern auch die Serverumgebung in Test aktualisieren und ggf. Integrationstests automatisch abfahren.

    Super Erfahrung habe ich hier mit Hudson: (https://hudson.dev.java.net/) gemacht - einfachst zu installieren und administrieren, tolle intuitive Oberfläche und viele Features, die durch Plugins beliebig erweiterbar sind. Sehr gut ist auch CruiseControl: (http://cruisecontrol.sourceforge.net/) - wobei ich es als deutlich schwerfälliger empfinde.

    Zum Einrichten der Umgebung für ein kleines Projekt - 3-5 Projekte mit Subversion als Sourceverwaltung und existierenden Buildskripten benötigt man zur Installation mit Einarbeitung wenige Stunden.

  • Sourceverwaltung und Standards zur Projektstrukturierung festlegen. Ich kenne das für kleine Projekte grauenhafte Telelogic Synergy (sehr schlechte IDE-Integration, erfordert eine neue Art für die Entwicklung zu denken), Subversion - als leichtgewichtige super IDE-integrierte Alternative. Ein neuer Stern am Himmel scheint Mercurial (mit Taskverwaltung) zu sein (wird aber auch schon stark gehyped).

  • Buildvorgehen definieren. Ant/Maven bieten sich als Werkzeuge an und können einfach in die Continuous Integration-Umgebungen eingebunden werden.

  • Mit FindBugs Java-Code zyklisch auf Fehlentwicklungen prüfen.

  • Neben den vielen technischen Themen müssen auf jeden Fall die Teamstruktur, das Teamvorgehen und die Teamregeln definiert werden. Eine tolle Möglichkeit mit einem gut definierten Rahmen bietet Scrum

Dieser Rahmen sollte zu Projektbeginn festgelegt werden. Am Besten mit allen Projektbeteiligten abstimmen und 2-3 Tage dafür investieren. Den Benefit bekommt man sofort bei Projektbeginn, denn eine klare im Team abgestimmte Struktur schafft Sicherheit und gibt Spielräume mit Grenzen.

Sonntag, 3. Mai 2009

Javascript, CSS-Kontrolle und Ajax ganz einfach mit JQuery

jQuery: The Write Less, Do More, JavaScript Library

Nachdem ich seit längerer Zeit nichts mehr mit JavaScript, Ajax und CSS zu tun hatte hat mich ein Kollege auf diese schlanke Bibliothek zum einfachen Handling der Themen hingewiesen. Erstes Fazit nach Verwendung in meiner Homepage ist "Coole, wirklich einfach zu handhabende Bibliothek". Ein paar Schlüsselfunktionen (die ich bisher entdeckt habe) im Überblick:
  • standardisierter Zugriff auf alle Seitenelemente - Browser-übergreifend, eine kurz zu fomulierende Syntax zur Selektion mehrere Elemente (z.B. alle Elemente mit einer CSS-Klasse, alle Divs,...)
  • Zugriff auf CSS und beliebige Änderung von CSS
  • diverse Möglichkeiten Ajax-Request-Responses auszuführen/zu behandeln
  • mit zusätzlichen PlugIns kommen noch UI-Komponenten hinzu.
Im Gegensatz zu Dojo wirkt das Framework sehr schlank, zu Prototype funktionsreicher. Man ist innerhalb weniger Minuten produktiv und schreibt wirklich wenig Code, um mächtige Funktionalitäten abzudecken.