Neustart

Uncategorized No Comments »

Im gesamten Jahr 2010 habe ich keinen Blogeintrag hier veröffentlicht. Und das obwohl — oder grade weil? — es eines der bewegendsten Jahre meines Lebens war. Es ist sehr viel passiert, aber vieles davon hat sich im Hintergrund abgespielt oder hatte hier nicht den richtigen Platz. So habe ich zum Beispiel die Lernfortschritte im Fernstudium in einem anderen, nicht-öffentlichen Blog erfasst. Gedankengänge von mir und interessante — oder auch kurzweilige — Inhalte habe ich über Twitter oder Facebook verbreitet, statt sie hier zu posten. Zudem war ich mir über die Ausrichtung dieses Blog immer weniger sicher. Wollte ich zunächst doch nur über die Webentwicklung — speziall über den Frontend-Bereich — schreiben, so möchte ich nun eine vielfältige Auswahl an Themen ansprechen.

In Zukunft möchte ich meine Online-Aktivitäten bündeln. An dieser Stelle werde ich häufiger, prägnanter und für ein breiteres Publikum geeignete Inhalte veröffentlichen. Das neue Layout trägt diesem Gedanken Rechnung.

XP-Days Germany 2009 – Teil 1

Conferences 2 Comments »

Sorry folks, this is German only, since it is about a German conference...

Ende der letzten Woche nahm ich an den XP-Days teil, die von it-agile und andrena objects ausgerichtet wurden und in den Räumlichkeiten der IHK Karlsruhe stattfanden. Da ich bislang mit agilen Entwicklungsmethoden nicht nicht in Berührung gekommen bin, das Thema selber aber für sehr zentral und besonders wichtig für Softwareentwickler erachte, wollte ich mir durch den Konferenzbesuch einen Überblick verschaffen und aktuelle Aspekte kennenlernen.
Bislang hatte ich mich in XP und Scrum nur eingelesen, aber noch keine praktischen Erfahrungen gemacht. Daher habe auch nicht an den Tutorials am Donnerstagmorgen teilgenommen, sondern bin am Nachmittag eingestiegen.

Donnerstag

Collaboration - Agile Softwareentwicklung in verteilten Teams

Sprecher: Wolfgang Kraus

Wolfgang erklärte zunächst, was die Vorteile eines verteilten Teams sind: die Verfügbarkeit von Entwicklungsressourcen und die geringeren Entwicklungskosten. Er berichtet weiter von seinen Erfahrungen über eine Webanwendung, die an drei Standorten weiterentwickelt und gewartet wurde. Da auch der Kunde nicht immer vor Ort sei, sei es auch kein Problem, dass das Team selber nicht vor Ort sei um zusammenzuarbeiten. Während Wolfgang kaum Unterschiede im kulturellen und sprachlichen Bereich gemerkt habe, sei ihm deutlich aufgefallen, dass das Verständnis für Geschäftsprozesse stark vom Standort der Entwickler abhänge. So gelänge es einem Weißrussen leichter, sich in deutsche Geschäftsprozesse einzuarbeiten, als einem Chinesen. Wolfgang stellte heraus, wie wichtig es sei durch geeignete Werkzeuge, die teilweise einfach nötig sind beim verteilten arbeiten (Wiki, SVN), den Entwicklern Vorgaben zu machen und die nötige Transparenz zu erhalten. So lasse sich auch die Qualität eines Entwicklers mit metrischen Kennzahlen einfach messen. Bei dem angesprochenen Projekt wurden sämtliche Planungsmeetings komplett per Chat abgehalten und es fanden während der gesamten Projektdauer nur zwei Treffen mit den Entwicklern statt.
Wolfgangs Vortrag führte schon von Beginn an zu einer kontroversen Debatte. Viele der Teilnehmer hatten bei ihren Offshore-Projekten ganz andere Erfahrungen gesammelt und betonten vor allem, dass sie sehr wohl kulturelle Unterschiede bemerkt hatten. Zudem hat es viele der Anwesenden verwundert, dass sich Meetings im Chat abhalten lassen, da auf diese Weise viele (nonverbale) Signale nicht ankommen, die bei eine Telefon- oder Videokonferenz übertragen werden. Viele hatten zudem die Vermutung, dass durch den überhöhten Einsatz der Werkzeuge eine falsche Sicherheit aufgebaut wird, die echtes Vertrauen in die Entwickler nicht ersetzen kann.
Mir persönlich hat der Vortrag nur in Teilen gefallen. Die Informationen über das Projekt waren, unabhängig davon, ob sie sich auf andere Projekte übertragen lassen, sehr interessant und anschaulich. Allerdings störten die vielen Diskussionen den Erzählfluss, zumal sie bereits nach den ersten Folien begannen. Der Referent verlor dadurch an einigen Stellen den Faden und übersprang die, im übrigen bestenfalls durchschnittlich gestalteten, Folien. Als großes Manko sehe ich an dem Vortrag, dass de Rote Faden nicht sichtbar war, oder zumindest, aufgrund der ständigen Unterbrechungen, nicht sichtbar werden konnte. Mir fehlte dadurch auch ein Fazit.

