Priorisieren nach Zielen

Für eine belastbare Projektplanung ist es wichtig, alle Anforderungen eindeutig zu priorisieren. Und was tut man, wenn 80% aller Anforderungen Prio 1 haben?

Nur wenige Anforderungen an ein Projekt sind kontextfrei. Die meisten Anforderungen entstehen, um mit dem Projekt bestimmte Ziele zu erreichen. Daher erhalten so viele Anforderungen auch Prio 1 – sie sind wichtig für das jeweilige Ziel.

Weiter lesen…

15 Jahre als Freiberufler in der IT – eine Zwischenbilanz

Meine 5 Gründe dafür, in der IT als Freiberufler zu arbeiten, sind auf viel Resonanz gestoßen. Mehrere Leser haben mich gefragt, wie man sich die Arbeit als Freiberufler vorstellen kann. Insbesondere: Wie findet man Projekte?

Da seit meinem ersten Projekt 15 Jahre vergangen sind, nehme ich das zum Anlass, eine persönliche Zwischenbilanz zu ziehen und auf diese Fragen einzugehen.

Weiter lesen…

Wie die Jungfrau zum Kinde: Android als Java-EE-Entwickler

Wenn man als Java-Entwickler sonst immer komplexe Geschäftsanwendungen für den Server entwirft, bietet ein Android-Projekt willkommene Abwechslung. Spannend ist die Frage, ob sich liebgewonnene Architekturstile auf Android-Apps übertragen lassen. Und siehe da! Es klappt sogar erstaunlich gut.

Das Android-Ökosystem ist zwar umfangreich, aber es ist gut dokumentiert und man findet viele Bücher, gerade für den Einstieg. Als erfahrener Java-Entwickler reichen ein paar Tage aus, um die ersten eigenen Apps zu schreiben.

Weiter lesen…

Wie bleibt die Anwendung schnell? Performance-Regressionstests mit Hibernate!

In einer typischen Java-Enterprise-Anwendung steht und fällt die Performance mit den Datenbankzugriffen. Im Java-Code kommt es darauf an, sowohl die Anzahl der Datenbank-Roundtrips als auch die Größe der Ergebnismengen klein zu halten. Dies zu erreichen ist mit JPA, Hibernate & Co. schwierig – eine optimierte Anwendung langfristig schnell zu halten, aber noch schwieriger.

Die typische Java-Enterprise-Anwendung, die hier gemeint ist, hat einen mehrschichtigen Aufbau einschließlich einer Datenzugriffsschicht, die per JPA/Hibernate/EclipseLink auf eine relationale Datenbank zugreift. Für eine hohe Performance ist natürlich auch das Datenschema sehr wichtig. Gut gesetzte Indexe und eine optimierte Datenbankkonfiguration sind eine wichtige Basis für schnelle Zugriffe und einen hohen Durchsatz.

Weiter lesen…

Wer braucht eine Dokumenten-Datenbank? (Und wer nicht?)

Je mehr sich der Hype um NoSQL-Datenbanken legt, desto interessanter wird die Frage, wann sich der Einsatz einer solchen Datenbank wirklich lohnt. Werfen wir einen Blick auf die Dokumenten-Datenbanken wie MongoDB und CouchDB.

Was können Dokumentendatenbanken? (Und was nicht?)

Dokumentendatenbanken können, im Gegensatz zu relationalen Datenbanken, besonders gut hierarchische Daten speichern. Das heißt: Auch verschachtelt strukturierte Daten können einfach geladen und gespeichert werden. Somit entfallen aufwändige Tabellen-Konstruktionen, um die Daten zu speichern und komplexe Join-Operationen, um die Daten wieder zu laden. Wenn als Analogie eine relationale Datenbank einer Sammlung von CSV-Dokumenten entspricht, dann entspricht eine Dokumentendatenbank einer Sammlung von XML-Dokumenten.

Weiter lesen…

Finde die perfekten Möbel mit Hilfe von Einrichtungsideen und einem Magazin

Vor einer Weile hatte ich über den Relaunch von woont.com berichtet, einer Seite für alle, die sich gerne schön einrichten. Seit dem hat sich viel getan, sodass sich ein zweiter Blick lohnt.

Um dem Anspruch zu genügen, jedem Besucher das perfekte Möbel oder Accessoire zu vermitteln, hat woont zwei große neue Bereiche hinzu bekommen: ein Magazin mit Beiträgen über Wohnen und Leben sowie eine Community.

Weiter lesen…

Gut gedacht – zu viel gemacht: wenn User Stories Spielraum lassen

Auch in gut laufenden agilen Projekten ist am Ende eines Sprints nicht immer das entstanden, was am Wichtigsten gewesen wäre. Dafür lassen User Stories zu viel Spielraum.

In einem Projekt sind alle User-Stories gut durchdacht, die Prioritäten klar verteilt und die Entwickler arbeiten die Stories streng nach Priorität ab. Trotzdem ist der Kunde am Ende der Sprints nicht zufrieden: Wichtiges wurde nicht geschafft, Unwichtiges hingegen getan. Wie kann das passieren?

Weiter lesen…

Spring 3, Hibernate 4 und Wicket 6: ein starkes Gespann

Ohne Vorkenntnisse ist es gar nicht so einfach, eine Web-Anwendung mit Spring, Hibernate und Wicket aufzusetzen. Dabei reichen dafür nur wenige Zeilen Java-Code.

Im Laufe des Jahre sind im Spring-Framework verschiedene Varianten entstanden, wie man eine Web-Anwendung aufsetzt. Inzwischen ist es möglich, auf externe XML-Konfigurationsdateien vollständig zu verzichten. Wie man konkret vorgeht, eine Spring-Anwendung mit Hibernate und Wicket aufzusetzen, zeigt dieser Artikel.

Weiter lesen…

Wie lange kann man sprinten?

In Softwareprojekten hat sich der Begriff „Sprint“ als Synonym für ein- bis zweiwöchige Iterationen eingebürgert. Trotzdem ist ein Sprint keine passende Analogie in mittel- bis langfristig laufenden Projekten!

Im normalen Sprachgebrauch wird der Ausdruck Sprint vor allem im Sport verwendet. Dort bezeichnet ein Sprint die schnellstmögliche Fortbewegung, zu der ein Mensch in der Lage ist. Jedoch nur auf kurzen Strecken!

Weiter lesen…

Dokumentieren mit Patterns – Beispiele aus der Praxis

Die Dokumentation eines Projekts in Form von Patterns zu schreiben, klingt etwas gewagt. Dabei sind sie eine sinnvolle Ergänzung zur üblichen Software-Dokumentation.

Vor kurzem habe ich erläutert, wie man Patterns selber schreibt. Indem man eine vorhandene Lösung in Form eines Patterns beschreibt, lernt man viel über das Problem, das man gelöst hat. Die Dokumentation von Software enthält üblicherweise umfangreiche Beschreibungen, wie die Software strukturiert ist – die Gründe, warum die Software genau so strukturiert ist und nicht anders, werden selten intensiv ausgeleuchtet. Dabei sind gerade die Begründungen für die getroffenen Design-Entscheidungen wichtig, damit eine Software auch von neu zu einem Team hinzugekommenen Entwicklern langfristig konsistent weiterentwickelt werden kann.

An dieser Stelle möchte ich zwei Beispiele aus einem Projekt vorstellen, die zeigen, wie Patterns in der Realität einer Softwaredokumentation aussehen können.

Weiter lesen…