10 Dinge, die Entwickler an (JIRA-)Tickets schätzen

Im letzten Monat habe ich auf dem PO-Camp darüber gesprochen, welche Bestandteile und Prinzipien aus Entwickler-Sicht für gute (JIRA-)Tickets erforderlich sind. Die gesammelten Anforderungen basieren auf der einen Seite auf kurzen Interviews mit Entwickler-Kollegen, die ich im Rahmen unserer Slacktime durchgeführt habe („Was machen für Dich gute JIRA-Tickets aus?“). Zum anderen fließen aber auch meine persönliche Erfahrung als Entwickler und Team-Mitglied, das relativ viel mit dem Kunden kommuniziert, mit ein.

Herausgekommen sind 10 Punkte, die sich auf das Format, den Inhalt und die Rahmenbedingungen, unter denen das Team mit den Tickets arbeitet, beziehen. Weiterlesen

AngularJS Tipps: Modularer Aufbau einer AngularJS-Applikation

In diesem zweiten Teil der Reihe AngularJS Tipps geht es um den grundlegenden Aufbau einer AngularJS Web-Applikation. In Abgrenzung zu bekannten Beispielen, zeige ich ein einfaches, aber praxisnahes Muster für eine modulare Struktur einer AngularJS-App. Im vorangegangenen ersten Teil der Reihe beschäftigte ich mich mit der Kommunikation zwischen AngularJS-Controllern.

Der Artikel richtet sich an Leser die bereits Erfahrungen mit AngularJS gesammelt haben und ist darum keine generelle Einführung in die Arbeit mit diesem JavaScript-Application-Framework.

Weiterlesen

The Puppet Anchor Pattern in Practice

Recently, my team rewrote all Puppet manifests for Mayflower’s core infrastructure with our two year long Puppet experience in mind. Many mistakes were made in the past, but this time we decided to write clean and structured Puppet code based on the latest language features from Puppet 3. More blog posts about advanced Puppet topics are going to be published in 2014.

The main theme of the rewrite was abstraction. Our goal was to use as many third-party modules as possible. Because many modules needed fixes, we contributed a lot of code back to the community. We adopted the Roles, Profiles, Components Design and use Hiera extensively to separate business logic, modules, manifests and data. Our manifests basically glue the modules together and embed them sensibly in our environment, seeded with data from Hiera.

The Problem

If you’ve written your fair share of Puppet manifests, you can imagine that such an architecture requires the definition and inclusion of lots of classes. Sadly, Puppet’s dependency system treats classes different than resources: If you include class foo in class bar, then class  foo and all its contained resources and dependencies won’t have any dependency relations with class bar. Weiterlesen

Vom Zähmen der CSS-Monster

Wer schon einmal die komplexen Tiefen des Backends verlassen musste, um im vermeintlich einfacheren Frontend eines Projektes das Bunte und Spielerische anzupassen, wünscht sich meist schnell zurück zu den dokumentierten Funktionen, übersichtlichen Modulen und standardisierten Codezeilen. Nämlich genau dann, wenn man die völlig chaotischen und total überladenen CSS-Dateien – von mir auch liebevoll CSS-Monster genannt – zu Gesicht bekommt. Meist traut man sich kaum die 1000+ Zeilen auch nur schief anzusehen, weil man schon im vornherein weiß, dass jede noch so winzige Änderung das schlafende Monster wecken und das Design zerstören kann. Doch woher kommen diese Monster und wie kann man sie vermeiden?

In diesem Artikel möchte ich die Ursachen von CSS-Monstern erklären und Ihnen vier Punkte zur Vermeidung eben dieser vorstellen.
Weiterlesen

Percona-Tools für Entwickler, Teil 1

Percona-Toolkit… das ist doch nur für Admins? Mag man denken, aber es gibt in dieser großen Sammlung von Werkzeugen (der Nachfolger von Maatkit) auch Dinge, die ein reiner Developer nutzen kann und sollte. Und ich meine da nicht nur DevOps. Im Artikel wird genau erklärt, welche Tools das sind und wie ihr sie insbesondere als reiner Developer sofort nutzen könnt.

