... Organisationsentwicklung,, Aikido, Strategie und alles was mir sonst noch einfällt und nicht in mein englisches Blog passt...

Donnerstag, 5. September 2013

Es gibt keine Server für kontinuierliche Integration (oder auch "CI-Server" ist ein Oxymoron)

Sätze wie

  • „Der gesamte Vorgang wird automatisch ausgelöst durch Einchecken in die Versionsverwaltung.“[1]
  • „<x> is an open-source continuous integration server with...“ [2]
  • „[…] Kontinuierliche Integration steigert die Effizienz durch Automatisierung […]“[3]

zeigen mir immer wieder die immense Macht der semantischen Diffusion.

Es gibt keine CI-Server – selbst Szenarien, in denen der Server am Ende eines fehlerhaften Buildlaufes das gelieferte Changeset zurückweist, stellen nicht sicher, dass die Teilergebnisse wirklich integriert werden.

Was oft als CI-Server beschrieben wird, sind Build-Server, integriert wird hier nichts. Buildserver gibt es durchaus auch in meinem Vokabular, kontinuierliche Integration aber, so wie ich sie das erste Mal 2001 bei Kent Beck beschrieben gesehen habe, ist eine Arbeitsweise, bei der alle Beteiligten sicherstellen, dass ihre letzten fertiggestellten Arbeitsergebnisse in das Gesamtprodukt integriert sind. Dorthin zu kommen, gibt es viele Wege, aber keiner davon ist durch einen Server zu automatisieren.

Auf abstraktem Niveau ist das Vorgehen immer wieder das Gleiche:

  • An den eigenen Arbeitsergebnissen arbeiten
    • Sicherstellen, dass die aktuelle Version des Produktes funktioniert
    • Meine eigenen Arbeitsergebnisse integrieren
    • Sicherstellen, dass die jetzt aktuelle Version des Produktes funktioniert
    • wenn sie nicht funktioniert, wieder einen funktionierenden Stand herstellen
      • Wenn dies ebenfalls nicht funktioniert, dann das ganze Team zusammenrufen, um wieder einen funktionierenden Stand herzustellen
    • Die eigenen Arbeitsergebnisse modifizieren, bis berechtigter Grund zu der Annahme besteht, dass eine Integration jetzt erfolgreich sein kann
  • Das Ganze so lange wiederholen, bis die eigenen Arbeitsergebnisse komplett in das Gesamtprodukt integriert sind, bevor neue Halbfertigteile produziert werden

In der Praxis gibt es sehr viele valide Ausprägungen dieses Vorgehens, die unter anderem auch die Nutzung von Buildservern umfassen können. Sie alle aber scheinen zunächst einen erheblichen Nachteil zu haben, der meiner Meinung nach Ursache dafür ist, dass so oft keine permanente Integration stattfindet, sondern statt dessen das fehlen der Integrationsarbeit hinter dem Feigenblatt des „Integrations-Servers“ versteckt wird.
Dieser Nachteil ist, dass in dieser Welt nicht mehrere „Änderungen“ zur gleichen Zeit integriert werden können. Und da die Integration nach diesem Modell ja erst abgeschlossen ist, wenn das System nachweislich funktioniert, steht und fällt die Umsetzbarkeit dieses Vorgehens mit der Zeit, die benötigt wird, um das Funktionieren des Gesamtsystems nachzuweisen.

An dieser Stelle sind zwei grundsätzlich unterschiedliche Herangehensweisen üblich. Eine Lösung für die Herausforderung kann sein, die Zeit zu minimieren, die benötigt wird, um das Funktionieren des Gesamtsystems nachzuweisen. Das ist der „harte” Weg, der zunächst deutlich schwieriger scheint und es erforderlich macht, sich mit allen Problemen auseinanderzusetzen, sobald sie auftauchen. Eine andere – scheinbare – Lösung, dieser Herausforderung zu begegnen, ist die Entkopplung der Integration von der Weiterführung der Arbeiten. Hier haben dann automatisierte Integrationstests und die sogenannten „CI-Server” ihren großen Auftritt.

