Work theatre in agile development

Manchmal liest man einen Text, in dem ein vages Gefühl, das man lange hatte gut formuliert und auf den Punkt gebracht wird. Auf einmal entsteht ein klarer Gedanke. So ging es mir mit dieser netten Kolumne: "Performative Work". Bei einem Kunden konnte ich das einmal in voller Pracht beobachten. Der Typ, der immer telefoniert. Die andere, die immer mit einem Stapel unter dem Arm irgendwohin unterwegs ist. So war das früher. Die schaffen was, das sieht man doch!

Heute sind es wie im Artikel beschrieben diejenigen, deren farbiger Präsenz-Buppel in der Teams-Liste nur zwischen grün und rot hin und herspringt und garantiert niemals gelb oder (Gott bewahre!) grau wird. Diejenigen, die immer die Meetings eröffnen. Die Aufgaben in möglichst winzige Teilaufgaben zerlegen, damit der Abarbeitungs-Fluss stattlicher wirkt. Hauptsache, das Ticket ist "erledigt", auch wenn man nur die Hintergrundfarbe einer Schaltfläche geändert hat.

Entscheidend ist dabei die Größe des Teams. In kleinen Teams, sagen wir, maximal 5 Personen, funktioniert es nicht, weil jeder weiß, was die anderen machen. Darüber hinaus verliert man den Überblick, egal wieviel Dailys es gibt. Da können die virtuellen Aktenköfferchen geschwungen werden. Und so vergeht ein merklicher Teil der Arbeitszeit in Meta-Arbeit, deren ausschließliche Aufgabe es ist, Arbeit auch nach Arbeit aussehen zu lassen. Jeder formuliert präzise sein Tagewerk, zeigt vollendete Tasks und benennt offene Zuarbeiten. Warum funktioniert das Projekt trotzdem nicht? Warum dauert alles immer viel zu lang? Es kann ja nur an denjenigen liegen, die im Daily nicht perfekt vorbereitet sind, deren Technik im Moment des Sprechens spinnt oder die deklarieren, mit einer Task nicht rechtzeitig fertiggeworden zu sein weil, äh,.. zu komplex (Höchststrafe).

Ich sehe einen organisatorischen Überbau in größeren Teams dabei nicht unbedingt negativ. Es ist notwendig dass jemand, der nicht aktiv bis ganz unten eingebunden ist einen Gesamtüberblick behält und Arbeit in kritischen Fällen umverteilen kann. Einer, der offene Fragen schnell aus dem Weg räumt. Kurios ist aber die Eigendynamik, die so etwas zwangsläufig zu erhalten scheint, sobald man diesen Prozeß formalisiert.

Es verhindert auch ein Vorarbeiten bei Unterbelastung. Warum schon Tickets aus dem nächsten Sprint angehen? Das hebt nur die Erwartung des Sprint Masters und man bekommt in der nächsten Iteration mehr zu tun. Das wiederum erhöht die Gefahr der Verfehlung des Sprint-Ziels, des Leistungsmaßstabs des Sprint Masters gegenüber seinen Vorgesetzten.
Bizarrerweise gibt dieser nun selbst dieses Ziel vor. Wird es verfehlt, ist er also doppelt unfähig: Weder kann er aus seinen Leuten die passende Leistung herausholen, noch ihre Möglichkeiten richtig einschätzen. Dementsprechend reagiert er in kritischen Situationen extrem dünnhäutig und ist inhaltlich von der korrekten Präsentation der jeweiligen Arbeitsabschnitte getrieben.

Diese Logik verfolgen auch die Mitarbeiter, die, an ihren abgeschlossenen Tasks gemessen, die Abarbeitung derselben perfektionieren. Seht her, liebe Kollegen, das alles ist seit gestern von "Active" über "Review" nach "Done" geflossen. Genial, oder? Wie in einer Simulation eines Arbeitsablaufs ohne Störungen. Eine Inszenierung. Performance. Performative Work!

Entrümpelung

Schon mal überlegt was passiert, wenn ihr hinüber seid? So.. tot und nicht mehr lebendig? Ich meine jetzt nicht das Himmelreich, sondern das Weltenreich. Da bleibt für die meisten von uns einiges zurück. Und was passiert damit?
Schräg gegenüber hat jemand einen Entrümpeldienst bestellt, ich kann vom Schreibtisch direkt hinsehen. Die haben einen großen Container in die Fußgängerzone gestellt und da fliegt jetzt schon seit 2 Stunden alles rein, was einmal in der Wohnung war. Alles. Stühle, Bücher, Geschirr, Bilder, Klamotten in Säcken, you name it. Gut, manches fliegt auch daneben, Seitenwind dritter Stock, wissenschon. Wenig los in der Fußgängerzone heute. Und alles Restmüll, das Zeug will keiner mehr. Gerade eine Serie schöner alter Stühle.Nach dieser Person wird auf der Deponie ein eigener Hügel benannt, wenn das so weitergeht.

