Vielen Dank noch mal an Dierk König, der letzten Dienstag bei uns für die Java User Group Berlin-Brandenburg einen Vortrag über parallele Programmierung mit GPars gehalten hat.
Seine Folien finden sich hier:
Gemeinsam mit der Java User Group Berlin-Brandenburg präsentieren wir am 16.10.2012 einen Vortrag von Dierk König zum Thema:
“GPars – Parallele Programmierung für Dich und mich”
Seit jeher bietet die Java platform gute Unterstützung für die nebenläufige Programmierung. Die Bordmittel für multithreading und Synchronisation haben aber ihre Tücken. Dierk König stellt daher zusätzliche Konzepte für den vereinfachten Umgang mit Nebenläufigkeit vor: fork/join, map/reduce, Aktoren, Agenten und Datenflüsse. Der Beispielcode wird mit GPars vorgeführt, Groovys Standardbibliothek für Nebenläufigkeit.
Speaker
Dierk König (JavaOne Rock Star) ist Fellow bei der Canoo Engineering AG in Basel. Er betreibt das Open-Source-Projekt Canoo WebTest und ist Committer in den Projekten Groovy, Grails, GPars und GroovyFX. Er publiziert und spricht auf internationalen Konferenzen zu Themen moderner Softwareentwicklung. Er ist Autor des Buchs “Groovy in Action”. Twitter: @mittie
Die Anmeldung erfolgt wie üblich über die XING Gruppe der JUG Berlin-Brandenburg.
Wir veranstalten seit 2008 regelmäßig alle fünf Wochen einen Hypoport internen IT Wissenstag. Dieser bietet uns die Möglichkeit uns über existierende wichtige Themen nicht nur Team-, sondern auch Geschäftsfeld-übergreifend auszutauschen. Die Inhalte werden von den Mitarbeitern bestimmt und organisiert und umfassen das gesamte Spektrum von fachlichen und technischen Themen. Wir wollen damit kommende Probleme innovativ lösen, eingetretene Pfade verlassen und attraktivere Produkte entwickeln.
Eine wichtige Voraussetzung für Kommunikation und Zusammenarbeit ist das Verständnis für agile Prozesse. Etwas spielerisch zu erleben kann hier viel wichtigere Erkenntnisse schaffen, als das theoretische Vermitteln von Prinzipien und Prozessen. Im Folgenden wollen wir von unseren Erfahrungen mit spielerische Ansätzen der Wissensvermittlung berichten.
Eine gute Möglichkeit, um einige Ideen hinter agilen Prozessen zu erleben, ist die sogenannte Marshmallow Challenge. Die zentralen Aspekte dieses Spiels sind die Zusammenarbeit und Selbstorganisation in einem Team und das Finden von kreativen Lösungen. Die Teilnehmer erfahren, warum iteratives Vorgehen mit schnellen Feedback Zyklen und ständiger Verbesserung bei der Bewältigung unbekannter Herausforderungen so erfolgreich ist.
Die gegeneinander antretenden Teams sollen innerhalb von 18 Minuten einen möglichst hohen freistehenden Spagetti Turm mit einer Marshmallow Spitze bauen.
Ihnen stehen für die Herausforderung folgende Materialien zur Verfügung:

