So arbeiten wir

Die erfolgreiche Durchführung von Projekten beginnt mit der Kultur in der Organisation und mit den Personen, die an den Projekten mitwirken. Wir sind davon überzeugt, dass Geschwindigkeit und Qualität direkt davon abhängig sind, wie gut die beteiligten Teams, Werkzeuge und die Infrastruktur aufeinander abgestimmt sind.


Kultur

COMsulting hat eine Kultur eingeführt, die an die Organisationsform “BizDevOps” angelehnt ist. Der Ansatz durchbricht die organisatorischen Grenzen zwischen Management, Entwicklung und Betrieb. Wir erreichen dies durch die unkomplizierte Zusammenarbeit selbstorganisierter Teams. BizDevOps beruht bei COMsulting auf folgenden Pfeilern:

Kultur

 

  • Die Entwickler übernehmen Verantwortung und sind auf Dauer einem Produkt bzw. Dienst verpflichtet. Sie kümmern sich nicht nur um die Umsetzung, sondern auch dauerhaft um Betrieb und Weiterentwicklung.
  • Gegenseitiges Vertrauen, kein “Wir-gegen-die”.
  • Stetiger Informationsfluss.
  • Lernbereitschaft. Fehler sind eine Chance zum Lernen.

Diese Anti-Silo-Kultur hilft, Missverständnisse zu vermeiden, und ist damit meist auch wirtschaftlicher. Darüber hinaus setzen wir stark auf Automatisierung, um die Zeit für den erhöhten Kommunikationsaufwand an anderer Stelle wieder einzusparen.

Automatisierung

  • Durch die Automatisierung vieler Arbeitsvorgänge werden kürzere Releasezyklen erreicht, die auch die Planung vereinfachen und das Risikomanagement verringern, da permanent nachjustiert werden kann.
  • Je größer das Projekt, desto höher der Automatisierungsgrad bei COMsulting.
  • Sofern sinnvoll, erstellen Software-Build-Jobs in Jenkins bei größeren Projekten automatisiert „Nightly“-Versionen und spielen sie automatisiert auf Entwicklungs- und Testumgebung ein.
  • Die Grundlage dafür ist eine gemeinsame Codebasis, in die alle Entwickler ihre Änderungen über eine Versionsverwaltung kontinuierlich integrieren. Wir arbeiten mit der verteilten Versionsverwaltung Git, über die unsere Entwickler jederzeit eine vollständige Kopie des Repositorys erhalten.

Sharing

  • Wir fördern die Bereitschaft der Mitarbeiter, Wissen miteinander zu teilen, voneinander zu lernen und Erkenntnisse zu verbreiten.
  • Ganz wichtig dabei ist, dass diese Bereitschaft auch über die unterschiedlichen Bereiche und Teams hinweg gepflegt wird. Instrumente dafür sind z.B. ein gemeinsam genutztes Wiki (Confluence) und wöchentliche Treffen mit einem Austausch zu ausgewählten Themen.

Lean

  • Wir verfolgen das Ziel, Prozesse schlank und leichtgewichtig zu halten.
  • Es gilt, Verschwendung zu vermeiden.
  • Die Anzahl parallel laufender Aktivitäten soll auf das Notwendige reduziert werden. Konzentration führt zu erhöhter Geschwindigkeit und zu mehr Qualität


Softwareentwicklung

Programmierregeln

Es gibt feste Coding-Standards die uns dabei helfen, eine Codebasis zu schaffen, in der sich jeder unserer Entwickler zurechtfindet. Dadurch wird die Zusammenarbeit in wechselnden Teams erleichtert. Der Code ist gut strukturiert und einfach zu lesen.

Qualitätssicherung

Jede bei uns geschriebene Codezeile wurde von mindestens vier Augen gesehen. Das garantieren unsere systematischen Code Reviews. Hat ein Entwickler im Team eine Anforderung umgesetzt, bittet er einen anderen Entwickler, sich diesen Codeteil anzusehen. Das Ziel dieses Vorgehens ist es, Fehler und Mängel im Code zu finden und die Qualität des Codes (und damit des ganzen Softwareprodukts) zu verbessern. Wir verstehen die Code-Reviews außerdem als eine gute Gelegenheit für ein Mentoring und ganz allgemein für die Pflege unserer Kultur (siehe oben).


Refactoring

Die von uns entwickelten Softwareprodukte haben in der Regel eine lange Lebensdauer. Damit der Code trotzdem modern bleibt und die Integration von Änderungen und Erweiterungen auch später noch wirtschaftlich möglich ist, arbeiten wir beim Refactoring nach der Pfadfinderregel, den Platz sauberer zu hinterlassen, als man ihn vorgefunden hat. Die Code-Verbesserung in kleinen Schritten führt langfristig zu besser strukturiertem und lesbarerem Code.

 

Automatisierte Tests

Je größer das Projekt, desto schwieriger wird es, das Gesamtsoftwaresystem auf einmal zu überschauen. Manuelle Tests sind in einem solchen komplexen System ungeeignet zur Sicherstellung von Qualität. Bei größeren Projekten arbeiten wir deshalb mit automatisierten Tests, die nach dem Einspielen einer Änderung sicherstellt, dass sie keine unerwünschten Auswirkungen auf andere Funktionen hat.