Maximize the number of characters you type?

Over the last months and years I have advised many teams and organizations and found a pattern again and again.

We talk about how a software development team doesn’t get better by typing more characters on the keyboard. Usually the participants in the workshops laugh at this statement because it’s absurd. Software doesn’t get any better only if we type more characters.

It gets quiet when I ask why they try to maximize the number of features built.

Sometimes there is a very good discussion afterwards, sometimes…

Wie schnell bringt mein Unternehmen eine index.html Seite in die Produktion? (The Zero Dev Walk)

DevOps und Cross Functional Teams sind in aller Munde und wer es noch nicht kennt, dem sei das Buch “The Phoenix Project” von Gene Kim, Kevin Behr und George Spafford sehr empfohlen. Wie aber bekommt man aber nun ganz konkret heraus was zu tun ist? Was sind die konkreten Schritte, die gemacht werden müssen, damit eine DevOps Kultur entsteht? Continue reading “Wie schnell bringt mein Unternehmen eine index.html Seite in die Produktion? (The Zero Dev Walk)”

Veränderungen

in letzter Zeit gab es bei mir einige Veränderungen. Angefangen hat es damit, dass ich überlegt habe, was ich wohl in nächster Zeit gern machen würde.

Über die Jahre habe ich von Programmierung, über Projektmanagement und Teamleitung bis hin zur Infrastruktur in vielen Bereich gearbeitet, mich weitergebildet und Erfahrungen gesammelt. Mich interessiert die Softwareentwicklung und ich bin froh, diesem Interesse auch beruflich nachgehen zu können. Insbesondere faszinieren mich die kleinen Dinge. Bausteine die je nach Problemstellung flexibel zusammengesetzt werden können Dazu gehören natürlich die Grundlagen der Softwareentwicklung (Test Driven Development, Software Craftsmanship) auch moderne methodische Ansätze (agile, lean, Domain Driven Design, Continuous Delivery), kleine Tools (vert.x, Ratpack, Spring BootGradle – ich benutze meist Java/JVM) und offene Herangehensweisen. Im Kern geht es mir darum, die Geschwindigkeit bei der Umsetzung zu erhöhen, ohne das wirklich Stress entsteht. Deshalb halte ich den Zeitpunkt für wichtig, wann etwas gemacht wird. Auch schnelle Iterationen über Ideen und nicht erst über die Umsetzung halte ich für zielführend.  Damit verbunden ist eine enge Zusammenarbeit von Fachbereich,  Entwicklungsabteilung und möglichst auch des Benutzers. Die schnelle Verifikation dieser Ideen ist wichtig – möglichst im Tagesrhythmus,  wenn nicht gar schneller –  um den wirklichen Nutzen eines Produktes zu finden. Interdisziplinäre Teams (Business/Development/Operating/QA  – vielleicht BusDevOps 🙂 ) sind dafür äusserst hilfreich.

Seit einigen Jahren halte ich nun Vorträge (Docker, Microservices, Component Management) und gebe Workshops (Coderetreat, Continuous Delivery). Ich engagiere mich in der Entwicklergemeinschaft und bin Präsident der Java User Group Switzerland geworden. Meine Frau und ich haben zusammen die Weiterbildungstagung “Open Source an Schulen 2015” organisiert. Zusammen mit Geza (aka @infinitary)  bereite ich den  SoCraTes Day Switzerland vor.

Der grösste Schritt war aber sicherlich, mich selbstständig zu machen: 2015 habe ich die Nautsch Gmbh gegründet. Wir sind interessiert an Kunden, die mit uns in einem partnerschaftlichen Verhältnis an Lösungen erarbeiten möchten und dabei an neuen Sichtweisen interessiert sind. Die Grösse des Unternehmens spielt eine untergeordnete Rolle. Ich persönlich habe Erfahrungen sowohl im Start-Up Umfeld als auch in sehr grossen Unternehmen gesammelt. Wenn Sie also einen Partner für die Umsetzung einer Idee suchen, intern ein Team aufbauen wollen und einen Trainer suchen, oder einfach technische Unterstützung benötigen,  helfe ich gern weiter! Sie erreichen mich am besten per E-Mail:

info@nautsch.com

Adding a repository into /etc/apt/sources.list.d without python-software-properties installed

Here is an easy solution to install a new repository into /etc/apt/sources.list.d (e.g. ubuntu) without using the python-software-properties package. I found this in the relateiq/oracle-java8 Dockerfile . This example installs the Oracle JDK via the webupd8 java ppa.

echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" | tee -a /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886

and then the installation:

apt-get update
# auto accept oracle jdk license
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
apt-get install -y oracle-java8-installer

Coderetreat

Coderetreat 2012 @ ZurichJa, lange habe ich nichts mehr hier geschrieben und doch ist so viel passiert.

Am 8. Dezember 2012 habe ich am Global Day of Coderetreat in Zürich teilgenommen. Bei diesem Anlass treffen sich Softwareentwickler weltweit verteilt an verschiedenen Orten um ihr Handwerk das Programmieren zu üben. Der Anlass hier in Zürich war sehr gut organisiert und hat in den Büros von Namics stattgefunden.

Die Rahmenbedingungen:

  • Problem: Conway’s Game of Life
  • Test Driven Development
    • schreibe einen Test der fehlschlägt
    • bringe den Test zum laufen
    • refactor den Code
    • beginne von vorn
  • Generelle Regeln für den Code = Xp Simplicity Rules
  • Pair Programming – es sitzen immer zwei Leute vor einem Rechner und arbeiten zusammen an der Lösung
  • Sessions – man arbeitet mit seinem Partner für 45 Minuten an der Problemstellung, dann 15 Minuten Pause zum Besprechen und zum Erfahrungsaustausch
  • Constrains – in jeder Session bekommt man unterschiedliche Rahmenbedingungen die es einzuhalten gilt, dies waren z.B:
    • no return values – keine Rückgabewerte bei Methoden
    • no condititionals – kein if, kein while
    • baby steps – jede TDD Iteration innerhalb von 3 Minuten, dann 2 Minuten, dann eine Minute.

Im Zentrum steht das Üben. Es ist nicht notwendig am Ende etwas Funktionierendes vorweisen zu können. Auf diese Weise soll ermöglicht werden, dem Zeitdruck des normalen Arbeitsalltages zu entfliehen und Neues auszuprobieren.  Der Tag war sehr eindrucksvoll und wertvoll für mich. Unter Anderem musste ich feststellen, dass unter Zeitdruck auch besserer Code entstehen kann. Bisher war ich immer der Meinung, mehr Qualität auch mehr Zeit braucht – aber ja, es geht auch anders.

Da ich meine Erfahrungen gern teilen wollte, habe ich im April 2013 bei meinem Arbeitgeber Inventage auch solch einen Anlass organisiert und durchgeführt. Das Feedback war generell positiv. Ich empfehle jeder Entwicklungsabteilung solche oder ähnliche Anlässe durchzuführen. Man lernt die Arbeitsweise der Kollegen besser verstehen, übt seine Gedanken über das Programmieren auszutauschen, lernt die kleinen Tricks der Anderen kennen (und wenn es nur ein Shortcut ist),  lernt besseren Code zu schreiben, und, und, und… Wenn jemand Hilfe benötigt, solch einen Anlass zu organisieren, dann meldet Euch einfach.

Wer nicht auf den nächsten Coderetreat warten möchte: Hier in Zürich gibt es codersonly. Diese Gruppe von Leuten trifft sich regelmässig am Donnerstag Abend im Cafe Plüsch, um  gemeinsam an  Code-Katas zu trainieren und sich übers Software entwickeln auszutauschen.

May the Craft be with you.