Alles in Ordnung?

Eine gute Ordnung und Struktur in die Organisation des Quellcodes einzubringen ist grundlegend. Sie wirkt sich nicht nur positiv auf die Robustheit, Testbarkeit und Interoperabilität unserer Anwendung aus, sondern sorgt auch dafür, dass unser Programm von anderen Entwicklern leicht verstanden, übernommen und erweitert werden kann.

Unordnung ist in der Softwareentwicklung gleichzusetzen mit technischen Schulden. Unübersichtlichkeit, Wiederholungen und unerwünschte Abhängigkeiten in Quellcodes führen zu erhöhten Lieferzeiten und machen die Weiterentwicklung und Wartung eines Programms um ein Vielfaches teurer.

Ich erläutere in diesem Artikel, wie Unordnung in Softwareprojekten entstehen kann und gebe Tipps aus meiner persönlichen Erfahrung, wie man dieser mit der Etablierung einer dauerhaften Ordnungskultur entgegenwirken kann.
Weiterlesen

Intime Eingriffe in Teams und Schätzprozesse mit Story Points

Dieser Blogpost ist ein Erfahrungsbericht aus einem Softwareprojekt. Es wird die Umstellung des Vorgehens bei Schätzungen mit Story Points im Backlog-Refinement beschrieben. Wer wenig Zeit hat und eigentlich nur ein Management-Summary haben möchte, sollte einen einen Blick auf die Zusammenfassung am Ende des Posts werfen. Für alle Anderen beginnen wir jetzt mit dem ersten Teil und der Problem­beschreibung als Auslöser der Umstellung.

Weiterlesen

Product Owner Anti-Pattern – was ist das?

Viele, vor allem neue, Product Owner konzentrieren sich auf die Umsetzung und Prozesse in einem agilen Projekt – dabei spüren sie jedoch häufig Unstimmigkeiten. Wir haben in den vergangenen Jahren ähnliche Erfahrungen gesammelt. Deshalb haben wir – die Runde der Agilen Coaches bei Mayflower – das zum Anlass genommen, uns konkret darüber Gedanken zu machen und zu identifizieren, warum Projekte nicht reibungslos laufen und wie das verbessert werden kann. Daraus, und aus den vielen Gesprächen und dem Feedback anderer Product Owner, sind uns die essenziellen Merkmale der Rolle Product Owner aufgefallen.

Wir haben daraus 30 Product Owner Anti-Pattern abgeleitet, die wir im Rahmen einer Artikelserie vorstellen werden (und die als Product Owner Anti-Pattern Kartenset kostenlos bei uns bestellt werden können). Die Beiträge sollen dabei helfen, das Verständnis der Rolle des Product Owners zu schärfen.
Weiterlesen

Natural Language Understanding (NLU) with PHP

Anyone can write an Alexa Skill in PHP, but what about NLU, natural language understanding? There are now some tools for this, but they were written in Python, as it is often the case in the machine learning environment. Below I show you how to do this with RASA NLU in PHP.

Weiterlesen

BreakUX – schlechte UX kann jeder

Schlechte UX kann jeder … das hört sich trivialer an, als es ist. Trivial wäre, gedankenlos und unreflektiert zu handeln und einfach irgendetwas zu tun. Bei der Implementierung von Benutzeroberflächen in der Software-Entwicklung passiert das leider viel zu oft. Aber auch bei der Planung neuer Features, der Gestaltung von Kundenbefragungen, usw. zeigt sich immer wieder eine gewisse Fahrlässigkeit.

Bei bewusst schlechter UX geht es aber gerade nicht um Gleichgültigkeit oder Fahrlässigkeit. Es geht vielmehr um das wohlüberlegte Treffen möglichst schlechter und bösartiger Entscheidungen. Das ist ein deutlicher Unterschied.

Weiterlesen

Erstellen einer einfachen REST API mit Spring Boot

Dieser Artikel richtet sich vorwiegend an Leser, die das Spring Framework noch nicht kennen, und soll ein kleines Intro in dieses geben.

Im Folgenden wollen wir beispielhaft einen einfachen Spring Boot Service erstellen, der ein REST API für Wetterdaten zur Verfügung stellt.
Weiterlesen

Zusammenarbeit über Teamgrenzen hinweg

Innerhalb eines Entwicklerteams funktioniert die Kooperation meist sehr schnell ziemlich gut – allerdings oft nur bis zur Teamgrenze. Team- oder auch unternehmensübergreifend dagegen wird weiterhin versucht, Kooperation in Form von Hierarchien, Verträgen und Verantwortlichkeiten festzulegen. So werden zum Beispiel Wissenssilos gefördert und das wahre Potenzial der Teams kaum ausgeschöpft.

Warum ist das so? Was kann man machen, um die Zusammenarbeit über die Teamgrenze hinaus zu fördern? In meinem letzten Blogpost Mentale Modelle für eine bessere Zusammenarbeit habe ich euch erzählt, wie wir bei Mayflower die Zusammenarbeit innerhalb der Teamgrenzen stärken. In diesem Beitrag zeige ich Wege auf, wie man das teamübergreifend bewerkstelligt.
Weiterlesen

Mentale Modelle für bessere Zusammenarbeit

Wir bei Mayflower schreiben uns auf die Fahne, dass wir mit ehrlicher Kooperation, Agilität und Kompetenz gute Software bauen. Was bedeutet das genau?

Ehrliche Kooperation im agilen Kontext bedeutet, es existieren gemeinsame mentale Modelle, man hat ein gemeinsames Verständnis. Wir nehmen das agile Manifest ernst, sprechen direkt zueinander, unterhalten uns, teilen Erfahrungen … und bauen somit ein gemeinsames Verständnis auf.
Weiterlesen

Retrospektive – The Hero’s Journey

A hero ventures forth from the world of common day into a region of supernatural wonder: fabulous forces are there encountered and a decisive victory is won: the hero comes back from this mysterious adventure with the power to bestow boons on his fellow man.
– „A hero with a Thousand Faces“ (Joseph Campell)

Als Team bestreiten wir jeden Tag spannende und herausfordernde Abenteuer und Projekte. Um stetig aus den Abenteuern, die wir schon überstanden haben, zu lernen, reflektieren wir sie in Retrospektiven. Was würde sich besser anbieten als das Motiv der Heldenreise zu verwenden, um die vergangenen Herausforderungen zu reflektieren und Aktionen und Learnings abzuleiten?

Weiterlesen

Dude … we have to talk about this (in JavaScript)

Recently I stumbled about this post about The complete elimination and eradication of JavaScript’s this.

To give you a TL;DR: The author states that almost no JavaScript developer understands this, that it is a terrible concept, and introduces a library that allows developers to avoid using this in many circumstances. So, we had a twitter discussion with pretty opposing standpoints: I think this in JavaScript is quite simple, versatile and really useful.

But in the next days, it got me thinking …

Weiterlesen