Beim letzten Todesfall in der Familie habe ich mir die Mühe gemacht, tatsächlich das ganze Gerappel zu trennen. Ernsthaft. Was will die Verwandtschaft. Was könnte noch praktisch sein. Was muss erhalten werden. Zum Verkauf. Zu verschenken. Altpapier. Altglas. Altmetall. Und erst ganz am Schluss Sperrmüll. Das hat natürlich Monate gedauert, aber bei den Bergen an Zeug hätte ich es nicht anders ausgehalten.

Solche Entrümpelungsunternehmen sind übrigens teuer. Liegt daran, dass sie nur einen Bruchteil der "Ware" weiterverkauft bekommen. Der Rest ist dann Deponie, und gewerbliche Anlieferung in größerem Rahmen kostet da richtig Geld.

Wie so oft sollte man sich vielleicht die Frage stellen, es erst gar nicht so weit kommen zu lassen. Kann man nicht den alten Massivholz-Schrank von Oma Frieda weiterverwenden oder rennt man zum skandinavischen Billigheimer und lässt sich ein pressspan-furniertes Pendant raus? Leute, bei der "Nachhaltigkeit" kann wirklich jeder mitmachen! Gar kein Problem! Ich bin wahrscheinlich ein Optimist an ein Umdenken zu glauben, bevor die Rohstoff-Preise komplett in den Himmel geschossen und Echtholz-Möbel überhaupt nicht mehr verfügbar sind. Oder man kauft einfach nicht ständig neues Zeugs.

Die immer älter werdende Gesellschaft ist der andere Faktor. Bis eine Generation abtritt, gibt es entweder schon gar keine Folge-Generation mehr oder diese ist schon Ü50 und hat längst alles selbst gekauft und eingerichtet. In der Folge bleibt beim Weggang eines alten Menschen einfach alles übrig.

Ordner. Küchengeräte. Papierstapel. Fotoalben. Freier Fall. Jetzt machen sie Pause. Ich brauche auch eine.

Zeichen auf Bäumen

Jeder kennt sie: Die bunten Markierungen auf den Bäumen. Doch was bedeuten sie eigentlich? Ist auf einem Baum mit einem roten Schrägstrich gekennzeichnet, so wird er gefällt. Steht eine Zahl auf dem Baum, handelt es sich um hochwertiges, fehlerfreies Holz, welches bei einer Submission versteigert wird und beispielsweise für Böden und Möbel genutzt oder in Klanginstrumenten verbaut wird. Damit der jeweilige Baum schnell wiedergefunden werden kann, wird er mittels GPS erfasst und der genaue Standort kartiert. Durch äußere Merkmale, zum Beispiel sogenannte „Chinesenbärte“ an Buchen kann auf das Bauminnere und somit auf die Qualität des Holzes geschlossen werden. Zwei horizontale, gelbe Linien kennzeichnen die „Rückegassen“. Die Holzfäller wissen durch diese Markierung, welche Wege sie nutzen dürfen um das gefällte Holz abzutransportieren. Die gelben Wellenlinien an den Bäumen markieren Habitatbäume oder ganze Habitatbaumgruppen. Das sind Einzelbäume oder Baumgruppen, die durch Besonderheiten (Großhöhlen, Spalten, Horst, Alter) Tieren und Pflanzen einen Lebensraum bieten und nicht gefällt werden.

(schamlos hier wiedergegeben aber gut zu wissen! )

Versuche mit FHEM

Seit ich beruflich in der Smart Home Welt mitmische kaufe ich mir hin und wieder privat das eine oder andere Produkt. Allerdings nicht, um das Haus hier smarter zu machen.. ich glaube das wird dadurch eher dümmer. Aber es gibt so viele unterschiedliche Standards und Technologien, da verliert man sonst den Überblick. Man muss schon hin und wieder etwas in die Finger nehmen.

Bei mir ist das Zentrum des Chaos das Herz der Automation ein Raspberry Pi (Model B, das gute Gerät ist knatteralt gemessen an Raspberry Lebenszeiten) mit aufgestecktem TCM 310 Modul für Enocean Sensoren. Der Pi ist hier im WLAN und hat außerdem einen Conbee2 Stick für ZigBee Telegramme.