Pecha Kucha 1

Stop the Line in der Softwareentwicklung von Stefan Roock
Unsere Reise ins agile Land von Markus Andrezak
Mein agiler Koffer von Holger Koschek
Kreativität und Agilität im Unternehmen von Simon Roberts

Vorab muss ich zu dieser Session sagen, dass ich zum ersten mal ein Pecha Kucha miterlebt habe. Da prägnante und anschauliche Form gefällt mir sehr und macht einfach nur Spass mitzuerleben! Der Vortragsraum war so gefüllt, dass ich leider keine Sitzgelegenheit mehr ergattern und somit auch nicht mitschreiben konnte. Ich versuche jetzt, so gut es geht, aus dem Gedächtnis zu schreiben.

Stefan Roock erzählte von den Autofabriken bei Toyota. Dort hängen Leinen, die die Arbeiten ziehen sollen, wenn es ein Problem gibt. Ein Licht an einer für alle einsehbaren Tafel leuchtet dann auf und ein Vorgesetzter sieht sich das Problem an, um zu entscheiden, ob das Band angehalten werden muss. Wenn das Licht nun ständig leuchtet, dann ist der Arbeitsplatz überlastet und die Ressourcen müssen anders verteilt werden oder der Prozess angepasst werden. Wenn das Licht zu selten an ist, ist die Arbeitsgeschwindigkeit zu gering und der Arbeitsplatz nicht genügend ausgelastet. Im Idealfall blinken also alle Lichter mit einer mittleren Frequenz. Stefan zog nun die Analogie vom Toyota Production System auf die Softwareentwicklung und überlegte, ob es nicht auch für uns Entwickler eine Möglichkeit geben sollen, an der Leine zu ziehen um zu signalisieren, dass es ein Problem gibt. Anstatt das Band anzuhalten, könnte man Features streichen oder sogar das Release verschieben.

Markus hat seinen agilen Koffer (übrigens ein Rimova!) für eine Reise gepackt und dabei auf sehr anschauliche und lustige Weise erzählt, was alles in diesen Koffer gehört.
An den Vortrag von Simon habe ich leider keine Erinnerung (mehr). :( Wobei auch ein Pecha Kucha auch ziemlich fordern ist, da man alle 20 Sekunden eine neue Folie hat und parallel dem Erzähler zuhört, welcher offenbar auch ein ganz schönes Tempo anschlägt. Ich meine mich zu erinnern, dass Simon den Vortrag wie eine Geschichte vorgetragen hat...

Update:
Danke an Bernd und Holger, die mich auf diesen Fehler hingewiesen haben: Simon Roberts ist krankheitsbedingt ausgefallen und Holger Koschek ist mit seinem Ersatzvortrag Mein agiler Koffer eingesprungen. Markus hingegen erzählte von der Reise ins agile Land. Alle Klarheiten beseitigt? ;)

TDD mit den Stars (Vorrunde)

In der Pause fand die Vorrunde zu einem Programmierwettbewerb statt, bei dem vier Team gegeneinander in — wie konnte es auch anders sein — Test Driven Development antraten.

Jedes der drei Jury-Mitglieder vergab dabei zwischen 0 und 7 Punkte, die, zur Belustigung aller, mittels drei Ziffern in binär ausgedrückt werden mussten. Während die Jury jedes Team nacheinander bewertetet, hatte das Publikum am Ende aller Vorstellungen noch die Gelegenheit jedes Team mit 3, 5 oder 8 Punkten zu bewerten. Diese Punkte wurden dann zu dem Ergebnis der Jury addiert.

