Archiv für den Monat Oktober 2013

Agiler Scrumtisch Heilbronn

Gestern waren mein Kollege aus der Webentwicklung und ich beim Agilen Scrumtisch in Heilbronn.

CIMG4644

 

Die Truppe vor Ort ist ein lockerer, gut gemischter Haufen. Logischerweise wurde der Scrumtisch auch Scrum-like organisiert, d.h. jeder Teilnehmer konnte Backlog Items einreichen. Dabei profitierte ich auch prompt, da sogenannte Stattys Notes verwendet wurden, die es hier gibt. Dabei handelt es sich um eine besondere Art von PostIts. Einfach auf der Webseite nachschauen. Die Seite ist übrigens nach dem Why How What Prinzip von Simon Sinek (“People don’t buy what you do they buy why you do it”) aufgebaut. Das ist umso lustiger, als ich genau darauf gestern im Kontext von Motivation und Produktmarketing zu sprechen kam. Das entsprechende Video, welches ich jedem nur ans Herz legen kann, gibt es hier.

Aber zurück zum Thema: Nachdem alle Backlog Items (Themen) gesammelt wurden, erhielt jeder ein 3-Punkte-Konto, aus welchem er die Items voten konnte. Daraus entstand der Business Value, nach welchem die Items priorisiert wurden. Danach zogen wir ein Item nach dem anderen heraus und diskutierten es. Dabei standen immer initial 10 Minuten zur Verfügung. Benutzt wurde eine Time Timer Uhr. Im Anschluss wurde in die Gruppe gefragt, ob das Thema weiter besprochen oder zum nächsten gewechselt werden soll. Per Handzeichen (Daumen hoch oder runter) entschied die Gruppenmajorität. Fiel die Entscheidung  zur Weiterführung der Diskussion, so gab es weitere 5 Minuten. Dies wiederholte sich dann bis ein Votum gegen das Thema fiel. An dieser Stelle sei mein vorheriger Blogbeitrag Wir arbeiten time boxed erwähnt, der den Vorteil von festen Zeitabschnitten aufgreift. Für mich eine tolle Art den Abend zu gestalten.

Die Gespräche verliefen konstruktiv und vielschichtig. Es gab unterschiedliche Betrachtungsweisen und Lösungsansätze. Einen speziellen Punkt habe ich mir herausgegriffen und in der Xing Scrum Gruppe als Frage eingestellt. Dabei geht es um sogenannte Evaluierungsstories, welche Boris Gloger in einem seiner Bücher erwähnt. Der geneigte Leser ist dazu angehalten sich an dem Gespräch zu beteiligen.

3 interessante Punkte, die ich mitgenommen habe, seien noch in aller Kürze erwähnt:

Wir arbeiten time boxed

Es vergeht selten eine Arbeitswoche ohne eine Besprechung. Die Regel sind mehrere wöchentlich. Umso wichtiger ist es, dass ein Rahmen gefunden wird, der effektive Meetings gewährleistet. Die Chefs von Google hatten in ihrer Anfangszeit z.B. das parallele Arbeiten am Smartphone eingeführt. Diesen Schritt haben sie selbst erst kürzlich wieder rückgängig gemacht, d.h. beim Suchmaschinenriesen herrscht jetzt Handyverbot während den Sitzungen.

