Zum Inhalt
Blog

Not just code. Software Engineering.

Georg Nozicka • 29. Januar 2020
Share

"Die Lösungen, die wir mithilfe unseres Technologiestacks programmieren, reichen von Microservices bis hin zu webbasierten always-online Lösungen und real-time Datenverarbeitungen. Wir tun mehr, als Code zu schreiben. Wir betreiben Software Engineering."

Bei twinformatics wird nicht programmiert. Wir betreiben Software Engineering.

Seit etwas mehr als einem Jahr leite ich die Abteilung für individuelle Anwendungsentwicklung der twinformatics. Unser Team ist für die Entwicklung zahlreicher Softwarelösungen für die Wiener Städtische Versicherung und die Donau Versicherung verantwortlich. Die Lösungen, die wir mithilfe eines definierten Technologiestacks programmieren, reichen von Microservices bis hin zu webbasierten always-online Lösungen und real-time Datenverarbeitungen. Doch das, was wir tun, ist mehr als „nur“ zu entwickeln, oder Code zu schreiben. Wir betreiben Software Engineering.

Software Engineering bedeutet, dass wir uns end-to-end mit dem gesamten Entwicklungsprozess beschäftigen, von der gemeinsamen Definition der Anforderungen mit unseren Kundinnen und Kunden über Design und Entwicklung bis hin zu Betrieb und Wartung. Das beinhaltet sowohl die organisatorischen und betrieblichen Abläufe als auch unterschiedliche Methodologien, Patterns, Tools, Frameworks, technische Prozesse, Analysetätigkeiten bis hin zu Kenntnissen mehrerer Programmiersprachen. Und natürlich die Fähigkeit, all das im Rahmen der täglichen Arbeit entsprechend einzusetzen - und letztendlich ausgezeichnete, stabile und betreibbare Software zu entwickeln, die sämtliche Bedürfnisse unserer Kundinnen und Kunden stillt. Im Folgenden gehe ich näher darauf ein, welche Prinzipien hinter Software Engineering stecken und wie sie uns in unserer täglichen Arbeit leiten.

Georg Nozicka
Georg Nozicka

Agile Practices & Principles

Unsere Kundinnen und Kunden erwarten von uns Software in der bestmöglichen Qualität. Gleichzeitig besteht unsere Herausforderung darin, mit sich stetig ändernden Anforderungen umzugehen und das, was wir entwickeln, so schnell wie möglich in Produktion zu bringen. Wie also können wir unsere Teams darin unterstützen, dieses Ziel zu erfüllen? Indem wir nach folgenden agilen Prinzipien arbeiten:

  • funktionierende Software häufig ausliefern
  • kleine Arbeitseinheiten
  • inkrementelle Releases
  • kleine, hochmotivierte Teams
  • Minimierung von Verschwendung
  • Management mit Vertrauen in die Skills unserer MitarbeiterInnen

Eine vermeintliche Herausforderung ist das Spannungsfeld zwischen Development und Operations:

  • Dev: reagiert schnell auf den sich ständig ändernden Markt
  • Ops: stellt stabile, zuverlässige und sichere Systeme zur Verfügung

 

Georg Nozicka und Mitarbeiter der twinformatics GmbH
Georg Nozicka und Mitarbeiter der twinformatics GmbH

Diese beiden auf den ersten Blick völlig gegensätzlichen Welten zusammenzuführen, ist unser aller Ziel - und für mich eine der zentralen Aufgaben in der Führungsarbeit.

What you do matters; why you do it matters more.
Jimmie Butler