Jedes Team, bestehend aus zwei Personen, hatte die Möglichkeit sich eine Woche auf den Wettkampf vorzubereiten. Es gabe vier Themenvorschläge: Test Driven Refactoring, TDD in Legacy Code, TDD from Scratch und TDD mit Akzeptanztest.

1. Team: Ruby simuliert Pokens. TDD mit TDD mit Akzeptanztest
Es wurden Tests in sprachlichen Anweisungen geschrieben, die dann übersetzt und in Tests umgewandelt wurden. Platz: 4

2. Team: TDD From Scratch in Java. Punkte zählen bei einem Tennisspiel. Platz: 1

3. Team: TDD From Scratch in Groovy. Römische Zahlen werden in arabische konvertiert. Platz: 3

4. Team: Test Driven Refactoring in Java: Eine NASA-Sonde war abgestürzt, weil ein Programmteil in Kilometern und eines in Meilen gerechnet hat. Es sollte ein Einheiten-Objekt eingeführt werden, welche die Umrechnung vornimmt. Platz: 2

Leider konnte ich an der Endrunde nicht beiwohnen, da ich zu diesem Zeitpunkt mit dem Mittagessen beschäftigt war.

Wissensinseln - Schadbild, Bekämpfung und Vorbeugung

Referent: Jens Coldewey (Henning Wolf war erkrankt und konnte somit nicht mitvortragen)

Jens hielt einen sehr gelungenen Vortrag über das Thema Wissensinseln. Man erkenne Wissensinseln, wenn man zum Beispiel in einem Gantt-Diagram immer wieder einen Entwickler in einem kritischen Pfad findet oder anderer Entwickler sofort sagen "das kann nur XYZ machen". Bei agiler Entwicklung tun solche Inseln sofort weh (wenn nicht jeder Entwickler jede Aufgabe übernehmen kann), bei jedem anderen Entwicklungsmodell früher oder später. Um negative Folgen wie Überstunden und Urlaubssperre zu verhindern, gelte es diese Wissensinseln zu finden und trocken zu legen.
Wissensinseln lassen sich finden, indem man zum Beispiel den Code in Bereiche aufteilt und die Entwickler anonym befragt, wie gut sie die Bereiche kennen. Wenn nur eine Personen eine Bereich mit den Schulnoten 1 oder 2 benoten, liegt eine Wissensinsel vor.
Ein generelles Problem dabei sei, dass Arbeitsteilung seit jeher die Effizienz erhöht, dabei aber zu Spezialisierung führt. Um die Entwicklerkapazitäten bestmöglich auszulasten wird die Bildung von Wissensinseln implizit gefördert. Daher sollte der erste Schritt sein zusammen mit dem Management die folgenden zwei Punkte zu klären:
1. Die Gesamtdurchlaufzeiten sind wichtiger als die Auslastung der Entwickler.
2. Effektivität ist wichtiger als Effizienz.
Während des Abbaus von Wissensinseln darf auf keine Überlast auf dem Team sein. Das Team muss sich vertrauen und langfristig eine collective codeownership aufbauen. Zudem darf man in dieser Phase kein Micromanagement anwenden und den Entwicklern vorschreiben, welcher welche Aufgabe übernimmt. Bei einem kritischen Bereich soll von nun an nur noch Pair-Programming verwendet werden, bis sich wenigstens zwei Entwickler ausreichend auskennen. Crossfunctional Team sind ein weiteres gutes Gegenmittel für Wissensinseln. Eine Teamgröße von 4-8 Personen wird empfohlen und die Teams sollten während des Projektes stabil gehalten werden. Vor allem darf nicht vergessen werden, dass der Abbau von Wissensinseln Zeit kostet.
Der Vortrag war rhetorisch perfekt gehalten und durch zahlreiche Beispiele aus der Praxis aufgelockert. Übrigens wurde der Vortrag auch schon von Beginn an so ausgelegt, dass beide Referenten die selben Informationen hatte und somit schon von vorne herein einer Insel vorgebeugt wurde. Jens hat alle graden Seiten erstellt und Hennig alle ungraden...