Das Vorgehen hier ist also:

  • An den eigenen Arbeitsergebnissen arbeiten
  • Die eigenen Arbeitsergebnisse zur Verifikation an den Integrationsserver abgeben (möglicherweise von mehreren Teams zur Zeit)
  • An neuen eigenen Arbeitsergebnissen arbeiten
    hier haben wir je nach Anzahl der Entwickler mehr oder weniger nicht-integrierten Code
  • Falls (später) ein Fehler vom Server gemeldet wird, versuchen diesen zu beseitigen

Das ist natürlich viel einfacher, es gibt keine Schleifen, die man drehen muss, keine Synchronisation mit anderen Integrationswilligen, keine Wartezeiten während der Integration.

Das große Problem bei diesem Vorgehen ist nur, dass nicht verifizierte Teilfertigprodukte entstehen – um so mehr, je häufiger die Entwickler ihre Teilergebnisse an den Server überantworten.

Es gibt zwar schon geraume Zeit Ansätze dieses Thema auch technisch zu adressieren – z. B. mit gerrit und darauf aufsetzenden Workflows – aber hier dienen die Werkzeuge erfreulicherweise der Unterstützung der Menschen, und es wird nicht unterstellt, dass sie die Integration durchführen.

Eigentlich lässt sich ganz leicht feststellen, ob es in einer Umgebung eine permanente Integration gibt oder nicht – immer dann, wenn es fehlerhafte Builds gibt, scheint die Integration weder permanent noch kontinuierlich zu sein.
Schließlich ist in der „roten“ Zeit mindestens der für den Fehler verantwortliche Teil eben gerade nicht integriert. Und wenn die Build-Zeit lang genug ist, dann ist in der Zeit Neues entstanden, was ebenfalls nicht integriert ist. Und während die Fehler behoben werden steigt die Menge nicht integrierter Teilprodukte, wenn die anderen Projektmitglieder weiter arbeiten.
All dies passiert nicht, wenn tatsächlich nach dem oben beschriebenen Muster permanent integriert wird!

Wer also permanente Integration (continuous integration) will, muss sich meiner Ansicht nach auf Prozessebene damit auseinandersetzen und wir alle sollte Build-Server auch Build-Server nennen und den Begriff CI-Server meiden, solange diese keine wirkliche Integration betreiben können.

Bis zum nächsten Mal
  Michael Mahlberg

Quellen aus der Einleitung:

Und gerade noch im Netz gefunden: Bereits vor 2006 hat Jim Shore seine Einstellung zu Continuous Integration veröffentlich, und hatte insbesondere seine eigene Meinung zu CruiseControl (einem speziellen Build-Server)

Dienstag, 3. September 2013

Unpopuläre Thesen 2013-09-03: "Agil" sollte beweglich bleiben – und Lean sollte schlank bleiben

Agile Software-Entwicklung hätte fast den Namen Adaptive Software-Entwicklung bekommen - vielleicht wäre dann vieles gar nicht erst so Missverstanden worden. Vielleicht aber auch doch - semantische Diffusion ist stark in unserer Branche.

Sehr schön in diesem Zusammenhang: Die Rückbesinnung einiger Twitterer auf ein paar wesentliche Punkte des agilen Manifests:

sie haben gesagt "[…] indem wir es tun und anderen dabei helfen es zu tun […]" und nicht "[…] indem wir anderen erzählen, wie sie es tun sollten, ohne es selbst zu tun […]" -- Tweet von Torbjörn Gyllebring, 2013-08-29

Zur Erinnerung: sie sagten "Wir erschließen bessere Wege, Software zu entwickeln" und nicht "wir haben bessere Wege erschlossen[…]" -- Tweet von Steve Rogalsky, 2013-08-29

In diesem Sinne, bis bald
  _MM_

Mittwoch, 7. August 2013

Wir haben Baseball ausprobiert und es hat nicht funktioniert!

Eine Allegorie? Sarkasmus? Humorvolle Persiflage? Entscheiden sie selbst.

Von Ron Jeffries, Original unter: http://xprogramming.com/articles/jatbaseball/

Die fanatischen Fürsprecher des Baseballs erzählen uns, es sei ein unglaublich tolles Spiel, das sowohl den Spielern als auch den Zuschauern viel Spaß macht. Es ist ganz klar zu erkennen, dass die Fürsprecher entweder dumm oder böse sind, denn wir haben Baseball ausprobiert und es hat nicht funktioniert.

