Bei T2med arbeiten derzeit sechs Entwicklungsteams in einem agilen, nach Kanban aufgebauten Entwicklungsprozess. Fünf der Teams sind hauptsächlich mit der Weiterentwicklung unseres Praxisverwaltungssystems beschäftigt, während sich das sechste Team sowohl um die Entwicklung und den Betrieb unserer Online-Dienste kümmert, als auch um das Managen der internen Entwicklungsinfrastruktur. Letztere Aufgabe soll zukünftig von einem Plattform Engineering-Team übernommen werden. Das Team ist derzeit im Aufbau und soll außerdem Werkzeuge, Bibliotheken und Automatisierungen entwickeln, um die Developer Experience der anderen Entwicklungsteams zu verbessern.
Teams
Team X
6 Softwareentwickler:innen
2 Tester:innen
1 Product Owner
Projekte:
Team J
5 Softwareentwickler:innen
2 Tester:innen
1 Product Owner
1 Technical Writer
Projekte:
Team Q
4 Softwareentwickler:innen
2 Tester:innen
1 Product Owner
Projekte:
Team ID
5 Softwareentwickler:innen / DevOps-Engineers
1 Product Owner
Projekte:
Team KI
4 Softwareentwickler:innen
Projekte:
Team CR
2 Softwareentwickler:innen
Projekte:
Team Developer Experience
2 Softwareentwickler:innen / DevOps-Engineers
Projekte:
Tools und Automatisierung
Entwicklungsinfrastruktur
Außerhalb der Teams agieren teamübergreifend fachspezifische Product Owner:innen, ein Softwarearchitekt, ein Agile Coach und unsere Entwicklungsleitung.
Technologien
Bei T2med werden eine Reihe unterschiedlicher Technologien eingesetzt. Je nach Anwendungsgebiet wird versucht, die geeignetsten dafür auszuwählen. Grundsätzlich lässt sich der Technologie-Stack aber wie folgt beschreiben:
- Unsere Backends, d. h. alle unsere Services und Serveranwedungen, werden hauptsächlich auf der Java Virtual Machine betrieben. Für neuere Projekte setzen wir dabei fast ausschließlich auf Kotlin als Programmiersprache.
- Bei den Frontends gibt es durchaus etwas mehr Abwechslung, da die Zielplattform hier häufig bereits die Technologieauswahl einschränkt.
- Grundsätzlich versuchen wir, wann immer es möglich ist, auf quelloffene Frameworks und Technologien zurückzugreifen um so zukunftssicher zu bleiben.
Die folgenden Abschnitte geben einen detaillierten Überblick über unseren Technik-Stack.
Sprachen
Unser Praxisverwaltungssystem ist unser primäres und größtes Softwareprojekt und ist hauptsächlich in Java geschrieben. Der dazugehörige Desktop-Client nutzt
JavaFX.
Bei der Entwicklung neuerer Dienste, Bibliotheken und beim Build-Tooling setzen wir fast ausschließlich auf Kotlin, da unsere Entwickler:innen die gute Developer-Experience zu schätzen wissen.
Für unseren mobilen Apps kommen u.a. Objective-C, Swift und Dart zu Einsatz. Unsere Webanwendungen setzen, wie nicht anders zu erwarten ist, auf die üblichen Verdächtigen: HTML, CSS und JavaScript.
Frameworks
Die meisten unserer Backends setzen auf Spring als Framework. Genutzt wird dazu in den meisten Fällen Spring Boot zusammen mit Spring Data / Hibernate für den Zugriff auf die Datenbank.
Beim Bau kleinerer, leichtgewichtigerer Dienste setzen wir häufig Ktor ein. Ktor ist ein Anwendungsframework von
JetBrains für HTTP-Services und -Clients, welches auf Kotlin und Coroutinen setzt.
Flutter ist ein plattformübergreifendes, quelloffenes Framework von Google zur Erstellung von Apps. Wir nutzen Flutter für die Entwicklung der PatMed-App.
Datenbanken
PostgreSQL ist eine bewährte, quelloffene, relationale Datenbank. So gut wie all unsere Dienste, die eine persistente Datenhaltung benötigen, setzen auf PostgreSQL.
Gradle ist ein leistungsstarkes und flexibles Build-Sytem zugeschnitten auf die
Java Virtual Machine. Gradle nutzen wir für das Bauen unserer Anwendungen und zur Durchführung automatisierter Tests.
TeamCity ist die von uns genutzte Continuous-Integration-Lösung. Mithilfe von TeamCity werden unsere Anwendungen zentral gebaut, getestet und bereitgestellt. Unsere Online-Services lassen sich per Knopfdruck direkt auf Test- und Produktivsysteme deployen.
Grafana ist ein Tool zum Visualisieren von Metriken. Wir nutzen Grafana zum Überwachen unserer Infrastruktur und Services und zur Auswertung wichtiger Metriken.
GitLab ist eine umfassende DevOps-Platform, die den gesamten Entwicklungszyklus abbildet. Wir nutzen GitLab hauptsächlich nur als Versionsverwaltungsystem.
Docker setzen wir sowohl im Betrieb unserer Infrastruktur und verschiedener Dienste als auch für unsere TeamCity-Buildumgebungen ein.
Alltägliche Werkzeuge
Für die tägliche Arbeit, sowohl im Bereich Projektmanagement als auch zur Softwareentwicklung, kommen einige unabdingbare Programme zu Einsatz, von denen wir die wichtigsten hier nicht unerwähnt lassen möchten:
Zur Entwicklung all unserer Anwendungen nutzen wir fast ausschließlich IntelliJ IDEA, eine der umfangreichsten und produktivsten
IDEs in der Java- und Kotlin-Welt.
Zur alltäglichen Kommunikation wie z.B. Stand-Ups oder Pair-Programming nutzen wir Microsoft Teams.
Zur Projektplanung und Umsetzung des Kanban-Workflows nutzen wir YouTrack. Zusätzlich dient es es auch als interne Wissensdatenbank.