Boris Stumm Consulting

Dr.-Ing. Boris Stumm, Dipl.-Inf.

Mein Werdegang

Ich studierte von 1998 - 2003 angewandte Informatik an der TU Kaiserslautern. Im Anschluss an mein Studium war ich wissenschaftlicher Mitarbeiter in der Arbeitsgruppe "Heterogene Informationssysteme" von Prof. Dr. Deßloch. Nach Studium und Forschung begann 2009 meine Karriere als IT-Consultant.

Erfahrungen habe ich hauptsächlich in den Bereichen Versicherungen, Bewertungsplattformen, Webshops und Online-Marktplätzen sammeln können.

Ich bin Informatiker und Software-Entwickler aus Leidenschaft und liebe Herausforderungen. Mit akademischem Hintergrund und pragmatischer Ader sehe ich meine Aufgabe darin, gute und richtige Lösungen zu entwickeln, unter Berücksichtigung sowohl technischer als auch betriebswirtschaftlicher Aspekte. Das führt zwangsläufig zu Kompromissen. Mir ist besonders wichtig, das dadurch keine zukünftigen Möglichkeiten verbaut werden.

Mein Angebot

Scala und Java

Java war (abgesehen von BASIC V2) meine erste Programmiersprache. Mit Java entwickle ich seit 22 Jahren. Scala nutze ich seit 8 Jahren. Mittlerweile ist Scala die Programmiersprache meiner Wahl, die auch bei Kunden immer öfter eingesetzt wird.

Datenbanken

Sowohl im Studium als auch bei der Promotion lag mein Schwerpunkt bei Datenbanksystemen. Neben den üblichen Vertretern der relationalen Systeme konnte ich in den letzten Jahren auch Erfahrungen mit Systemen wie MongoDB, Cassandra, und ElasticSearch sammeln.

Wenn es um Datenverarbeitung geht, muss man sehr genau wissen, um welche Daten es sich handelt, und was man mit den Daten vor hat. Weder SQL noch NoSQL ist die Antwort auf alle Fragen, und Fehlgriffe in diesem Bereich können zu sehr hohen Folgekosten führen, z.B. in der Softwarewartung.

Microservices

Microservices sind in den letzten Jahren sehr in Mode gekommen. Ich habe bei mehreren Kunden Erfahrungen mit Microservices gesammelt, und bin grundsätzlich überzeugt vom Konzept. Allerdings bieten Microservices nicht nur Vorteile gegenüber Monolithen, sondern erhöhen die Komplexität an anderen Stellen. Wo man sich im Kontinuum Microservices <-> Monolithen positioniert hängt deshalb von den Gegebenheiten (Teams, existierende Dienste, Unternehmensphilosophie usw.) ab.

Continuous Integration/Deployment

Das kontinuierliche Bauen, Integrieren und Testen von Software ist ein grundlegender Bestandteil der Softwareentwicklung. Seit dem Beginn meiner Beratertätigkeit nutze ich CI-Systeme in jedem Projekt. Ein gutes CI-Setup muss vor allem schnell sein. Je schneller die Entwickler Feedback erhalten, desto weniger wird der "Flow" unterbrochen und die Effizienz steigt.

Weit über die Continuous Integration hinaus geht das Continuous Deployment. Anwendungen werden nicht nur permanent gebaut und getestet, sondern auch mehrfach am Tag bis in die Produktion gebracht. Faktisch wird jedes Commit zum Release. Das klingt für viele utopisch, und es gibt sicherlich Anwendungsgebiete, in denen eine solche Vorgehensweise nicht angebracht ist. Beispielsweise bei Webanwendungen bringt eine solche Vorgehensweise jedoch deutliche Vorteile: Neue Features und Bugfixes werden viel schneller produktiv. Die Softwarequalität bleibt hoch, weil die Qualitätssicherungsmaßnahmen permanent durchgeführt werden (müssen).

Webanwendungen

Beim größten Teil meiner bisherigen Projekte ging es um Webanwendungen; größtenteils habe ich mich um die Backends gekümmert. Ich habe diverse Frameworks kennengelernt: Spring und JEE, Struts Servlets/JSP, JSF, Wicket und Vaadin. Mittlerweile ist Play das Framework meiner Wahl, um Webanwendungen zu bauen.

Agile Softwareentwicklung

Ich bin überzeugter Anhänger des Agilen Manifests. Software agil zu entwickeln erfordert ein hohes Maß an Motivation und Disziplin bei allen Beteiligten. Man ist in einem permanenten Verbesserungsprozess, den jeder einzelne voranbringen muss. Leider scheitern agile Projekte oft, weil diese Voraussetzungen nicht gegeben sind. Wenn die Rahmenbedingungen jedoch passen kann mit agilen Methoden viel mehr erreicht werden als bei "konventioneller" Entwicklung, weil immer an den wichtigsten zuerst gearbeitet wird und alle Beteiligten Verantwortung übernehmen.