Anbei einige im Netz zusammengesammelte Tips, die ich frecherweise ohne Nennung der Quelle zusammenfasse, für mich und weitere Interessierte.

Conbee Gateway koppeln

define deCONZ HUEBridge 192.168.188.X (your GW IP)
attr deCONZ httpUtils 1
set deCONZ active

Damit ist das Pairing aktiv. Den Namen "deCONZ" kann man natürlich beliebig ändern. Das wird hier nur verwendet, da man vorher den Conbee2 mit deconz auf dem Raspberry in Betrieb genommen hat. Wie das geht steht auf der dresden-elektronik Github Seite.

Dann geht man in der Phoscon Webanwendung auf "Gateway" und rechts unten hinter "Erweitert" klickt man "App verbinden". Alle bereits in Phoscon eingelernten Lampen werden durch die Bridge automatisch in FHEM angelegt, auch die Gruppen. Die Sensoren kann man folgendermaßen hinzufügen:

get deCONZ sensors

Dabei geht ein Fenster auf, von dem man sich am besten einen Screenshot macht. Denn die dort angezeigten Nummern braucht man gleich um die Sensoren über die Konsole anzulegen.

In meiner Bridge eingelernte Sensoren
define Sensor1.Humidity HUEDevice sensor 4

So kann man z.B. den Feuchtigkeitssensor hinzufügen. Der letzte Parameter ist dabei die oben angezeigte Id. Jetzt kann man noch ein paar Attribute hinzufügen, z.B. den Anzeigenamen per alias verschönern oder icon und stateFormat anpassen.

Um mit den Sensoren eine nette Historie aufzuzeichnen, folgt man einfach dieser Anleitung. Spätestens jetzt müsste man etwas mit dem archaischen UI angewärmt sein. Es ist nur was für Fans. Die iPad Fraktion hat natürlich was anderes. Aber schon mal ganz nett.

Invertiert

Irgendwo habe ich einmal gelesen, Xing sei wie Tinder, nur umgekehrt: Attraktive junge Frauen schreiben nerdigen Typen und werden von denen ignoriert. :-)

Aber es stimmt: Meine Kontaktliste besteht sicherlich zu einem Viertel aus diesen jungen Damen. Seit ich Freiberufler bin, hat es sogar noch zugenommen. Ich kann dann aber auch nicht den Kontakt ignorieren oder blockieren. Schließlich weiß man nie, wie es im Leben weitergeht. Vielleicht bin ich irgendwann einmal froh über eine vermittelte Festanstellung.

Für erwähnenswert zu halten ist das Format dieser Zuschriften: Das Gros schickt unverlangte Stellenbeschreibungen, die "hervorragend zu mir passen würden". Offensichtlich haben sich diese Menschen nicht die Mühe gemacht, mein Profil zu lesen, sonst wäre klar, das ich als süddeutscher Software-Entwickler eher nicht für eine IT-Admin Stelle an der Nordsee in Frage komme.

Wie ich von mir bekannten Menschen, die auf Partnerbörsen unterwegs sind weiß, ist es dort genau dasselbe: Da halten auch einige Herren mit dieser Schrotflinten Taktik in die Menge der Mädels rein und hoffen, eine wird sich schon melden, die passt. Klappt aber nicht. Niemals wird das klappen, es sei denn, wir hätten irgendwann wieder die Situation dass 10 Bewerber auf eine offene Stelle kommen.e.

Wie kann man sich nur so dämlich anstellen. Als Recruiter muss ich fachlich wissen, welche gesuchten Fähigkeiten beschrieben sein können. Das ist nämlich nicht unbedingt der genau gleichlautende Begriff im Profil!! Und dann lese ich dieses Profil genau durch und schreibe der Person eine auf sie zugeschnittene Mail. Ja, das kostet Zeit. Aber ich kann euch garantieren, dann werden die Nerds auch antworten. Natürlich nicht alle. Aber manche. Außerdem würde es helfen, die "Ich suche" Rubriken auf Job-Suchende abzugleichen. Klar, auch manche Verheiratete möchten raus aus ihren Beziehungen. Aber Singles auf der Suche sind sicher diejenigen, die einen neuen Partner wollen.

Bis dahin werde ich weiter freundlich abschlägig antworten. Ja klar, das mache ich jedes Mal. Außer natürlich die geschroteten Nordsee-Zuschriften, da swipe ich weiterhin direkt nach links.

Windows network printing trouble