Wir wollen schlagkräftige, cross-functional und agile Teams fördern, die sich nicht nur produktiv fühlen, sondern auch

  • unabhängig (voneinander) entwickeln und somit Wartezeiten bei wechselseitigen Abhängigkeiten minimal halten können
  • sich an self-service Plattformen bedienen können
  • gemeinsame Ops und InfoSec Erfahrung „(er)leben“ können
  • die Korrektheit ihrer Systeme in produktionsähnlichen Umgebungen validieren
  • ihren Code schnell, gefahrlos und sicher in Produktion deployen
  • end-to-end Verantwortung für die von ihnen entwickelten Services haben – bis hin zu Betrieb und Wartung
  • kontinuierlich neue Features zum Kunden bringen
  • funktionale sowie nicht-funktionale Anforderungen haben die gleiche Priorität und werden gleichermaßen von den Teams umgesetzt

 

Wir setzen auf eingespielte Langzeitteams, die sich mit jedem Sprint und jedem Deployment verbessern, um gemeinsam die gesetzten Ziele besser zu erreichen.

Georg Nozicka und Mitarbeiter der twinformatics GmbH
Georg Nozicka und Mitarbeiter der twinformatics GmbH

DevOps & Continuous Delivery

  • Deployments in Produktion sollen routinemäßig ablaufen und vorhersehbar sein und finden während der regulären Arbeitszeit statt. Unsere Anwenderinnen und Anwender nehmen sie nicht wahr – außer, es gibt neue Features oder Bugfixes.
  • Umfassendere Änderungen und/oder Funktionalitäten sollen routinemäßig in Form von „dark launches“ produktiv gestellt werden (können). Das bedeutet, dass neuer Code bereits vor dem offiziellen Termin für einen kleinen, definierten BenutzerInnenkreis live geht.
  • Anstelle wochenlanger und hektischer Vorbereitungen für ein Release wird neuer Code via Feature Toggle oder Konfigurationseinstellung zur Verfügung gestellt. Damit können wir Funktionalitäten unter realen Bedingungen testen und allenfalls nachkorrigieren, bevor sie allen zur Verfügung gestellt werden.
  • Sofern wider Erwarten ein Fehler auftritt, können wir entweder den neuen Code zurückrollen oder das Feature wieder deaktivieren. Dadurch werden neue Releases insgesamt kontrollierbarer, vorhersehbarer, umkehrbarer und stressfreier. Zeitnahe Identifikation von Fehlern erleichtert und verbilligt erforderliche Korrekturarbeiten.
The key to following the continuous delivery path is to continually question your own assumptions about what’s possible.
Jeff Sussna
  •  Unsere Teams entscheiden selbständig, ob ihr Code bereit für eine Abnahme und ein Produktionsdeployment ist. Voraussetzung dafür sind kurze Feedbackschleifen in jedem Schritt des Entwicklungsprozesses, flächendeckendes Monitoring und end-to-end Logging.
  • Sämtliche Änderungen im Source Version Control, die ausschließlich nach penibler Peer-Review committed werden, durchlaufen automatisierte Tests in produktionsähnlichen Umgebungen. Damit stellen wir sicher, dass Code und Umgebungen wie vorgesehen arbeiten und es zu jedem Zeitpunkt einen potenziell deploybaren Zustand gibt.
  • Durch automatisierte Tests, die jede Entwicklerin und jeder Entwickler selbständig erstellen, können wir Fehler jederzeit schnell erkennen und beheben. Mit jeder Korrektur erfolgt auch ein Lernprozess, der uns dazu befähigt, gleiche Probleme nicht zu wiederholen sowie ähnliche Herausforderungen direkt zu vermeiden.

No Blame Games!

Wir wollen keine „Kultur der Angst“, sondern eine Kultur des hohen Vertrauens und der Zusammenarbeit. Wir erkennen es an, wenn Mitarbeiterinnen und Mitarbeiter ein Risiko auf sich nehmen. Etwaige Probleme müssen offen und ohne Angst besprochen werden können, denn nur dann können wir sie gemeinsam erkennen und beheben.

Sofern doch einmal etwas schief läuft, führen wir gemeinsam entsprechende Analysen durch und zwar ohne Beschuldigungen. Dadurch verstehen wir besser, was passiert ist – und wie wir es in Zukunft vermeiden können.

