high value team Angebote

Mit high value team richte ich mich an Entwickler und Organisationen, die wirklich etwas verändern wollen. Quick fixes sind nicht im Angebot. Die nächste Technologie, die nächste Methode wird “es” nicht richten. Wo chronische Probleme die Verlässlichkeit und Produktivität nach unten ziehen, gibt es keine Besserung durch Druckbetankung. Meine Angebote sind deshalb gedacht als eine Mischung aus Impuls und Begleitung. Neue Sichtweise + konsequentes Ausprobieren: dann kann Veränderung bewirkt werden.

Themen

Impulstag “Get into the flow”

Nachhaltiger und vorhersagbarer Software entwickeln ist eine Herausforderung für die ganze Organisation. Es spielen so viele Aspekte dabei eine Rolle, dass es sich lohnt, darüber einen Überblick zu gewinnen. Den gibt der Impulstag in Form von Schlaglichtern. Die Geschichte der Softwareentwicklung wird dabei genauso angeleuchtet wie die unausgesprochenen Wünsche des Kunden oder die Ursachen für notorisch unzuverlässige Schätzungen.

Der Impulstag wendet sich nicht nur an Entwickler, sondern ausdrücklich auch an Product Owner, Produktmanager, Scrum Master und das Management. Beim Impulstag ist für jeden etwas dabei. Das rollenübergreifende Gespräch wird enorm angeregt.

  • Format: 1 Tag offline
  • Für Buzzword-Freunde: Clean Code, Agilität, Lean, Theory of Constraints

Geradlinig testen

Für dauerhaft hohe Produktivität im Rahmen eines Softwareprojektes ist die Herstellung von Korrektheit “erste Entwicklerpflicht”. Das kann allerdings nur erreicht werden mit einer soliden Abdeckung des Codes durch automatisierte Tests. Doch wie kann die erreicht werden? Es fällt vielen Entwicklern schwer, konsequent Tests zu schreiben. Leider ist das weithin propagierte Vorgehen nach classical TDD auch nicht dazu angetan, leicht in den Arbeitsalltag übernommen zu werden. Was nun? Reifer und regressionsfreier Code sind für zügigen und vorhersagbaren Fortschritt unerlässlich.

Abhilfe schafft ein kritisch reflektiertes und modifiziertes TDD, das ich TDD 2.0 nenne. Darin erhalten ist das Wesen von TDD als testgetriebene kleinschrittige Annäherung an den Produktionscode – doch der ewig schwierige Refactoring-Schritt verschwindet zugunsten mehrerer Alternativen, Produktionscode von vornherein sauber zu schreiben. Bei TDD 2.0 weniger “richtiges Testen” im Vordergrund, als vielmehr solide Problemlösung unterstützt durch einen Testframework.

TDD 2.0 entlastet Entwickler bei der Testdefinition und Konkretisierung des Produktionscodes mit einem klaren und differenzierten Vorgehen. TDD 2.0 ist “software for your head”.

  • Format: Die Schwierigkeit bei diesem Thema liegt in der Überwindung eingeschliffener persönlicher Gewohnheiten. TDD 2.0 Techniken sind leicht zu lernen – sich ihrer jedoch im rechten Moment zu erinnern, ist schwer. Deshalb ist es wichtig, ihre Anwendung einzuschleifen. Im Grunde ist Drill nötig. Das Thema profitiert daher von wiederholten Übungen. Hier bietet sich insbesondere eine online Begleitung an.
  • Für Buzzword-Freunde: Clean Code, TDD

 

Lösungsansätze entwerfen

Flüssige Teamarbeit erfordert Koordination. Koordination setzt Überblick voraus. Solange Softwareentwicklung jedoch keinen belastbaren Entwurf produziert, gibt es keinen Überblick als Basis für zügige Codierung, Exploration von Alternativen oder konfliktfreie Arbeitsorganisation.