Mit dem Windows-Update vom Oktober funkionierte hier mein Netzwerk-Drucker nicht mehr. Der Druckdialog öffnete sich erst nach einer gefühlten Ewigkeit. Beim Erstellen des Druckauftrags erschien dieser dann auch in der Drucker-Warteschlange, allerdings wurde dieser dann nie abgearbeitet. Ich vermute, dass das eine Nebenwirkung der Patches ist, die aktuell unter "Windows Printing Nightmare" durch die Presse gehen.

Ich benutze einen alten Kyocera Laserdrucker, der bei mir als Netzwerkdrucker an einem Raspberry Pi hängt. Als ich den Drucker direkt an den PC gesteckt hatte, funktionierte alles wieder. Mein Laptop, der mit den Updates immer etwas hinterherhängt (wegen seltener Nutzung), funktionierte eine Weile noch, bis er letzte Woche ebenfalls das Windows Update abkriegte. Zu dem Zeitpunkt war ich mir dann sicher, dass es an dem Windows Patch lag.

Das Problem konnte ich am Ende damit lösen, dass ich einfach den Netzwerkdrucker entfernt und neu hinzugefügt habe. Vermutlich hilft das nur in meinem Einzelfall, aber vielleicht verschont es euch vor den wütenden Flüchen, die ich heute schon ausgestoßen habe..

The horrors of PHP

Wenn herauskommt, dass ich tatsächlich noch PHP bei manchen Kunden einsetze, bin ich vermutlich bald arbeitslos. Aber ich kann alles erklären!!! Das hat.. historische Gründe. Und für manche Zwecke ist das Framework tatsächlich ziemlich brauchbar, vor allem aus dem Preis-Leistungswinkel heraus betrachtet.

Heute ein kleines Schmankerl, das mich einen halben Tag gekostet hat und mit einem Schlag gegen die Stirn endete, den ich heute noch spüre. Ausgangssituation ist die Befüllung eines Array mit weiteren Strukturen (auch assoziative Arrays). Dabei werden manchmal neue Einträge erzeugt, während in anderen Fällen ein bereits bestehender Eintrag ergänzt wird.

Consider this code:

$main = array();

$first = array(); // erster Eintrag
$first["bla"] = "blup";

$main[] = $first;

// wenn man diesen Eintrag noch ändern will
$change_it = end($main);
$change_it["bla"] = "blip";

// schaun wir mal
print_r($main);

Huch, immer noch "blup"! Ist klar, end() liefert nur eine Kopie. Man muss sich also eine Referenz holen. Dies gelingt mit dieser ziemlich "eingängigen" (höhö) Syntax:

end($main);
$change_it = &$main[key($main)];
$change_it["bla"] = "blip";

Jetzt ist es fein, in "$main" ist des nun korrekt mit "blip" überschrieben. Doch damit nicht genug. Jetzt kommen wir zum eigentlichen Spezialisteneinsatz.

// Ein weiteres Element hinzufügen
$change_it = array();
$change_it["bla"] = "blop";
$main[] = $change_it;
// schaun wir jetzt mal
print_r($main);

Ach du Sch****! Was ist denn hier passiert?


Array
(
    [0] => Array
        (
            [bla] => blop
        )

    [1] => Array
        (
            [bla] => blop
        )
)

Meine Erwartungshaltung wäre gewesen, dass durch die Zuweisung der Neuanlage des Arrays der Referenz-Bezug aufgehoben ist. Aber das ist nicht der Fall! Füge ich folgendes ein:

unset($change_it);

funktioniert es wie erwartet:

Array
(
    [0] => Array
        (
            [bla] => blip
        )

    [1] => Array
        (
            [bla] => blop
        )
)

Man darf also nie vergessen, dass die Normalität nur ein dünner Schleier vor der Anarchie und dem Chaos ist.. ne quatsch, ich meine natürlich PHP nur ein Wrapper über eine C-Libary ist, deren haarige Knochen immer mal wieder hier und dort herausgucken. Musch halt wissa! Meine Güte.

2-Faktor Brainwash

Google und andere Dienstleister möchten dieser Tage neue Regelungen umsetzen. Dem Benutzer soll die 2-Faktor-Authentifizierung vorgeschrieben werden. An sich eine gute Sache, die die Zugriffssicherheit erheblich erhöht. Vor allem für Leute, die ihre Passworte an gut sichtbaren Stellen hin-bäppern oder noch besser dümmlich kurze Worte verwenden, die am besten ein einzelnes Wort ist, garniert vielleicht mit einem Großbuchstaben oder einer Zahl. Das geht möglicherweise flink verloren oder wird gekonnt mitgelesen. Hier kommt die neue Technik ins Spiel: Auf einem anderen Weg wird eine zweite Prüfung verlangt, die die erste qualifiziert. Uns begegnet das schon an vielen Stellen, z.B. in Banking-Apps, die eine Push-TAN oder einen Schlüssel von einem USB-Stick nach dem Einloggen verlangen.

Aus technischer Sicht ist es unerheblich, _woher_ der zweite Faktor kommt. Es sollte im Idealfall auf einem zweiten Übertragungsweg erfolgen, z.B. über eine SMS aufs Handy, einen zweiten E-Mail Account oder einen Service, der Einmal-Passwörter generieren kann. Ist der Anbieter fair, bietet er seinen Nutzern verschiedene Möglichkeiten an, den zweiten Faktor zu liefern. Das sind nur leider nicht alle.

In vielen Fällen ist es heutzutage nämlich nur möglich, den zweiten Faktor über eine Handy-Nummer bereitzustellen. Man hinterlegt seine Telefonnummer, installiert eine bestimmte App auf dem Telefon und wenn ein Request erfolgt, geht diese App auf und man bestätigt den zweiten Faktor. Warum ist das ein Problem? Das kommt daher, dass man damit dem Anbieter (z.B. Google) damit unfreiwillig mehr Informationen liefert, als man das vielleicht möchte:

  • Den Bezug zwischen Login/E-Mail und der Handynummer
  • Hat der Nutzer weitere Apps und Dienstleistungen des Anbieters auf dem Handy installiert, ist ebenfalls sofort der Bezug hergestellt
  • Werden über die Freigaben der 2-Faktor App möglicherweise viele Informationen des Handys im Hintergrund geteilt: Konten, Kontakte, Positionskoordinaten.. you name it

Das Gemeine daran ist, dass mit der Argumentation "zu ihrer eigenen Sicherheit", dem Mangel an Alternativen und dem fehlenden Bewußtsein der Konsequenzen der Nutzer sich nicht einmal genötigt fühlt, sondern wahrscheinlich einfach beruhigt zustimmt. Na dann: Gute Nacht, schlaft gut.

All in 100

Gerade habe ich gelesen, dass es in Österreich ein Jahresticket für 1095€ geben soll. Damit kann man in jeden Bus und jede Bahn einsteigen. Im ganzen Land. Im Fernverkehr oder im hintersten Dorf. Quasi die "ÖffiCard 100". Eine geniale Idee. Bei dem Preis muss man nicht mehr darüber nachdenken, man nimmt einfach den nächsten Bus. Kein kompliziertes "wie gehtn das mit dem Ticket hier.."

In Deutschland müsste das natürlich etwas teurer sein, aber es wäre der richtige Weg. Geltungsbereich in allen Verkehrsverbünden. Ja, es gibt die BahnCard 100 aber die ist viel zu teuer und gilt auch nur in begrenztem Umfang. Man kann damit auch nicht Bus fahren.

Dieser Schritt würde dann auch mal was zum Wackeln bringen und ein Umdenken auch in der breiteren Masse vorbereiten, die sich ein Leben ohne Pkw noch gar nicht vorstellen können. Mit Salami-Taktik wird es nicht gehen.

Thunderbird Kalender Termine

Ich habe endlich den Fix für ein jahrelanges Ärgernis gefunden. Ich verwende schon immer Mozilla Thunderbird und den darin eingebauten Kalender Lightning. Durch die vorhandenen Plugins kann man gleichzeitig lokales, Google- und Office365 Kalender hinzufügen, dann ist alles übersichtlich an einem Platz.

Eine Sache funktionierte allerdings bisher nicht vernünftig: Die Terminbestätigungen. Diese werden immer per Default von der *ersten* E-Mail Adresse in der Kontenliste versendet und nicht etwa von der E-Mail Adresse aus, an die die Einladung ging (wie man vermutet hätte). Lustigerweise merkt man das erst, wenn man vom Kunden auf einmal Termin-Updates und sonstige Mails an die private Mailadresse bekommt, obwohl man sie nie wissentlich bekannt gegeben hat.

Ich habe überall in Thunderbird nach einer Einstellungsmöglichkeit gesucht und endlich in den Kalendereinstellungen selbst gefunden: Dort gibt es einen E-Mail Eintrag:

wer hett au dees denkt

Dieser wird bei Anlage eines Kalenders ungefragt auf den ersten Listeneintrag gesetzt.