Softwarelösungen zu entwickeln, startet nicht erst beim Coding und endet auch nicht mit der Übergabe des Quellcodes – zumindest nach Auffassung des Karlsruher Softwaredienstleisters generic.de.
Als Entwicklungspartner großer und mittelständischer Unternehmen aus dem Maschinen- und Anlagenbau, der produzierenden Industrie und dem Bausektor blickt das Unternehmen auf über 20 Jahre Erfahrung in der Entwicklung von Individualsoftware zurück. Speziell die letzten Jahre haben dabei eines gezeigt: Softwareentwicklung muss als ganzheitlicher Prozess verstanden werden. CTO Sebastian Betzin verrät im Interview, wie die neue Ausrichtung des Unternehmens genau aussieht und was in der Softwareentwicklung heutzutage wirklich wichtig ist.
„Einfach ein vorgefertigtes Lastenheft abzuarbeiten und in Code zu gießen, funktioniert heute nicht mehr. Dabei wird zwar ein Produkt rauskommen, aber mit hoher Wahrscheinlichkeit nicht das, was das Unternehmen wirklich braucht.“ (Sebastian Betzin, CTO generic.de)
Herr Betzin, warum ist ganzheitliche Softwareentwicklung heute so wichtig?
Sebastian Betzin: Unsere Welt wird immer komplexer – speziell im industriellen Umfeld. Durch die Digitalisierung haben wir schier unendlich viele Möglichkeiten, Prozesse neu zu gestalten und Abläufe zu optimieren. Hier immer den Überblick zu bewahren und am Ball zu bleiben, ist ein Ding der Unmöglichkeit – zumindest, wenn man auf sich allein gestellt ist. Als Entwicklungspartner wollen wir deshalb nicht mehr erst dann zum Einsatz kommen, wenn es ums Programmieren geht, sondern schon viel früher im Entwicklungsprozess ansetzen. Einfach ein vorgefertigtes Lastenheft abzuarbeiten und in Code zu gießen, funktioniert heute nicht mehr. Dabei wird zwar ein Produkt rauskommen, aber mit hoher Wahrscheinlichkeit nicht das, was das Unternehmen wirklich braucht.
Welche Vorteile ergeben sich durch eine ganzheitliche Betreuung?
Sebastian Betzin: Je früher es ein gemeinsames Verständnis der Produktvision gibt, desto eher können wir bei der Ideenfindung und der Anforderungsdefinition mitarbeiten. Und damit die Produktentwicklung von Grund auf mitplanen. Es geht schließlich nicht darum irgendein Softwareprodukt zu entwickeln, sondern das richtige Produkt – für das Unternehmen und die späteren Anwender:innen. Dafür müssen wir beantworten können, welche User welche Aufgaben zu erfüllen haben, welche Daten sie dafür brauchen und wie sie die Software bestmöglich bei ihrer Arbeit unterstützt. Sind diese grundlegenden Fragen geklärt, produzieren wir auch sehr viel effizienter und können das Softwareprodukt dadurch schneller zur Marktreife bringen. Gleichzeitig entwickeln wir durch diese tiefe Verankerung ein ganzheitliches Verständnis des Produkts, des Kunden und der Branche. Wir sprechen da von Domänenwissen. Und das ist elementar für den Betrieb, den Support sowie für mögliche Weiterentwicklungen der Lösung.
„Es geht schließlich nicht darum irgendein Softwareprodukt zu entwickeln, sondern das richtige Produkt – für das Unternehmen und die späteren Anwender:innen.“ (Sebastian Betzin, CTO generic.de)
Ihr Ansatz: erfinden, erforschen, entwickeln, erhalten – Was verbirgt sich dahinter?
Sebastian Betzin: Beim Erfinden geht es uns darum, gemeinsam mit dem Kunden anhand seines Business Case und seiner groben Vision eine funktionierende Produktidee auszuarbeiten. Oder – falls es diese bereits gibt – die Idee zu prüfen und zu validieren.
Anschließend unterstützen wir unsere Kunden dabei, die Produktidee in die richtigen Bahnen zu lenken. Das bezeichnen wir als Erforschen. Man könnte es auch geführtes Requirements Engineering nennen, wobei das zu kurz greift. Vielmehr ist es tatsächlich eine Art Forschungsreise, in der wir das Unternehmen und vor allem die späteren User kennen und verstehen lernen wollen. In dieser Phase ist verstärkt unser UX-Team involviert. Sie nehmen die Anwender:innen unter die Lupe, analysieren ihre Arbeitsprozesse und entwickeln mit diesem Wissen erste Clickdummies – also klickbare Oberflächen-Designs der Lösung. Unsere Solution Architects schauen sich hingegen die technische Seite an und konzipieren die Software-Architektur. Die initialen Arbeiten sind damit abgeschlossen, wobei wir unsere Kunden in den folgenden Projektphasen natürlich weiter „erforschen“.
Entwickeln umschreibt die agilen Prozesse, die notwendig sind, um das Produkt tatsächlich entstehen zu lassen – also das Coding, Testing und das UI-Design. Dabei arbeiten wir mit unseren Kunden im interdisziplinären Projektteam zusammen. Wir definieren also bspw. die speziellen Anforderungen für ein Feature, setzen diese in Code und UI um und testen das ganze gemeinsam. Unsere Softwareentwickler:innen arbeiten dabei nach den Prinzipien und Praktiken des Clean Code Developments. Das ist ein Wertesystem, das darauf ausgelegt ist, nachhaltigen Quellcode zu schreiben. Wir sprechen da auch von hoher innerer Softwarequalität: Je klarer und lesbarer der Code geschrieben und je höher die Testabdeckung ist, desto besser kann er zukünftig verändert, angepasst oder erweitert werden – und desto langlebiger ist das Softwareprodukt.
Das spielt uns schließlich auch beim Erhalten in die Karten. Hier dreht sich nämlich alles um den Betrieb und die Weiterentwicklung des Produkts. Speziell hier kommt unsere DevOps Arbeitsweise zum Tragen: wir verbinden die Disziplinen Development und Operations also. Und klar: je sauberer und modularer der Quellcode aufgebaut ist, desto schneller und günstiger sind auch neue Features implementiert.
Das ist für uns der goldene Weg der digitalen Produktentwicklung. Zumindest momentan. Man weiß schließlich nie, was morgen kommt.
Vielen Dank, Herr Betzin.