Die Kunst der Planung von Code bevor man ihn schreibt, ist in den letzten Jahrzehnten jedoch leider scheinbar weithin in Vergessenheit geraten. UML ist nicht im Einsatz und Alternativen haben sich nicht etabliert. Im Team wird zwar geredet, aber sichtbare, nachvollziehbare Spuren unabhängig vom Code hinterlässt das kaum. Und im Code ist es dann oft zu spät, weil der jede Entscheidung nur in geronnener, schwer zu wandelnder Form enthält.

Hilfreicher Entwurf von Lösungsansätzen vor der Codierung ist aber möglich, auch ohne eine Architektur-Meisterklasse besucht zu haben. Es geht sogar ganz ohne UML und spezielles künstlerisches Talent.

Allerdings: Es ist schon etwas gewöhnungsbedürftig, Lösungen zu denken, ohne sie gleich im Detail in einer Programmiersprache zu codieren. Doch es winkt ein großer Gewinn: das Team lässt die visuelle Sprachlosigkeit hinter sich und kann die kollektive Intelligenz laser-gleich auf ein Problem konzentrieren. Die Lösungen werden effektiver und sind besser legitimiert. Und es wird die Grundlage für arbeitsteilige Implementationen geschaffen, um einzelne Aufgaben effizienter umzusetzen. Work-in-Progress (WIP) sinkt auf diese Weise ganz natürlich, die Vorhersagbarkeit der Softwareproduktion wächst.

  • Format: Vom Entwurf profitiert jeder Entwickler einzeln, aber der Effekt im Team ist noch größer. Der Codierung eine Phase gemeinsamen Nachdenkens über einen Lösungsansatz voranzustellen, ist eine Veränderung der Gewohnheiten aller. Deshalb lohnt sich bei diesem Thema der Einstieg mit einer “Druckbetankung” von 1-2 Tagen offline, der eine online Begleitung folgt, um das Vorgehen mit regelmäßigen Übungen einzuschleifen.
  • Für Buzzword-Freunde: Clean Code, Flow-Design, Softwareentwurf

Systematisch Code reviewen

Ein sauberer Entwurf ist eine gute Grundlage für wandelbaren Code. Aber es gibt genügend Gründe dafür, dass bei der Implementierung “etwas verrutscht” und das Ergebnis doch nicht das gewünschte Qualitätsniveau hat. Es gibt also, Code regelmäßig in Augenschein zu nehmen, um sicherzustellen, dass der Anspruch an seine “Sauberkeit” eingehalten wird. Darüber hinaus sind solche Inaugenscheinnahmen gute Gelegenheiten, um sich im Team der Domäne oder der Nutzung von Technologien zu vergewissern. Es lässt sich eine Menge lernen beim Code Review.

Doch worauf sollten sie achten, die “Männer, die auf Code starren”? Für mich gibt es eine klare Liste von Aspekten. Die kann man systematisch abarbeiten. Die gibt natürlich auch Hinweise darauf, was man schon vorher bei der Codierung beachten kann, um im Code Review flüssig durchzukommen. Code Review ist kein Selbstzweck.

Im Workshop gehen wir diese Liste Punkt für Punkt durch, klären das Warum jedes Aspektes, diskutieren Auslegungsmöglichkeiten und Sonderfälle und üben den Review an Beispielcode und auch gern an Code aus Ihren Projekten.

  • Format: Der Code Review lässt sich sehr gut online üben und durchführen. Schon wenige online Blöcke schaffen einen Überblick über die Review-Kriterien und legen die Grundlage für einen eigenen Review-Rhythmus.
  • Für Buzzword-Freunde: Clean Code, SOLID, TDD

Durchhalten beim Refactoring

Refactoring ist gewöhnlich so nötig wie schwierig. Nicht nur steht ihm (scheinbar) der Kunde entgegen, es ist auch immer wieder mühevoll, überhaupt den Anfang zu finden. Den Wald vor lauter Bäumen zu sehen, fällt umso schwerer, je näher man am Code dran ist. Hilfreich ist daher ein externer Beobachter. Der kann herausfordernde Standpunkte einnehmen, der kann unbequeme Fragen stellen, der ist nicht durch die Heiligkeit von Code-Kühen gefesselt.

Auch und gerade, da mir Ihre Fachdomäne wahrscheinlich fremd ist, kann ich sehr hilfreich beim Refactoring zur Seite stehen. Das kann mit einer Funktion beginnen und dann seine Kreise ziehen – oder es kann mit dem big picture beginnen und sich nach innen winden. Refactoring muss keine herkulische Tat sein, sondern beginnt schon mit der Pfadfinderregel während Sie einen Bug fixen. Eine zweite Meinung wirkt in jedem Fall ermutigend. Sie beginnen überhaupt mit dem “notwendigen Übel” und halten leichter durch. Und vielleicht stellt sich dabei heraus, dass Refactoring gar nicht so schlimm ist, ja, geradezu Spaß machen kann, weil es Klarheit schafft und den Code erleichtert.

  • Format: Unterstützung beim Refactoring gebe ich vorzugsweise online. Das kann punktuell mit einzelnen Sitzungen im Pair geschehen oder bei einer umfangreicheren Maßnahme auch begleitend mit 4-5 Teilnehmern.
  • Für Buzzword-Freunde: Clean Code, Nachhaltigkeit,  online Pair Programming

Anforderungen übersetzen

Wie kommt man von Anforderungen zum Code? Das ist eine Frage, die Entwickler meiner Erfahrung nach immer wieder umtreibt. Dazu wurde zwar schon viel gesagt, es gibt ganze Disziplinen, die sich damit beschäftigen, die UML hat dazu etwas zu sagen und die Agilität macht auch Empfehlungen. Dennoch sehe ich Entwickler mit einem Stirnrunzeln, wenn sie dann am Ende eine User Story angehen.

Was fehlt ist Anschlussfähigkeit. Eine User Story lässt Spielräume, die kontraproduktiv sind. Der Übersetzungsaufwand für Anforderungen in die Welt der Programmierung ist zu groß, um zumindest einen Ansatzpunkt für den konsequenten Lösungsentwurf und die testgetriebene Codierung zu finden. Es fehlt ein gemeinsames Vokabular für Entwickler und “Anforderer” (z.B. Product Owner), um Anforderungen zu verfeinern und zu konkretisieren.

Ein solches Vokabular zur gemeinsamen Verfeinerung von Anforderung vermittle ich in diesem Workshop. Konsequent eingesetzt liefert es fein geschnittene Anforderungen, zu denen “Anforderer” Feedback geben können und die sehr konkret sind für die Umsetzung. Gleichzeitig entsteht ein Bild von Software, das für die grobe Architekturplanung taugt und frühzeitig alle Beteiligten an den Tisch bringt, um Entscheidungen zu treffen (oder zu vertagen). Auch hier geht es um Überblick.

  • Format: Die Anforderungsanalyse entwicklerfreundlicher zu gestalten, ist eine Sache des ganzen Teams inklusive des Kunden bzw. seines Vertreters (soweit willig und verfügbar). Deshalb erfolgt hier der Einstieg am besten auch mit einem gemeinsamem Workshop von 1-2 Tagen; anschließend können Übungen online den Umgang mit der Methode vertiefen.
  • Für Buzzword-Freunde: Analyse, BDD, Sprint Planning

Planbare Lieferungen

“Wann wird die Anforderung umgesetzt sein?” steht als Frage ständig im Team Room der Softwareentwicklung. Sie belastet Entwickler wie Management, sie erzeugt chronischen Stress. Daran hat auch die neuere Schätzpraxis mit Story Points in agilen Teams nichts geändert. Entspannte Softwareproduktion sieht anders aus.

Doch der Stress ist zu einem guten Teil selbstgemacht. Überzogene Erwartungen, Selbstüberschätzung, ein reduziertes Verständnis von Verlässlichkeit, mangelhafte Aufmerksamkeitsgestaltung und Unkenntnis weit verbreiteter Trugschlüsse, Voreingenommenheiten und simpler statistischer Verfahren erzeugen chronischen Druck und schüren Konflikte.

Leider hilft die tapfere Einführung von Scrum oder Kanban hier nur bedingt. Solange man damit versucht, bessere Antworten für die falschen Fragen zu finden, bleibt man hinter dem Möglichen zurück. Der Cargo-Kult lauert hinter jedem Ritual.

Was tun? Es hilft die Rückbesinnung auf das Grundlegende, auf Gesetzmäßigkeiten und die “Natur der Sache”. Weniger Regeln, mehr Prinzipien; weniger Buzzwords, mehr sorgfältige Beobachtung.

In diesem Workshop fordere ich ihre Zusammenarbeit heraus. Können Sie systematisch und diszipliniert vorgehen, um verlässlich Resultate zu liefern? Wir werden sehen.

  • Format: Dieses Thema greift tief in Gewohnheiten der ganzen Organisation ein. Deshalb ist hier eine Begleitung offline und online ratsam. Der Umfang ist allerdings sehr von den Organisationsumständen abhängig. Lassen Sie uns über Ihre Situation sprechen.
  • Für Buzzword-Freunde: Agilität, Lean, Kanban, Theory of Constraints, Flow Metrics

Preise

Die Abrechnung von offline und online Maßnahmen erfolgt pro Teilnehmer. Es geht nicht darum, dass ich meine Zeit mit Teilnehmern verbringe, sondern dass jeder Teilnehmer Lernstoff vermittelt bekommt, dass er/sie Feedback erhält, seine/ihre Fragen beantwortet werden und dass er/sie sich auf ein Thema konzentriert. Der Nutzen entsteht also für jeden Teilnehmer gleich. Das drücken meine Preise aus.

Stand der Preisliste: 14.1.2019

Offline/On-site Workshops

Offline Workshops finden gewöhnlich bei Ihnen vor Ort (on-site) im Unternehmen statt. Voraussetzung ist ein Besprechungs-/Seminarraum mit Beamer und Flipchart, Metaplan-Wände sind vorteilhaft.

Teilnehmerpreis: 280€ pro Tag für maximal 10 Teilnehmer – mindestens jedoch 1500€ pro Tag.

Preise für größeren Gruppen gern auf Anfrage. Das betrifft vor allem den Impulstag.

Alle Preise zzgl. MwSt sowie Reise-/Übernachtungskosten nach Aufwand.

Online Begleitung

Online Sitzungen dauern 30min bis 180min je nach Thema und Motivation und auch Verbindungsqualität; typisch sind 60min oder 120min. Für einen guten Begleitungseffekt ist es ratsam, Termine im Abstand von 1-2 Wochen zu vereinbaren. Der Praxisteil für die Teilnehmer findet hier meistens offline in Gruppen statt und wird beim nächsten Mal online besprochen.

Teilnehmerpreis: 35€ pro Stunde für maximal 5 Teilnehmer – mindestens jedoch 125€ pro Stunde. Alle Preise zzgl. MwSt.

Online Termine sind deutlich intensiver, individueller und flexibler als offline Gruppenworkshops! Stoff, der offline in einem traditionellen Training in 3 Tagen (24 Stunden) behandelt wird, erfordert online meist nur 12-15 Stunden. Gleichzeitig entsteht online eine tiefere Identifizierung mit dem Lernstoff. Der Transfer in den Alltag wird dadurch leichter.

Die Zusammenarbeit kann gleich online beginnen – es hat sich jedoch herausgestellt, dass ein offline Kickoff von 1-2 Tagen eine Atmosphäre der Vertrautheit schafft, die die online Arbeit flüssiger gestaltet.

Technische Voraussetzungen für online Termine sind ein Headset, eine Webcam und eine zügige Internetverbindung für Video-Meeting und Screen Sharing. Jeder Teilnehmer sitzt dabei vor seinem eigenen Rechner und am besten in einer ungestörten Umgebung. Darüber hinaus ist ein iPad mit Stift sehr nützlich (Preis ca. 380€ zzgl. MwSt, Stand Mitte 2018), um Gedanken auf einem online Whiteboard zu visualisieren.

Derzeit kommen zoom.us als Video-Chat Tool und realtimeboard als online Whiteboard zum Einsatz. Darauf müssen Teilnehmer Zugriff haben genauso wie auf ihre IDE für Codereviews.

Vor dem ersten online Termin empfiehlt sich ein Technik-Check Termin mit allen Beteiligten.