JSConf.eu 2009 in Berlin

Conferences 1 Comment »

Breakfast at the ÏMA design village.
DSCI0436

DSCI0437

Some of the qooxdoo guys:
DSCI0442
Alex and Martin.

DSCI0443
Martin and me.

DSCI0440
Jan Lehnardt, Holger Blank and Malte Ubl open up the JSConf.eu 2009.

DSCI0441
Chris Kowal (originally Kevin Dangoor) speaks about commonJS.

DSCI0445
Francisco Tolmasky speaks about Cappuccino and Atlas.

DSCI0446
Remy Sharp speaks about HTML5.

DSCI0449
Andy Tijn and Thomas Schuppel speak about JavaScript on mobile devices and OVI.

DSCI0450
Brian Le Roux speaks about Phonegap.

DSCI0451
Malte Ubl speaks about Joose.

DSCI0453
Thomas Fuchs speaks about JavaScript performance.

DSCI0454
Douglas Crockford speaks about ECMAScript.

DSCI0455
Amy Hoy speaks about good user interfaces.

DSCI0457
Peter Svensson speaks about dojo.gfx and dojo.charting.

DSCI0459
Mike de Boer and Ruben Daniels speak about ajax.org.

DSCI0460
Tom Hughes-Croucher speaks about YQL.

DSCI0461
Chris Kowal and Tom Robinson speak about Narwhal.

DSCI0462
Fabian Jakobs speaks about how widgets are build in qooxdoo.

About monotasking

Work 3 Comments »

Fabian told me that managers and software developers plan their workday differently. While managers divide their day into blocks of one hour, developers tend to think in larger blocks of about four hours. While it is no problem for managers to pick an empty time slot to fit in a meeting, this block could prevent a developer from being productive, since this meeting will fragment his block leaving him less time to concentrate on a task at a stretch.

This story and a blog post I read some time ago made me think about interruptions at work. It seems there are interruptions we don't want and interruptions we perform by ourselves. The last is about multitasking: checking e-mails, feeds, Twitter or answering my coworkers via Instant Messaging. Some of us tend to use the small time gaps to do something else than the current task. It is so easy to read some feeds during a compiler run or wile you are waiting for SVN. But is that really necessary?

I myself tend to do lots of multitasking. I have always been a young and restless person using the smallest break to do something else. As I am getting older (and wiser, hopefully!) I tend to question things or at least I try to do things differently. As I can not avoid any interruption on my workday I can at least try to stay focussed and use time gaps for either giving my brains a break or to think about what I am doing at the moment. I will try to do one thing at a time. I will read e-mails less often, but more mails at a stretch instead. Same goes for RSS feeds and Twitter. I am not quite sure how to handle Instant Messaging, but I will probably at least finish my current thoughts before reading the message.

Do you have any experiences with monotasking? How do you handle interruptions and what are your strategies? Feel free to comment on this. :-)

My big fat geek hobby

Distance Learning No Comments »

I have not posted anything in this blog for over two months since my last entry about regression defects.
The reason for the lack of attention my blog suffered is the fact that I started something new in April and have been preparing for this since the beginning of this year: On March the 5th I started studying Business Informatics at the AKAD private college in Pinneberg!

I have been thinking about studying since I finished my apprenticeship as an IT application specialist in August 2005. Well, to be honest: my original plan was to study right after school, but I got a great offering from a company which does really cool stuff and so I changed this plan. After two years of working and learning, I wanted to get out of my hometown, see something different, gather experiences and stand on my own feet. But still, the idea of studying never left my mind. Eventually I found a great job I absolutely like, met the woman I love, married her and have been happy ever since. This is the perfect background for me turn my plan into reality.

Two hearts are beating in my chest: on the one hand I am interested in programming and fascinated by the various ways of writing code as a software developer. On the other hand I always liked business administration and was interested in the economic system. Business Informatics is the perfect solution to satisfy both hearts.

Since I want to stay in business and keep my standards at the current level, I decided to stay in the qooxdoo team and study in my free time in form of distance learning. This hobby — as I described it in the title — is an enormous effort in time and money and the reason for me to cut down some of my free time activities such as blogging. So I will blog less in the future, but in exchange I might write about the new things I learn..

