Technologie

Unsere Lieblings-Technologien ...

Wir entwickeln Backends mit Java und Frontends mit Angular. So gibt es bei uns das beste aus zwei Welten: schnelle, robuste Server-Anwendungen und moderne, geschmeidige Oberflächen - im Web oder als hybride Apps. Das alles basiert auf etablierten Open-Source-Technologien.
Bei Datenbanken sind wir flexibel, setzen aber gerne auf NoSQL-Technologien wie MongoDB, Elasticsearch oder Scylla.

... und die passende Methodik

Wir glauben, dass jedes Projekt das Vorgehen bekommen sollte, das es erfordert. Wir arbeiten sehr gerne agil, manche Themen erfordern aber eine andere Herangehensweise. Hier verfolgen wir kein Dogma. Außer, dass wir immer die beste Qualität abliefern und uns ständig weiter entwickeln wollen.
Dazu gehört für uns auch, dass wir nicht nur mit einem Tech-Stack arbeiten, den Entwickler lieben, sondern auch, dass sie bei uns Ihre Tools selbst wählen können. Nach unserer Erfahrung ist jeder am produktivsten, wenn er die besten Werkzeuge für seinen eigenen Arbeitsstil nutzen kann – und das kommt wiederum den Projekten zu Gute.







Clean Architecture

Unsere Projekte sind so vielfältig wie unsere Kunden. Deshalb ist für uns besonders wichtig, dass alles an seinem Platz ist und wir den Überblick behalten. Wir arbeiten daher mit einer einheitlichen, aber extrem flexiblen Software-Architektur: Sie heißt „Clean Architecture“ - und wir lieben sie!

Der Clou dabei ist, dass fachliche Strukturen und Abläufe ohne Abhängigkeiten zu Datenbanken, externen Schnittstellen oder UI-Technologien umgesetzt werden. Dadurch werden unsere Lösungen skalierbar und die Systemkomponenten austauschbar, ohne dass Business-Prozesse bei Änderungen an der Infrastruktur neu implementiert werden müssen.
Im Projekt ist noch unklar, ob Micro-Services oder ein Monolyth die bessere Wahl ist? Daten sollen aus der SQL-Datenbank in einen Such-Server wandern? Plötzlich werden Web-Sockets, OAuth oder ein Server-Cluster benötigt? Alles kein Problem dank Clean-Architecture!

Domain Driven Design

Weil sich im Kern unserer Lösungen alles um die „Domain“, also die fachliche Welt des Projekts dreht, finden sich in der Software auch genau die Objekte und Abläufe wieder, die das Business abbilden. Wie die Prozesse auch funktionieren, wir wollen sie verstehen und möglichst exakt in Software gießen, anstatt nur in Datenbanktabellen und Schnittstellenspezifikationen zu denken.

Das klingt wie eine Selbstverständlichkeit, ist es aber nicht. Deshalb gibt es dafür sogar einen eigenen Namen: Domain Driven Design. Das ist super, weil damit die meisten fachlichen Anforderungen für uns leicht umsetzbar sind, auch wenn sie mal komplizierter werden oder sich im Laufe der Zeit ändern (und hey, sie ändern sich doch immer).

Haben wir schon erwähnt, dass dadurch auch der Code sensationell verständlich und besser wartbar wird? Das hilft am Ende allen.

Code-Generatoren

Wir fragen uns manchmal, warum nicht alle Teams so arbeiten wie wir – bis uns wieder einfällt: Es macht ganz schön viel Arbeit, Code so zu schreiben. Deshalb haben wir eine Familie von Code-Generatoren entwickelt, die uns das Meiste davon abnehmen. Wir haben sozusagen Software, die für uns Software schreibt, während wir die Zeit nutzen können um gemeinsam an der optimalen Lösung für die Nutzer zu tüfteln.

Wir können damit viele Aspekte von Projekten automatisch generieren, darunter Datenstrukturen und Datenbankanbindungen, viele Standardprozesse, Schnittstellen und Verwaltungsoberflächen. Das geht nicht nur extrem schnell, der Computer macht dabei auch keine Fehler.
Nach einmal Generieren, ist dabei aber noch nicht Schluss. Unsere Code-Generatoren sind so programmiert, dass wir eure Software iterativ mit ihnen weiterentwickeln können.
Natürlich reicht das für deine hochindividuelle Lösung nicht aus.
Auf dem generierten Code setzen wir auf und entwickeln manuell weiter, damit alles hinterher genau so funktioniert, wie es soll. Und was ist, wenn sich etwas ändert - wird dann nicht der manuelle Code überschrieben? Damit genau das nicht passiert, machen uns unsere Generatoren während des Updates auf Konflikte aufmerksam.

Und weil es nicht ein großer, sondern viele kleine Generatoren für verschiedene Themen sind, können wir sie je Projekt völlig individuell zusammenstellen. Keine MongoDB-Anbindung nötig? Dann generieren wir auch keine. Alles so wie es am besten passt.

Features

Und weil wir so viel Code automatisch erzeugen können und eine einheitliche Architektur verwenden, haben wir auch jede Menge Features fertig einsatzbereit, die andere Teams viel Zeit kosten, wir aber bei Bedarf leicht aktivieren können. Zum Beispiel:

  • Automatisches Tracking von Änderungen an Objekten
  • Automatische Erstellung von Audit-Trails
  • Validierung von Daten
  • Dynamische Attribute für Objekte mit starker Typisierung
  • Flexible Permission-Systeme
  • Mehrsprachige Daten
  • Bequemes Handling von Bildern und anderen Binärdaten
  • Excel Im- und Exporte
  • OAuth und OpenID-Connect
  • Rendering und Versand von E-Mails
  • Konfigurierbares Scheduling und asynchrone Tasks
  • Clusterfähigkeit
  • Automatisches Caching von Daten