Freiberufler, Java-Architekt und Java-Entwickler

Blog des Freiberufler-Teams

Zusammen mit meinen Kollegen des Freiberufler-Teams schreibe ich regelmäßig Blog-Artikel über Themen aus der Softwareentwicklung.

Hier eine kleine Auswahl meiner veröffentlichten Artikel:

Freiberuflichkeit

Freiberufler werden - 5 Gründe, sich in der IT selbstständig zu machen

Eine feste Stelle anzunehmen, ist nicht jedermanns Sache. Zwar gibt es gute Gründe, als Angestellter zu arbeiten, aber vieles spricht dafür, Freiberufler werden zu wollen.

Als selbstständiger Softwareentwickler arbeite ich seit jeher freiberuflich. Ich schätze diese Arbeitsweise sehr und empfehle sie gerne weiter. Dabei erlebe ich immer wieder, dass für andere Entwickler der Wechsel von einem festen Arbeitsplatz zur Selbstständigkeit eine große Hürde ist.
Welche Gründe sprechen aus meiner Sicht für die Freiberuflichkeit? 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...

Lebenslanges Lernen – was bedeutet das für einen IT-Freiberufler?

Ich stehe in der Mitte meines Berufslebens und staune immer wieder, wenn ich mit Mitt-Zwanzigern zusammenarbeite. Denn manche meiner jüngeren Kollegen kommen direkt von der Uni oder haben erst wenig Berufserfahrung. Trotzdem ist ihr technisches Wissen auf einem sehr hohen Stand. Da kann mir schon mal der Gedanke kommen: „Und mit denen konkurriere ich jetzt?!“

Bei näherem Betrachten entspanne ich mich wieder schnell. Und das liegt an mehreren wichtigen Einsichten: Weiter lesen...

Projektmanagement

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...

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...

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...

Software-Architektur

Geteiltes Leid ist doppelte Freud – Erfahrungen zum Zerkleinern eines Software-Systems

Der Hype und die Berichterstattung um Microservices scheinen langsam abzuflauen. Umso mehr ist es nun an der Zeit, möglichst objektiv darüber zu berichten, welchen Nutzen und welche Nachteile der Trend zu kleineren Systemen gebracht hat.

Microservices werden nicht nur dafür beworben, mit ihnen neue Systeme zu entwickeln, sondern auch dafür, bestehende System in kleinere Teile zu zerlegen. Letzteres ist der schwierigere Fall, gilt es doch, lange gewachsene Strukturen zu entflechten. Weiter lesen...

Welchen Nutzen hat HATEOAS für REST-Schnittstellen?

HATEOAS ist nicht nur eine sperrige Abkürzung, es ist auch schwierig herauszufinden, welche Vorteile dieser Ansatz für REST-Schnittstellen bietet. Das ist schade, denn damit lassen sich manche Probleme in der Client-Entwicklung elegant vereinfachen.

Laut Roy Fielding, dem Urheber der REST-Konzepts, sind die meisten sogenannten REST-Schnittstellen nicht RESTful in seinem Sinne. Eine Schnittstelle, die nur Daten liefert, hilft einer Client-Anwendung nicht zu verstehen, wie die Daten auszuwerten sind. Weiter lesen...

Zeit für Neues: Von Wicket zu Angular - einfacher als gedacht

In den vergangenen Jahren ging der Trend in der Client-Entwicklung weg vom serverseitigen Rendern hin zu clientseitigen Frameworks. Wer als Java-Entwickler nie richtig warm mit Javascript wurde, blieb trotzdem bei bewährten Frameworks wie Wicket. Mit Angular steht jetzt eine Alternative zur Verfügung, die auch hartgesottenen Java-Entwicklern entgegenkommt.

Angular bietet einem Java-Entwickler endlich eine Plattform, die sich gar nicht so sehr von der serverseitigen Welt unterscheidet. Weiter lesen...

Hacken mit Spring Boot und den Netflix-Bibliotheken

Microservices sind derzeit ein beliebter Ansatz für den Entwurf von Server-Anwendungen. Wer sich in einer Java-/Spring-Umgebung bewegt, sollte sich dazu mit den Netflix-Bibliotheken Ribbon, Eureka und Hystrix beschäftigen.

Bis vor kurzem war der Monolith das vorherrschende Muster beim Aufsetzen einer neuen serverseitigen Anwendung. Warum auch nicht? Solange sich die Funktionalität von einem überschaubaren Team umsetzen lässt und die Anforderungen an die Skalierbarkeit gering sind, hat der Alles-in-einem-Ansatz viele Vorteile. Aktuell geht der Trend jedoch in Richtung Microservices. 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.

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. Weiter lesen...

Software-Entwicklung

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...

Was kostet die Welt? Internationalisierung mit den International Components for Unicode (ICU)

Wie heißt "Japan" auf Türkisch? Wie sortiert man koreanische Begriffe alphabetisch? Und wie viele Pluralformen gibt es im Arabischen? Wer sich ernsthaft mit diesen Fragen beschäftigen muss, kommt kaum an den International Components for Unicode (ICU) vorbei.

Als Java-Entwickler bietet einem die Java 7-Plattform gute Unterstützung, um lokalisierbare Anwendungen zu entwickeln, sowohl im Funktionsumfang als auch bei den unterstützten Sprachen. Jedoch ergeben sich schnell Anforderungen, die Java von Haus aus nicht unterstützt. Glücklicherweise gibt es eine Datensammlung zusammen mit einer Java-Bibliothek, die kaum einen Wunsch offen lässt: Das Common Locale Data Repository (CLDR) zusammen mit den International Components for Unicode (ICU). Weiter lesen...

OpenStreetMap - eine Schatzkiste an frei verfügbaren Geodaten

OpenStreetMap (OSM) enthält eine enorme Menge an frei verfügbaren Geodaten - derzeit sind es rund 1,6 Milliarden Koordinaten. Wie lässt sich das dort vorhandene Wissen in eigenen Projekten verwenden?

Nach einem ersten Blick in die Datenbasis stellt man schnell fest, dass die Geodaten nur wenig strukturiert vorliegen. Ähnlich wie bei Wikipedia ist zwar enorm viel Wissen vorhanden, aber nur implizit. Es gibt keine Schnittstellen, mit denen sich die Informationen komfortabel abfragen ließen. Das heißt: Es ist z.B. nicht möglich den längsten Fluss Deutschlands abzufragen. Stattdessen lassen sich nur alle Punkte, Pfade und Polygone ermitteln, die mit dem Tag "water" versehen sind und sich innerhalb eines vorgegebenen Ausschnitts befinden. Erst durch eine Auswertung dieser Daten lässt sich der längste Fluss ermitteln. Weiter lesen...