Fighting software regression with delta debugging

Development No Comments »

Using continuous integration mechanisms can lower the impact of regression defects, but they cannot be avoided. You will never be able to test 100% of your code base with unit tests, because the time you invest in these tests is limited. Testing dynamic environments (e.g. a widget framework) with automatic UI testing tools like Selenium takes even more time to develop and maintain.

If a regression defect slips through your tests and gets into your product it is often hard to find the cause for it. In a small or medium-size project the difference between two revisions of a single file or folder combined with the commit message of them will lead to the cause easily. On the contrary, in a big and complex project like qooxdoo, where several people are working on different parts of it, the pure amount of files that get changed during a week (or even day) is just too much to handle and you will end in searching for the needle in a haystack. In order to deal with sizable and complex systems I want to introduce you a technique called Delta Debugging (DD).

In using DD you cut your problem into half check and check if it is still present. If it still exists you repeat this step until it disappears. When the problem is gone you know that the last part that you changed must include the cause.

In the case of a regression defect the first step is to find the last revision of the project which is fine. This is your starting point (A) which you have to compare with the current version (B) which contains the issue. Your defect (D) is somewhere in between A and B.

delta debugging formula

If you are using a version control system like Subversion you can easily update parts (several folders or files) to the revision of your starting point. Once you identified the folder which contains the issue, revert the changes in it and compare file-wise until you find the bad file. You can even apply DD on this file to find the bad line(s).
You might haven even used DD without knowing it: how did you find the latest working revision? Did you jump back 100 (50, 10 — depending on the amount of commits and the issue itself) and then 50 forwards and decreased the delta until you found the correct revision? If you did so, you already used this technique on a different level.

Since DD handles the environment (the program or source code) as a black box it can also be used by testers to save developer's time by identifying the part which must contain the cause of the issue.

Broken build – we are prepared!

Fun No Comments »

Bob the Build Breaker

The next developer who checks in code that breaks our tests will get this little fellow on his desk as a reminder to be more careful. ;-)

Please welcome Bob the Build Breaker!

Update: See him in action!

qooxdoo 0.8.1 for christmas

qooxdoo No Comments »

Shortly after our bugfixing release for the legacy series we released version 0.8.1 in the current category.

The work on 0.8.1 began just after 0.8 was online. The first thing we got our hands on was the online documentation. We added large articles explaining the core concepts of qooxdoo like selection handling, drag and drop but also started documenting each widget and also brought our snippets section back, which include solutions for frequently asked questions or best practices. If you have not seen our documentation section in a while give it a try. There is much to discover!

0.8.1 was a maintenance release including 250+ bug fixes and an overall polishing of the framework. See the official release notes for details.
For beginners we introduced a new application: qooxdoo playground. Embedded in this application is an online editor in which you can create small applications by yourself or load one of our samples and run them on the fly. This mini IDE features syntax highlighting, reports errors and executes your code instantaneously. Since many users just want to experience qooxdoo to get a feeling for it in the evaluation phase, the step to work with command line instructions was too much. We believe that with this tool we can satisfy these users as well.

So grab yourself a copy of the SDK and enjoy coding.

Ho ho ho. ;-)

Destroy the beauty for 125 Euros

Apple No Comments »

Since my wife is studying at the University of Freiburg, we took the chance and participated in Apple's Back to School promo. If you buy an iPod together with a Mac, Apple will return you 125€ ($160). To retrieve the money you have to give Apple this information:

  • a copy of the invoice with the serial numbers of both the Mac and the iPod
  • the Apple Online Store reference number
  • the bar codes from both products' packages together with the part of the package they are glued on

You have to enter your name, address etc. together with the reference number online to get an special discount number. Then you have to print out a page containing this number and send it together with a copy of the invoice and the bar codes to an address located in the United Kingdom.
After a few weeks you should receive a check... I am curious if this really works. ;-)
Anyway, see what I did for the money (<german>brutalstmöglich!</german>):

Holes in the beautiful Apple packages

Happiest day of my life

Personal 9 Comments »


22nd of November 2008 — Altes Rathaus, Steinfurt, Germany


WordPress Theme & Icons by N.Design Studio
Entries RSS Comments RSS Anmelden