Ich möchte an dieser Stelle auf feste Anfangs- und Endzeiten eingehen, englisch ‘time boxed’ genannt, und erklären, warum wir inzwischen ausschließlich auf diese Art Besprechungen führen:

  • Die Konzentration ist höher, da in der gegebenen Zeit der Inhalt durchgesprochen werden muss. Der Moderator (bzw. Scrum Master in entsprechenden Teams) sollte darauf achten die besonders redseligen immer wieder zurück in die Spur zu bringen. Bei massiven Problemen können Redezeiten oder Sprechbälle als Werkzeuge helfen. Bei uns klappt es allerdings recht gut, wenn die Person direkt mit dem Hinweis adressiert wird, dass uns die Zeit ausgeht. Ich habe eine deutlich stärkere Fokussierung und somit bessere Effizienz bei uns festgestellt.
  • Es werden weniger unnötige Informationen ausgetauscht. Unnötig im Sinne von nicht für alle relevant. In diesem Punkt ist ebenfalls der Moderator gefragt. Einfach die Bitte an die betroffenen Teilnehmer richten sich im Anschluss zusammenzusetzen.
  • Die Zeitersparnis, die mit Warten regelrecht verbraten wird, ist enorm. Je häufiger Meetings stattfinden und desto mehr Mitarbeiter daran beteiligt sind, desto höher ist die Ausbeute. Früher war es bei uns häufig der Fall, dass ein Teil der Gruppe durch ihr Warten kostbare Arbeitszeit verlor. Auf die Personalkosten möchte ich erst gar nicht eingehen.
  • Pünktlich zu kommen ist auch ein Zeichen des Respekts bzw. der Höflichkeit.
  • Für mich ist Pünktlichkeit auch ein Anzeichen für die Qualität des Selbstmanagements. Wenn wir externe Berater zu Gast haben und diese sich häufig oder besonders lange verspäten, dann stellt sich für mich immer die Frage wie zuverlässig sie beim Abliefern der Ergebnisse sind.
  • Durch fest definierte Endzeiten wird es überhaupt erst möglich verlässlich zu planen. Wenn ich beispielsweise beim Kollegen, der mir seinen Kalender freigegeben habe, sehe, dass sein Meeting bis 15 Uhr dauert, er dann aber 30 Minuten später immer noch nicht wieder am Platz sitzt, dann ist das für mich, der um 15.30 Uhr eine Besprechung hat, gelinde gesagt ungünstig. Mir wäre es dann auch nie möglich mit ihm direkt im Anschluss einen weiteren Termin zu vereinbaren, da ich immer damit rechnen muss, dass er nicht pünktlich sein kann.
  • Besprechungsräume sind bei uns wie vermutlich auch in anderen Unternehmen eine begrenzte Ressource. Wir arbeiten mit der in Outlook verfügbaren Verwaltung, um diese effektiv auszulasten. Das kann nur funktionieren, wenn time boxed vorgegangen wird.

Gerne würde ich noch weitere Punkte aufnehmen. Einfach in die Kommentare schreiben.

 

Als Hinweis sei noch mitgegeben, was bei der Umsetzung hilft:130618 141116 DSCI2486

  • Eine gewisse Unzufriedenheit mit dem aktuellen Ablauf
  • Disziplin
  • Einen guten Moderator (Scrum Master)
  • Eine Uhr (z.B. Time Timer wie im Bild)

Developer Open Space 2013 – Live aus den Sessions

In dem unten stehenden Video zeige ich euch Aufnahmen aus den Sessions. Generell ist es so, dass die Person, die ein Session-Thema vorschlägt, gleichzeitig als Session Hoster fungiert. Dazu ist es nicht notwendig, dass der Session-Hoster sich besonders gut mit der Materie auskennt. Seine Funktion zielt darauf ab einen offen Dialog zu gewährleisten und das sogenannte Kapern von Sessions, d.h. das Abdriften vom Thema, zu verhindern.

Erfahrungsgemäß laufen Sessions oft in 2 Formen ab:

  • Sehr rege Beteiligung aller Teilnehmer bei Themen, zu denen jeder etwas sagen kann. Ein Beispiel hierzu wäre Scrum.
  • Bei Randthemen oder komplexen Dingen ist es meistens so, dass 1-3 Personen über die eigenen Erfahrungen berichten. Das waren in diesem Jahr beispielswese die Sessions “Werteunterschiede” und “Psychologie bei Softwareentwicklung”.

Mir scheint es auch, dass v.a. in den letzten 2 Jahren immer mehr Sessions außerhalb des Technologie-Stacks aufkommen. Persönlichkeitstypen und Selbstständigkeit / Freelancing um zwei Vertreter zu nennen. Zumindest ich persönlich begrüße dies sehr!

Hier nun zum Video (Direktlink auf YouTube):

Developer Open Space 2013 – Sessionplanung

Damit der ein oder andere eine konkrete Vorstellung davon bekommt, wie eine Agenda auf einem Open Space entsteht, habe ich das live aufgenommen und publiziert.

In Leipzig findet in der Regel Freitagabends ein sogenanntes World-Café statt. Dabei sind alle Beteiligten dazu angehalten Sessionthemen vorzuschlagen, konstruktiv zu diskutieren und für den Folgetag aufzuschreiben. Die Teilnehmer können die Ergebnisse als Vorschläge und Inspiration in den nächsten Tag mitnehmen.

Samstags und Sonntags findet dann das gemeinsame Erstellen der Agenda (öfters auch Product Backlog genannt) statt. Vom World-Café können, müssen aber nicht dann Sessions vorgeschlagen werden. Der Teilnehmer, der das Thema anregt, ist immer auch der Session Hoster. Ihm obliegt die Entscheidung wann und wo die Session stattfindet. Darüber hinaus nimmt der die Moderatorenrolle ein und verhindert ggf. das “Kapern” einer Session, d.h. das Abdriften in nicht Session-relevante Themen.