Learning Culture

Unsere Mitarbeiterinnen und Mitarbeiter sollen ausreichend Zeit für ihre Fortbildung und Weiterentwicklung haben. Wir sorgen auch für viele Gelegenheiten, neue Technologien auszuprobieren und zu bewerten, ob diese bei uns eingesetzt werden können.

Wir evaluieren und testen laufend neue Tools, um gegebenenfalls unseren Technologiestack zu erweitern. Es gilt das Prinzip, dass für jede Problemlösung das richtige Tool zur Anwendung kommen soll.

Darüber hinaus halten wir immer wieder interne „Mini“-Technologiekonferenzen ab. Alle lernen – und alle lehren. Mit proaktivem Knowledge Transfer über alle Unternehmensbereiche hinweg sichern wir eine kontinuierliche Weiterentwicklung.

Um die Qualität noch weiter zu steigern, veranstalten wir nicht nur regelmäßig „Game Days“ (z.B. Hackathons), sondern auch sogenannte „D-Days“. Dabei handelt es sich um Phasen koordinierter und gezielter „Attacken“ auf produktionsnahe Systeme sowie bewusste Implementierung von ganz unterschiedlichen Fehlern in produktionsnahen Umgebungen. So können wir lernen, wie sich das System in solchen Fällen verhält und wie man solchen Fehlern bestmöglich entgegenwirkt.

Agile Journey - der Weg ist das Ziel

Unser aller gemeinsames Ziel ist, uns laufend weiterzuentwickeln und die genannten agilen Prinzipien, Praktiken und Mindsets in sämtlichen Bereichen unserer Organisation zu etablieren. „Luft nach oben“ werden wir dabei wohl auch in Zukunft stets haben, aber wir tragen alle unseren Teil bei, ein Maximum an Qualitätsorientierung für die Mitarbeiterinnen, Mitarbeiter, Kundinnen und Kunden zu verfolgen.

Fazit

Zeitgemäße, agile Anwendungsentwicklung ist schön am Papier. Aber noch viel schöner ist, wenn wir sie – wie bei twinformatics – täglich leben. Hier sind wir stolz darauf, nicht nur Code zu produzieren. Wir befassen uns mit dem gesamten Entwicklungsprozess, um innovative, stabile und betreibbare Software zu entwickeln und damit die hohen Ansprüche unserer Kundinnen und Kunden zu erfüllen.

Wir unterstützen unsere Mitarbeiterinnen und Mitarbeiter bei dieser Zielsetzung, indem wir uns nach Agile Practices & Principles richten, Hektik mit DevOps & Continous Delivery vermeiden, keine Blame Games spielen und eine Learning Culture pflegen. In diesem Sinne - wir sind vielleicht noch nicht ganz dort wo wir hin wollen, aber wir sind auf dem richtigen Weg. Und vor allem arbeiten wir jeden Tag daran, noch ein Stück besser zu werden. Luft nach oben? Das ist kein Problem sondern eine Challenge!

Über Mich

Georg Nozicka, technisch affiner Abteilungsleiter von Sales, Services & Customer, einer Abteilung der twinformatics, in der insbesondere individuelle Anwendungsentwicklung durchgeführt wird. Ich bin Programmierer seit 1979 mit ersten Gehversuchen in 8080 Assembler auf einem Olivetti Bürocomputer des Vaters und 6502 Assembler mit einem AIM 65. Meine Hobbies sind alles, was mit IT zu tun hat sowie natürlich die Familie und auch Kochen.

var disqus_config = function () { this.page.identifier = '88'; }; (function() { var d = document, s = d.createElement('script'); s.src = 'https://twinformatics.disqus.com/embed.js'; s.setAttribute('data-timestamp', +new Date()); (d.head || d.body).appendChild(s); })();
Zur Hauptnavigation