Vier Teams bestehend aus 4 bis 5 Mitgliedern aus den unterschiedlichen Bereichen stellten sich an einem Wissenstag diesem Wettstreit. Die Teams legten mit viel Kreativität und Engagement los und man sah Wunderwerke in den Himmel wachsen. Hierbei verfolgten die Akteure die unterschiedlichsten Strategien und brachten die größte Unbekannte, den Marshmallow, unterschiedlich früh in Spiel. Von einer erfolgreichen “Ta-Da” Präsentation des höchsten Turms, bis zu einem “Oh-Oh” einer der Schwerkraft Tribut zollenden Konstruktion Sekunden vor der offiziellen Messung, war alles vertreten.
Unsere langjährige Erfahrung mit agilen Prozessen spiegelte sich auch in dem Gesamtergebnis wieder. Drei von vier Teams erbauten 70 bis 75 Zentimeter Höhe Türme. Laut Tom Wujec liegt die durchschnittlich erreichte Turmhöhe bei rund 50 cm. Es wird vielleicht für Überraschung sorgen, welche Menschen die kreativsten und höchsten Türme bauen.
Wer diese Teams neben uns sind und weitere Hintergründe zur Marshmallow Challenge finden sich im TED Talk von Tom Wujec und dem dazugehörigen Blog. Mit viel Spaß die Grundprinzipien von agilen Prozessen zu erleben, war eine spannende und empfehlenswerte Erfahrung.
In unseren vorherigen Artikeln zu Kanban in der Softwareentwicklung – Praxis-Check bei Hypoport und Kanban & Kaizen – Fallstudie hat Andreas bereits von unseren Kanban Erfahrungen berichtet. Wir haben bei Hypoport viele produktübergreifende Projekte, in denen sowohl Scrum als auch Kanban Teams in die Produktentwicklung involviert sind.
Mit dem Einsatz beider Ansätze ergaben sich verschiedene Fragenstellungen, z.B.:
Diesen Fragen haben wir uns an unserem letzten Wissenstag mit dem Kanban Pizza Game von agile42 spielerisch genähert. Beim Kanban Pizza Game bekommen die Mitspieler ein Gefühl für die Einführung von Kanban auf einem beliebigen Prozess. Im Vordergrund steht das Erleben und Fühlen von Kanban, das Verinnerlichen von Pull statt Push und warum ein gleichmäßiger Fluss in Kanban so wichtig ist.
Ziel des Spiels ist es als Team möglichst viele fertige Pizzastücken zu produzieren. Gespielt wird in Teams mit 4 bis 5 Personen, die sich nicht nur auf die Produktion der Pizzastücken konzentrieren können, sondern gleichzeitig Verschwendung vermeiden und sich auf Änderungen einstellen müssen.
Stellen wir uns folgende Situation vor: Wir eröffnen einen neue Pizza Bäckerei und wollen zu Beginn so viele Hawaii Pizza Stücke wie möglich herstellen. Es ist unser Eröffnungstag und wir verschenken Pizza Stücken an viele Kunden, um unser Geschäft zu etablieren.
Kanban kann mit sehr wenigen Veränderungen auf jeden existierenden Prozess angewandt werden. Die Teams starten in die erste Runde und etablieren einen “natürlichen” Prozess für die Pizza Produktion.
Die konkreten Vorgaben lauten: “Produziert so viele Pizza Stücken wir möglich und vermeidet Verschwendung!”
Ein fertiges Pizzastück Hawaii Pizza besteht aus:

Nach einer vorher nicht angegeben Zeit wird die erste Runde beendet und jedes fertig produzierte Pizzastück wird mit 5 Punkten bewertet. Die Teams zählen stolz die erreichten Punkte.
Aber es gab noch die im zweiten Teil des Satzes formulierte Vorgabe, die Auswirkungen auf die erreichten Punkte hat. Vermeidet Verschwendung! Dies traf die Teams hart.
Von der Gesamtsumme werden nun Punkte für jedes Materialstück innerhalb des Fertigungsprozesses abgezogen. Dies bedeutet konkret:
Im nächsten Schritt werden die Grundpraktiken von Kanban auf den aktuellen Prozess angewandt:
Die Teams erhalten 5 min Zeit die Stationen durch Klebeband auf dem Tisch zu visualisieren, Limits für diese Stationen zu definieren und ihren Prozess zu verbessern.
Die zweite Runde startet und die Teams produzieren wie in der vorherigen Runde Hawaii Pizzastücken und zählen im Anschluss die Punkte.
„Jetzt wird es ernst. Unser Pizza Laden nimmt seinen regulären Betrieb auf und wir produzieren auf Bestellungen.“
Auf einer Bestellung befindet sich die Anzahl der zu produzierenden Pizzastücken und es werden nur fertige Bestellungen gewertet. Die Teams erhalten 2 min Zeit ihren Prozess anzupassen bevor es in die dritte Runde geht.
Wie im echten Leben bekommen wir Anforderungen, die unsere bisherigen Prozesse durcheinander bringen. „Unser Pizza Laden expandiert und wir nehmen als zusätzliche Sorte die Rucola Pizza mit auf.“
Eine Rucola Pizza besteht aus:
Das Kanban Pizza Game hat allen Teilnehmern eine Menge Spaß gemacht und konnte die Grundprinzipien von Kanban gut vermitteln. Gerade die Reflektionsphase regt zu Gesprächen und aktiver Auseinandersetzung mit diesen Themen an.
Die vorgestellten Spiele eignen sich nicht nur für Teilnehmer, die sich frisch mit agilen Werten und Prinzipien beschäftigen. Die spielerische Auseinandersetzung mit agilen Ansätzen ermöglicht auch erfahrenen Teams, einen anderen Blick auf die eigene Arbeitsorganisation zu werfen und rückt die agilen Prinzipien wieder in den Aufmerksamkeitsfokus.
Chris hat uns dankenswerter Weise die Tonaufnahme und die Folien zur Verfügung gestellt.
Die Slides sind aktualisiert und enthalten Beispiele der Restructuring Strategies! Schaut sie euch ruhig noch mal an.
Letzten Donnerstag hatten wir die Gelegenheit die Java-User-Group Berlin Brandenburg zu einem Talk mit Brett Schuchert einzuladen. Brett war bei uns im Rahmen eines 4-tägigen internen Kurses zu Entwicklungsprinzipien. Er hatte sich dankenswerter Weise bereit erklärt, nicht nur für uns, sondern auch öffentlich noch eine Abendveranstaltung zu machen. Als Thema wählten wir “Working effectively with Legacy Code” (siehe Ankündigung). Das gleichnamige Buch seines Kollegen Michael Feathers ist übrigens sehr empfehlenswert. Der Talk war tatsächlich komplett ohne Folien. Brett hatte die Code-Beispiele extra vorbereitet. Die Beispiele finden sich für Interessierte in GitHub.
Falls sich jemand gewundert hat, warum Brett zwei Mikrofone verwendet hat, er hat den gesamten Talk aufgezeichnet und auf Vimeo veröffentlicht.
Die JUG Berlin-Brandenburg und die Hypoport AG laden euch herzlich am 10.11.2011 von 19 bis ca. 22 Uhr zu unserer Veranstaltung “WORKING EFFECTIVELY WITH LEGACY CODE” mit Brett Schuchert einladen. Brett ist ein ObjectMentor, ebenso wie dies Uncle Bob (Clean Code) ist.
Zum Inhalt:
Michael Feathers (ebenfalls ein ObjectMentor) defines legacy code as code lacking automated checks. You cannot simply change it without risking breaking something. If the code were not yet deployed, that might not be too painful but since we are talking about legacy code, it’s probably already deployed so we have to tread carefully.
Gestern hat Headway sein User Group Sponsoring vorgestellt. Am 06.03.2012 wird Headway bei uns in der Klosterstr. 71, Berlin sein und Structure101 und Restructure101 vorstellen. Merk dir das Datum und vielleicht zählst du zum Gewinner der Lizenzverlosung.
Mehr Infos wird es später im Rahmen der JUGBB geben.
Die Veranstaltung der Java User Group Berlin-Brandenburg am 12.10. unter dem Titel “Fighting Layout Bugs” bescherte uns wieder ein volles Haus. Der Vortrag von Michael Tamm enthielt viele durchaus überraschende Ideen, wie man Layout Probleme automatisiert finden kann. Das Ganze lässt sich noch mal in seinen Folien nachlesen:
Am Mittwoch 12.10. wird Michael Tamm bei uns in der Klosterstrasse 71 einen spannenden Vortrag zum Thema „Fighting Layout Bugs“ halten.
Um was geht’s in dem Vortrag:
Für die “normale” Programmierung gibt es Unit Tests. Aber wie können automatische Tests für die Arbeit von HMTL- und CSS-Programmierern aussehen? Wie kann man sicherstellen, dass jede Webseite so aussieht, wie es sich der Designer vorgestellt hat? Wie können automatische Tests für Layoutfehler aussehen? Der Vortrag beantwortet
genau diese Fragen: Es werden mehrere typische Layoutfehler gezeigt und einige
alte sowie innovative neue Techniken vorgestellt, wie mit Hilfe der
Open-Source-Bibliotheken http://fighting-layout-bugs.googlecode.com sowie
http://selenium.googlecode.com Layoutfehler automatisch erkannt werden können.