Es fängt schon damit an, dass die Anforderungen um das Spiel zu spielen unsinnig sind - sie lassen sich einfach nicht skalieren. Es werden mindestens neun Spieler pro Seite verlangt. Das ist unglaublich ineffizient. Die Minimalanzahl an Spielern ist ganz klar vier: drei im Spiel und einer am Abschlag. So haben wir auch gespielt vier Spieler pro Seite.

Mit nur vier Spielern brauchten wir auch nicht all diese Male (die Namensgebenden 'bases'), was ein weiteres Indiz für die offensichtliche Ineffizienz und die mangelnde Skalierbarkeit ist. Wir haben deshalb nur ein einziges Mal benutz - die 'Home-Base'. Wenn eine schlagende Person einen Ball schlägt, dann läuft er um ein Quadrat - mehr dazu gleich - um dann zurück zum einzigen Mal zu kommen. Zuerst ließen wir den Läufer um das komplette 90 Fuß (ca. 27 Meter) Quadrat laufen, wie es die Baseball-Befürworter empfehlen. Aber aus irgendeinem Grund haben die Baseballleute nicht bemerkt, dass 360 Fuß (ca. 110 Meter) bei den meisten Treffen viel zu weit ist, um sie rechtzeitig zurück zu legen. Bei uns hat es nie jemand geschafft, die ganze Strecke zu laufen ohne aus dem Spiel genommen zu werden. Wir haben festgestellt, dass ein Kreis mit einem Durchmesser von exakt 28,64 Fuß (8,73 Meter) nahezu ideal ist. (Der Kreis, mit seinem idealen Verhältnis von von Fläche zu Umfang, ist auch viel effizienter als das von den Baseballern vorgeschlagene Quadrat.)

Die Ausrüstung, die die Baseball-Leute "verlangen" ist einfach lächerlich, anachronistisch, diskriminierend und gemein. Als erstes wird verlangt, das der "Baseball" mit Pferdeleder bedeckt ist.Das ist gleichzeitig brutal gegenüber den Pferden und diskriminierend gegenüber den traditionellen Lieferanten von Ball-Aussenmaterial, Schweinen und Kühen. Vor diesem Hintergrund haben wir andere Bälle benutzt. Wir haben einen Ball aus un-umhülltem Garn ausprobiert, aber die permanent abnehmend Größe dieser Bälle mache das Spiel schwierig, besonders in den späteren Runden. Golfbälle flogen viel zu weit und waren schwer zu fangen. Eines unserer Teams versuchte es mit den Köpfen von Puppen, die sie von Ihren Schwestern geborgt hatten, aber das führte zu Problemen zuhause. Wie die Befürworter von Baseball ein Spiel unterstützen können, das zu solchen Problemen führt ist uns unverständlich.

Am Ende haben wir uns für Wollsocken entschieden - mit Altpapier gestopft und verknotet. Diese waren einfach zu fangen, flogen nicht zu weit und das herabhängende Ende des Knotens machte es leicht, sie wieder zu werfen.

Die sogenannten "Bats" (Bat kann im Englischen sowohl Fledermaus als auch Schläger bedeuten) sind auch eine schlechte Idee. Zuerst mal haben sie überhaupt keine Ähnlichkeit mit den pelzigen Insektenjägern der Nachthimmel. Die daraus entstandene Verwirrung über die Namensgebung hat viele Spiele verzögert. Zudem sind "baseball-bats" (wir mussten zu vollqualifizierten Namen übergehen) teuer und schwer herzustellen. Wie haben versucht alle Schlagleute das nutzen zu lassen, was sie wollten, aber das machte es sehr schwierig Statistiken zu führen und die scheinen nach Aussagen der Befürworter eine weitere Schlüsselkomponente von Baseball zu sein. Am Ende haben wir und darauf zurückgezogen, Äste zu nutzen, die um das Feld herum zu finden waren. Pinien funktioniert am besten, weil die Äste leicht von den Bäumen zu brechen sind. Und da die Hände vom Pinien-Harz klebrig werden, wird es leichter die Socke zu fangen, wenn man auf dem Feld ist.

Wo wir gerade beim Feld sind: Ein weiteres Problem, dass die Baseball-Freunde nicht vernünftig adressiert haben ist die Tatsache, dass mit einer Person werfend, einem Fänger und nur zweien auf dem Feld, der "Ball" zu oft dorthin geschlagen wird, wo kein Feldspieler ist, was zu viel zu viel Gelaufe und zu Spielen führt, die viel zu lang sind und viel zu hohe Ergebnisse haben. Letztendlich haben wir herausgefunden – ohne das wir nachvollziehen können, warum die ursprünglichen Baseball-Leute das nicht gesehen haben – das es fürchterlich ineffizient ist, nur einen Spieler als Fänger einzusetzen. Wenn die Astperson (Der Begriff "Batter" ist sowohl mehrdeutig als auch unangebracht durch die Änderungen an der Ausrüstung, die wir einführen mussten um das Spiel überhaupt nutzbar zu machen) einen Wurf verfehlt, dann nimmt er einfach selber die Socke und wirft sie der werfenden Person wieder zu. Auf diese Weise können alle vier Defensivspieler auf dem Feld bleiben, was einem sehr viel effizienteren Ressourceneinsatz entspricht - ein weiterer Beweis dafür, das Baseball nicht skalierbar ist.

Der Punkt, der der gesamten Idee von Baseball aber den Todesstoß versetzt ist dies: Selbst mit all diesen Verbesserungen macht das Spiel überhaupt keinen Spaß!

Wir haben Baseball ausprobiert und es hat nicht funktioniert!

Übersetzung Michael Mahlberg mit freundlicher Genehmigung des Autors wartet auf Genehmigung des Autors

Translation Michael Mahlberg with author's permission still waiting for permission from the author

Donnerstag, 18. Juli 2013

"Selbstorganisierende" Gruppen und De-Motivation...

... es ist für mich immer wieder erstaunlich, wie wenig selbst erfahrene Coaches realisieren, dass Commitments nur funktionieren, wenn sie zweiseitig sind (Beispiel: "Ich finde <X> sollte <Y>" bedeutet erst dann, dass <X> dass auch so sieht, wenn er zustimmt – nicht, wenn er nicht widerspricht) und das man das Engagement massiv untergräbt, wenn man Micromanagement betreibt ...

Auf der anderen Seite ist natürlich das Problem da, dass selbstorganisierende Gruppen, wenn man sich zu weit zurück zieht, sich weit vom ursprünglichen Zweck entfernen - die Herausforderung ist hier, dass passende Gleichgewicht zu finden.

Daher: Notiz an mich selbst: Micromanagement demotiviert immer und direkte Kommunikation ist durch nichts zu ersetzen!
Nicht, dass ich das nicht schon lange wüsste und immer wieder predige, aber man kann es einfach nicht oft genug wiederholen

Cheers
  Michael

Donnerstag, 4. April 2013

Kontaktanfragen auf Xing, ...

... sind ja eine schöne Sache, wenn sie von Leuten kommen, die man kennt.
Aber wie antwortet man auf all die Kontaktanfragen von Leuten, die meinen "Wir haben laut profil die gleichen Interessen, wir sollten Xing-Kontakte sein...

Das hängt sicher von dem jeweiligen Nutzungsprofil ab – mein Nutzungsprofil stammt noch aus Zeiten des openBC und dementsprechend ist für mich der Stellenwert des 'Kontaktes' bei Xing erheblich höher, als der des 'Freundes' bei Facebook.

Und für Diskussionen auf Xing muss man ja nicht in der gegenseitigen Kontaktliste stehen.

Hier meine Standardantwort auf Xing-Anfragen von Leuten, die über Profilähnlichkeiten, gemeinsame Gruppenzugehörigkeit oder ähnliche Dinge zur Kontaktanfrage kommen - zum freien kopieren und modifizieren.

Sehr geehrte<....>

vielen Dank für Ihre freundliche Kontaktanfrage.

Meine Nutzung von Xing geht auf Zeiten zurück, in denen Xing noch OpenBC hieß und aus dieser Zeit stammt auch noch mein Regularium für die Kontakteliste - in meinen Xing-Kontakten befinden sich nur Leute, mit denen mich eine konkrete, bereits erfolgte Zusammenarbeit (auch virtuell und für kurze Zeit) oder eine persönliche Bekanntschaft aus der physischen Welt verbindet. 

Ich habe Ihre Kontaktinformationen unter "gemerkte Personen" hinterlegt und werde gerne auf Sie zurückkommen, wenn ich einen konkretes, passendes Thema habe.

Gerne können Sie mich natürlich weiterhin ganz normal zu konkreten Themen kontaktieren - meine Xing-Knfiguration erlaubt es auch Nicht-Kontakten mir ganz normale Nachrichten zu schicken.

Mt freundlichen Grüßen

Dienstag, 26. März 2013

Selbstmarketing: 4-, setzen

Bin gerade beim suchen nach Promotions-Material über die Flyer gestolpert, die ich Mitte letzten Jahres mal entwickelt habe um Leuten, die nicht "aus der Branche" sind erläutern zu können, was ich eigentlich mach und an welchen Stellen sie durch die Dienstleistungen meines Unternehmens besser werden könnten.

Hat bis heute noch keiner heruntergeladen... 

Ach ja: Ich habe sie ja auch nirgendwo veröffentlicht... Wie mein Patenkind schreiben würde: (facepalm) 

Im Sinne von "Vorratshaltung ist Verschwendung" eine wirklich unglaubliche Nachlässigkeit, denn wenn sie niemand zu Gesicht bekommen kann sind sie irgendwann überholt (jetzt noch nicht ;-) ) und dann war der Aufwand wirklich Verschwendung. So beläuft sich der Schaden nur auf 10 Monate "Nicht-Nutzung des Produktes", durch die fehlende Veröffentlichung.

Auch wenn noch zwei  Flyer fehlen, hier schon mal – zumindest geblogged – die fertigen:
InhaltDatei
ÜberblickPaketueberblick-2012-07.pdf
Aufsetzen von ProjektenProjectJumpstart2012-07.pdf
Einschätzung der ProzesseAgilityAssessment-2012-07.pdf
Coach the Coach fehlt
Second Opinionfehlt

Montag, 25. Februar 2013

Multitasking - Weniger tun um mehr zu schaffen

Hier die wichtigsten Links zu dem Vortrag zum Thema "Multitasking - weniger tun um mehr zu schaffen, den ich am 21.02. im Startplatz  gehalten habe.

Die Folien selber sind für kurze Zeit unter http://www.michaelmahlberg.de/WenigerTunUmMehrZuSchaffen.pdf zu bekommen.

Nebenbei: Wer mehr zu Lean und Kanban für Wissensarbeit in Unternehmen wissen möchte, kann auf der Kanbankonferenz im Startplatz am 19.04.2013 viel dazu erfahren - jetzt aber zu den angekündigten Links:

Die Idee zur Simulation mit ausführlicher Erläuterung ist auf der Website von Henrik Kniberg zu zu finden.

Die Publikationen zu Little's Law sind inzwischen sehr Umfangreich - eine der interessantesten Darstellungen dazu ist für mich die englische Präsentation von Daniel Vacanti von der LCKE 2012.

Auf Deutsch beschreibt natürlich der Wikipedia-Eintrag zu Littles Gesetz dessen Grundlagen, aber leider sehr kurz.

Auch für Personal Kanban ist die wichtigste Website derzeit nur auf Englisch verfügbar: http://www.personalkanban.com/pk/, aber das Buch zu Personal Kanban ist mittlerweile auch auf Deutsch verfügbar.

Die Pomodoro-Technik allerdings ist auf der englischen Website meiner Ansicht nach inzwischen viel zu aufgeblasen, so dass hier eher der deutsche Wikipedia-Eintrag eine hilfreiche Quelle ist - von der englischen Website nutze ich selber nur noch von Zeit zu Zeit das Cheat-Sheet, das auf einer Seite alles wesentliche zu Pomodoro-Technik zusammenfasst.

Bei weiteren Fragen: Einfach eine kurze Mail an mich schicken, oder es hier in den Kommentaren vermerken.


Cheers
  Michael

P.S.: Einen sehr spannenden Beitrag zu genau diesem Thema hat mir Dorthe von Smartklick Solutions noch geschickt: Auch in Wissenschaftssendungen im ZDF hat man eine klare Meinung zur Effektivität von Multitasking - ab ca. Minute 25 wird in dieser Folge von neo darauf eingegangen. Man beachte besonders die Aussagen ab39:59 und 43:32... Vielen Dank für diesen Hinweis, Dorthe!