Nach der Sessionvorstellung holt sich der Hoster kurzes Feedback per Handzeichen ein, wie viel Interesse besteht. Eventuell melden sich auch Teilnehmer, die das Thema gerne erweitern bzw. konkretisieren möchten, um eigene Schwerpunkte einzubringen und eine gemeinsame Session zu halten.

So viel in aller Kürze zur Agendafindung. Hier nun das Video:

Developer Open Space – Interview mit Janek Fellien

In meinem Interview am Developer Open Space in Leipzig (#devspace) spreche ich mit Janek über seine favorisierten Sessions und den Vergleich zw. typischen Konferenzen und dem Open Space als Unkonferenz.

Den Link, der euch direkt auf YouTube führt, findet ihr hier. Ich würde euch allerdings bitten beim Teilen den Blog Link zu verwenden.

 

PHP Experten als Consultant gesucht

Wir suchen für unsere Abteilung einen Web Consultant, der sich hervorragend in PHP und JavaScript auskennt. Der Fokus liegt klar auf Clean Code, d.h. leicht anpassbare, wiederverwendbare und skalierbare Lösungen. Testautomatisierung setzen wir dabei voraus. Idealerweise, aber nicht obligatorisch, bringt derjenige noch Kenntnisse in Typo3 und Ext JS mit.

In einem gemeinsamen Projekt bei uns im Haus, später dann ggf. auch remote, sollen die internen Entwickler im Durchlauf von Problemanalyse bis hin zu Deployment unterstützt werden. Ziel ist, dass unsere Mitarbeiter im Anschluss einen dedizierten Worfklow an der Hand haben, angefangen mit der richtigen IDE (z.B. PHPStorm) über die Versionskontrolle bis hin zum automatisierten Deployment.

Update Mechanismus für meine Anwendung

Unser ERP-System soll einen neuen Updater erhalten. Der Prozess macht es notwendig, dass bei einem Update Admin-Rechte benötigt werden, beispielsweise weil in die Registry geschrieben wird. Als Client Betriebssystem kommt Windows 7 zum Einsatz.

Unsere Überlegung war es den Update-Prozess als Dienst oder Aufgabe lokal mit Adminrechten laufen zu lassen. Der angemeldete User hingegen arbeitet mit eingeschränkten Rechten. Für ein optimales Benutzererlebnis stellen wir uns vor, dass das ERP dem Anwender meldet, dass es aktualisiert werden muss, d.h. der Dienst müsste an die lokale Anwendung, die in einem anderen Benutzerkontext läuft, eine entsprechende Nachricht schicken. Sobald die Applikation geschlossen wird, muss diese dann melden, dass das Update durchgeführt werden kann. Während des Prozessablaufs sollte darüber hinaus dem Anwender noch visuell der Fortschrittsstatus angezeigt werden.

Das ähnelt stark dem Verhalten von Browsern wie Chrome oder Anwendungen wie Flash. Meine Frage ist, ob der gewählte Lösungsansatz mit Aufgaben/Diensten der Passende ist und wie die Visualisierung über Benutzerkontexte hinweg sinnvoll zu implementieren ist. Für Hinweise und Lösungsansätze wäre ich dankbar.

 

//Erste Rückmeldung von Hans-Peter:

Im ERP mit einem Timer arbeiten, der prüft, ob eine Datei vorhanden ist und dann die Meldung an den Anwender ausgeben. Für die Fortschritts-Anzeige dann im Service einen separaten Thread starten, welchen man im Kontext des Anwenders laufen lässt.

Developer Open Space 2013 – Teil 3

Vor dem Mittag gab es noch 6 Sessions. Zum Session Plan geht es übrigens hier.

Zunächst nahm ich an der Session von Johannes teil, welcher über seine Studie zu empathischem Code etwas erzählt. Auf das Wesentliche gekürzt, geht es darum, warum

var t = new Tarif()

wesentlich schlecht zu lesen und verstehen ist als

var tarif = new Tarif()

Johannes will darüber selbst noch einen Artikel schreiben und seine Ergebnisse veröffentlichen, deshalb möchte ich an dieser Stelle nicht weiter darauf eingehen. Allerdings bitte ich Teilnehmer der Session sich bei mir zu melden, um ein kurzes Statement abzugeben wie der Inhalt wahrgenommen wurde.

Die letzten 15 Minuten war ich in “Scrum ruinieren”, was vom Ablauf ziemlich das Gegenteil zur vorher erwähnten Session war. Hier gab es eine rege Diskussion unter allen Beteiligten, die sich über Probleme von Scrum unterhielten. Das Publikum war bunt gemischt, angefangen von Verantwortlichen, die Scrum wieder erfolgreich abgeschafft haben bis hin zu Teams, die sehr erfolgreich und glücklich mit Scrum sind. Das Ergebnis war ein Board (siehe Bilder), welches die krassen Negativen auflistete. Die Frage des Session Hosters am Ende bzgl. wer jetzt mehr oder weniger von Scrum überzeugt ist, fand ich besonders gelungen. Meine Interpretation hebe ich mir allerdings für einen dedizierten Artikel auf.

CIMG4552 CIMG4553

Alle Bilder gibt es wie immer hier. Wer bei einer Session ein besonderes AHA-Erlebnis hatte, der kann mich einfach ansprechen und es mir mitteilen, dann nehme ich das gerne in den Artikel über den Open Space mit auf.

Developer Open Space 2013 – Teil 2

 

Mein Resümee zu Tag 1 – dem “Workshop-Tag”:

Tag1 Panorama

Knapp 100 Teilnehmer waren am ersten Tag anwesend. Es wurden zahlenmäßig genauso viele Workshops angeboten wie im Jahr zuvor. Ein stark limitierender Faktor ist verständlicherweise die Zeit, was mir die Teilnehmer als Hauptmanko genannt haben. Sessions, die besonders auf das Internet angewiesen waren, hatten zudem mit der schlechten Anbindung zu kämpfen. Hinweis von meiner Seite: Vielleicht sollten Setups im nächsten Jahr per USB-Stick verteilt werden. Ansonsten ziehen die meisten ein positives Fazit. Persönlich wurden meine Erwartungen im Architektur Workshop nicht ganz erfüllt. Als Erfahrungen mitgenommen habe ich wie andere Entwickler an das Thema Architektur herangehen und welche Hilfsmittel sie einsetzen. Sicher bin ich mir bei einem: Guten Architektur Schulungen wäre eine hoher Teilnehmerquote sicher!

Besonders lohnenswert – wie sollte es auf einem Open Space auch anders sein – waren die Gespräche in den Pausen, allen voran zum Thema Scrum. Hier noch die zwei erwähnten Buchempfehlungen von Boris Gloger (Produkte zuverlässig und schnell entwickeln und Der agile Festpreis (von mir nicht gelesen)). Hierzu will ich heute eine Session anregen, die sich mit konkreten Fragen beschäftigt, d.h. eine Fragerunde zu Scrum. Beispielsweise wird in der Literatur einhellig die Meinung vertreten, dass Entwickler die User Stories schreiben sollen. Davon bin ich beispielsweise gar nicht überzeugt. Was ist, wenn das Team das Sprintziel früher erreicht? Sollte der Sprint deshalb gekürzt werden, wenngleich eine Verlängerung immer auszuschließen ist. Schauen wir mal wie das Interesse sein wird.

Interessant war auch eine Diskussion über Staging und Continuous Integration, was sich übrigens hervorragend an die Scrum Gespräche angeschlossen hat (vgl. Balanced Agility). Bei uns im Betrieb haben wir einen sehr gut funktionierenden Deployment Prozess mit TeamCity implementiert. Mich würde interessieren wie es in anderen Firmen aussieht und ob die Entwickler mit ihren Lösungen zufrieden sind.

Gegen Ende wurde noch in kleiner Runde auf die bereits im Sommer von Johannes Hofmeister angeregte “Sexismus”-Session eingegangen. Da Johannes das für heute in diskussionsgerechter Form aufbereitet hat, will ich an dieser Stelle nicht vorgreifen.

Besonders cool fand ich die Teilnahme unseres jüngsten Teilnehmers mit gerade einmal 14 Jahren. Er schaute sich die Session über Android/iOS Entwicklung an. In einem kurzen Interview sagte er mir, dass er bereits für den Windows Store mit C# entwickelt hat und das Gelernte zuhause weiterverfolgen will.

Die neusten Fotos gibt es wie immer hier. Wer ebenfalls Fotos geschossen hat, kann diese dort ebenfalls hochladen.

Developer Open Space 2013 – Teil 1

Inzwischen ist Mittagpause am Workshop Tag. Ich habe den Eindruck, dass dieses Jahr noch mehr Leute zu den Workshops gekommen sind. Das ist auch nicht weiter verwunderlich, wenn man sich die hochkarätigen Themen anschaut (siehe hier).CIMG4481

Es freut mich besonders, dass es ab diesem Jahr auch eine dedizierte Facebook Fanpage gibt. Leider lassen sich dort aktuell noch keine eigenen neuen Posts erstellen. Ich hoffe, dass sich das noch ändert.

Die ersten Fotos habe ich bereits auf DaWaWas hochgeladen, da mich die Plattform beim diesjährigen .NET Open Space in Karlsruhe überzeugt hat. Wer Fotos von sich entdeckt, die er nicht veröffentlich sehen will, einfach kurz melden. An dieser Stelle sei auch nochmal darauf hingewiesen, dass es in Karlsruhe weiterhin .NET Open Space heißt, wohingegen Leipzig sich für die Bezeichnung Developer Open Space entschieden hat.

CIMG4465 Tom Wendel ist ja inzwischen nicht mehr bei Microsoft tätig, jedoch konnte ich bereits Dariusz Parys treffen. Mal schauen, ob sich eine Microsoft Bash Session organisieren lässt.

Zu guter Letzt noch ein Hinweis in eigener Sache: Ich schreibe in diesem Jahr einen Artikel üben den Open Space für die dotnet pro und würde mich über Interviews und Feedback freuen. Gerne könnt ihr mich direkt ansprechen, auf diesen Blog posten oder über Twitter oder Facebook antworten.

NET Framework 4.5 für Build Server

Wer seine Software auf .NET 4.5 migriert, sollte darauf achten, dass er sich nicht nur das “normale” Setup von Microsoft herunterlädt, denn sonst kann es auf dem Build Server zu folgendem Fehler kommen (dieser tritt nicht bei einem installierten Visual Studio 2012 auf, was auf einem Build Server aber nichts verloren hat):

 

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(983,5): warning MSB3644: The reference assemblies for framework „.NETFramework,Version=v4.5“ were not found. To resolve this, install the SDK or Targeting Pack for this framework version or retarget your application to a version of the framework for which you have the SDK or Targeting Pack installed. Note that assemblies will be resolved from the Global Assembly Cache (GAC) and will be used in place of reference assemblies. Therefore your assembly may not be correctly targeted for the framework you intend.

 

Der Pfad an sich ist nicht falsch, da dieser sich mit der neuen Version nicht ändert. Es handelt sich um ein sogenanntes in-place Update, bei dem vorhandenen Verzeichnisse und Registrierungsschlüssel wiederverwendet werden. Damit werden alle 4.0 Assemblies entfernt. Eine Deinstallation von 4.5 bewirkt somit, dass man ohne .NET Framework endet.

 

Der folgende Screenshot zeigt den Stand nachdem eine bestehendes NET Framework 4 mit 4.5 aktualisiert wurde.

image

 

Ein funktionierender Build Server zeigt sich aber so:

image

 

Dazu muss das Windows SDK for Windows 8 (nicht 8.1!) installiert werden, welches ihr hier findet. Mit der Anwendung könnt ihr das eigentliche Setup herunterladen:

image

 

Nach der Installation am besten nochmal die Windows Updates laufen lassen und danach den grünen Build genießen.

NuGet Packages auf neue NET Version aktualisieren

Aktuell migrieren wir unsere Projekte / Solutions von .NET Framework 4.0 auf 4.5. Die Herausforderung bestand darin alle NuGet Packages, von denen wir viele verwenden, umzustellen. Ein Blick in die packages.config verrät, dass die installierten Pakete immer gegen eine entsprechende .NET Version gebunden sind:

   1: <?xml version="1.0" encoding="utf-8"?>

   2: <packages>

   3:   <package id="EntityFramework" version="5.0.0" targetFramework="net40" />

   4: </packages>

 

Dies lässt sich auch in den zugehörigen Assemblies ablesen:

image

Unter Path wird in diesem .NET 4.0 Projekt beispielsweise auf “packages\EntityFramework.5.0.0\lib\net40” verwiesen. Darüber ist es beim EntityFramework Package so, dass die Installation der aktuellen 5er Version in obigem Projekt lediglich die 4.4er Version referenziert wird. In der packages.config steht allerdings weiterhin 5.0.0.

Nach der Änderung des Target Frameworks auf 4.5, ergibt sich folgende Zeile in der packages.config:

   1: <package id="EntityFramework" version="5.0.0" targetFramework="net40" requireReinstallation="True" />

 

Der requiresReinstallations-Schalter bewirkt Warnungen beim Build. Um nun nicht alle packages von Hand aktualisieren zu müssen, gibt es den Befehl

update-package -reinstall

welcher die komplette Solution samt aller Projekte durchgeht und alle Packages deinstalliert und danach wieder gemäß dem gesetzten Target Framework installiert.

%d Bloggern gefällt das: