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.

First week in NYC

Okay, I,m already staying for one week in New York City. And I want to write a few sentences about my impressions. First of all, it is saver as I know it from the movies.  I run every morning and everybody says “Hi” or “How are you?”. I like that. I go every working day to school to improve my English. The teacher there is just amazing. We have so much fun with this guy. He was traveling a lot and he lived in Prag for 7 years. Btw the name of the school is New York Language Center and I can recommend it.

My favorite place is the subway. The reason is: It is cold and I can read a lot. It is not so warm here in New York but the humility is quite high compared to Zurich.

Last Tuesday I joint  Brooklyn Code. There was a great table with a lot of laptops on top of it and the coders sitting in front of it. It was a nice experience to see and here how there are working in Brooklyn – very kind
A evening later I listened to a presentation of Jason van Zyl in one of this big hotels here in New York. He introduced the new product of sonatype called “Insight”. A lot of people know Jason because he is the inventor of Apache Maven and btw he is a good speaker too.people and good talks.  I walked over the Brooklyn Bridge to come to the meeting.

On Wednesday evening I was at the Rooftop BBQ Summer Tech Mixer at one of the New York City’s best roof top bars, as they describe this place beside the Williamsburg Bridge. A lot of entrepreneurs, software engineers, foreigners ( I was not alone ) and  students eating, drinking and talking together. The funny

thing about this bar is: It’s on the second floor.

I visited the Time Square of course and walked along the 5, 6 and 7 Avenue. On last Saturday I was in the Central Park. There are so many things to look to. I was sitting on a bench for more then two hours only watching Beach-Volleyball. These guys are very good in this.

The Friday before I was in the MoMA (Museum of Modern Art). A very friendly woman invited me to come with her into the museum, so I saved the 25 Dollars.  Yesterday I visited the Met (Metropolian Museum of Art). They have very nice pictures from the 20. Century. I was very impressed. And I found one of my favorite pictures “Two Men Contemplating the Moon” from Caspar David Friedrich too. I didn’t know about the existence of three versions of this picture.

I was in the American Museum of Natural History too. (Uhhh… I did a lot in the last week.) I like the exhibition about the dinosaurs. There are nice exhibits in full size.

So, I have to finish now. It is more a list of what I did as a description of my impressions. But I’m writing this story  in English and I’m still slow with typing.

Bye for the moment!

half year off

So, mein Sabbatical startet heute. Während eines halben Jahres werde ich mich Weiterbilden und mit Sachen beschäftigen, für die ich im täglichen Geschäft nicht genug Zeit hatte. Mein Arbeitgeber Inventage war so lieb und hat mir ein halbes Jahr unbezahlten Urlaub gegeben.

Eine Pause wollte ich schon so lange mal machen. Bisher war es allerdings immer ein Reden darüber. Letzten Februar haben meine Frau und ich, bei unserer Fahrt in den Winterurlaub, wieder einmal darüber geredet und festgestellt, dass es eigentlich jetzt eine gute Zeit für uns wäre. Also, dann machen wir es. Im Prinzip soll alles wie bisher funktionieren. Die Zeit die ich bisher im Büro war, beschäftige ich mich nun mit anderen Sachen. Meine Aufgaben in der Familie bleiben die gleichen.

Was habe ich alles vor:

  • Viel lesen. Bei mir liegen so viele Bücher rum, die ich endlich mal in die Hand nehmen möchte. Habe gestern mit “The Annotated Turing” von Charles Petzold angefangen
  • 3 Wochen New York
    • Englisch lernen/verbessern
    • Stadt erleben und anschauen, ich war noch nie an der Ostküste und bin sehr gespannt
  • Software bauen, insbesondere bei interessanten Open Source Projekten helfen,
    • werde mir auf jeden Fall vert.x anschauen.
  • mich mit Single Page Html Seiten/Applikationen beschäftigen, dazu gehört auch das ich in Coffeescript, Knockout, jQuery usw eintauchen möchte
  • mit Leuten treffen
  • und wenn noch Zeit ist

Zumindest habe ich mir dies alles auf die Liste gesetzt. Was passieren wird, werde ich sehen… und protokollieren, werde ich es hier auf dieser Seite.

So, let’s have fun. vert.x is compiling…