Weiterlesen

Von Kanban und wie alles besser wurde…

Noch im Sommer herrschte das Chaos: Unsere Lieferzeiten waren unklar, das Ticketmanagement wurde von uns selbst durchgeführt und die Fachabteilung, die am lautesten brüllte, hat ihr Ticket als erstes umgesetzt bekommen. Immer wieder erwischten wir uns dabei, wie wir an viel zu vielen Tickets gleichzeitig arbeiteten und die Zeit für technische Verbesserungen  auch auf der Strecke blieb.

Es war Zeit, etwas zu ändern!

Symfony2: Bundle your libraries!

In vielen Software-Projekten kommen Entwickler irgendwann an einen Punkt, an dem Funktionalität implementiert wird, die in anderen Projekten wiederverwendet werden können soll. Nachdem ich in der jüngeren Vergangenheit von mehreren Kollegen gefragt wurde, wie man dies in Symfony2-Projekten bewerkstelligen kann, wollte ich schriftlich eine Zusammenfassung der wichtigsten Punkte bereitstellen. Das Resultat ist dieser Blog-Artikel, der eine Schritt-für-Schritt-Anleitung enthält, wie man wiederverwendbaren Code kapselt und in einem eigenen Symfony2-Bundle bereitstellt.

Das Wissen, welches ich hier verpacke, habe ich teils aus der Symfony2-Dokumentation, teils aus der Erfahrung, welche ich in den letzten Jahren in Symfony2-Projekten gesammelt habe. Nachdem ich des Öfteren Library-Code aus Projekten ausgelagert hatte, konnte ich einige Patterns identifizieren und vor allem feststellen, dass diese Vorgehensweisen in Symfony2-Projekten (abgesehen von syntaktischen Eigenheiten) denen in beliebigen anderen Umgebungen sehr stark ähneln.

Die folgende Liste ist als Template zu verstehen, welches in einfachen Projekten genau so verwendet werden kann, in komplexeren jedoch wahrscheinlich erweitert werden muss. Weiterlesen

Kanban – Ein Erfolgsrezept für das Rezept des Erfolges

Nachdem ich auf der diesjährigen Spring-Edition am "Agile Day" einen richtig guten Talk von Arne Roock (it-agile GmbH) und Fridtjof Detzner (Jimdo) über "Kanban bei Jimdo" gehört hatte, und das dort empfohlene Buch "Kanban – Evolutionäres Change Management für IT-Organisationen" von David J. Anderson ohnehin schon zuhause liegen hatte, war ich infiziert!

Weiterlesen

Stolpersteine agiler Methoden

Die Spring-Edition der IPC (International PHP Conference) fand dieses Jahr vom 03. bis zum 06. Juni 2012 in Berlin statt. Sie hatte – wie auch in den vergangenen beiden Jahren schon – einen eigenen "Agile Day" mit einer Reihe von Talks die sich rund um Themen zur Agilität drehten. Da dieser Themenkomplex zunehmend an Popularität gewinnt und dessen Methodik schon Einzug in die tägliche Arbeit vieler Firmen gefunden hat, gilt es auch auf die Seitenaspekte zu achten. Dies haben sich Sebastian Bauer (Inovex GmbH) und Dominik Jungowski (CHIP Xonio Online GmbH) zum Anlass genommen gleich zu Beginn des Agile Day mit ihrem Vortrag "Stolpersteine agiler Methoden" auf die Probleme rund um die Thematik einzugehen und mit Lösungsansätzen aufzuwarten. Damit möglichst Wenige beim Einsatz agiler Methoden über schon bekannte Steine auf dem Weg stolpern, möchte ich einen kurzen Überblick über den gehaltenen Talk geben…

Weiterlesen