de

Professional Voices

Q steht für Qualität

In diesem Artikel zeigen wir, wie wir durch Coding, Code-Reviews und Versionsupdates die Qualität unserer Software zur Kundenservice-Automatisierung gewährleisten.

Sophie Rodriguez FlechasAnton Schäfer

05. Oktober 2020 · 5 Minuten

Matthias Meisdrock, einer unserer CEOs, formulierte es folgendermaßen im Bosch-Podcast:

Unternehmen wie unseres heben sich von Konzernen ab, weil sie sich stärker auf Kernfunktionen konzentrieren können. Als Unternehmen arbeiten wir jeden Tag an der Verbesserung unserer Kernfunktionen, wodurch wir auch langfristig das beste Produkt der Branche haben werden.

Um das beste Produkt anzubieten, muss der Anspruch auf allen Ebenen an das Produkt gestellt werden. Dies bezieht auch das Qualitätsmanagement ein. Die Software soll möglichst fehlerfrei, stabil und zuverlässig sein.

Dieser Artikel basiert auf einem Podcast von Bosch, zu dem Matthias Meisdrock eingeladen wurde. Dort sprach er über hochwertige Quellcodes und präsentierte den Prozess, den das Entwicklerteam durchläuft, um die Einheitlichkeit und Qualität unserer Produkte zu gewährleisten. Wir vertreten die Meinung, dass es nicht nur wichtig ist, hohe Qualität zu bieten, sondern auch transparent darüber zu sein, wie wir das tun.

Entwurf des neuen Features

Wir starten mit dem Wesentlichen, der Grundlage jedes Produkts: den Features. Code-Qualität beginnt, sobald wir überlegen unserem Produkt ein neues Feature hinzuzufügen. Da wir wissen, dass es gewartet werden und einen Zweck in der Zukunft des Produkts erfüllen muss, darf es nicht nur eine schnelle Lösung oder ein einfaches Extra sein. Das könnte später Probleme schaffen, da mit jedem neuen Feature potentielle Fehler entstehen und die Software für den User komplizierter werden könnte.

Ein weiterer wichtiger Punkt, den wir in Erwägung ziehen, ist, ob genügend Kunden das neue Feature benötigen. Zusammenfassend sollte das Feature dabei helfen, sowohl den Bedürfnissen unserer Kunden als auch unserem Softwarekonzept gerecht zu werden, weil es nicht sinnvoll ist, etwas zu implementieren, was nicht in unsere Produktpalette passt.

Kundenzentrierte Herangehensweise

Um das neue Feature zu planen, sprechen wir mit unseren Kunden, damit wir verstehen, welche Probleme es gibt oder was sie erreichen wollen. Normalerweise tun wir das mit einem Kunden, der das neue Feature definitiv benötigt. Danach teilen wir die Ideen unseres Teams, diskutieren mit dem Kunden eine mögliche Lösung und finden den besten Weg, diese zu implementieren.

Schreiben des Codes

Wir sind fest davon überzeugt, dass die Produktqualität im Einsatz gesteigert wird, wenn man sich um jede Teilkomponente innerhalb der Software gründlich kümmert. Das Produkt ist besser und der Nutzen ist höher, genauso wie die Effizienz.

Diese Idee ist nicht neu in der Branche, da große Unternehmen wie Apple die gleiche Herangehensweise haben. Steve Jobs sagt in seiner Biografie, dass seine Detailtreue durch seinen Adoptivvater vermittelt wurde, der als Mechaniker darauf beharrte, alle Dinge richtig zu machen, selbst die nicht sichtbaren. Für uns bedeutet das, Features mit folgenden Pluspunkten zu gestalten:

  • einfach zu verwendende Software
  • effizientes Coding und Funktionalität
  • schnellere Implementierung von zukünftigen Features
  • leichtere Problemfindung
  • einfachere Problembehebung
  • unkomplizierte Funktionsänderungen

Nach Planung des Features beginnen wir, den Code zu schreiben. Dieser Prozess ist sauber und strukturiert, da jedem Feature ein eigener Abschnitt von Quellcode zugeordnet wird. Das heißt in unserem Fall, dass wir ein Ticket (Beschreibung des Features) anlegen und dies über das Versionsverwaltungssystem (Verwalten des Quellcodes) dem entsprechenden Quellcode zuweisen. Danach folgt der Reviewprozess, das Testing und die abschließende manuelle Qualitätskontrolle. Dieser Prozess ist klar definiert und deckt so frühzeitig den größten Teil möglicher Probleme auf.

Für uns ist guter Quellcode der Kern hoher Qualität. Aus unserer Sicht ist eines der wichtigsten Eigenschaften hierbei die Lesbarkeit. Unser CEO lernte dies sehr früh in seiner Karriere. Ein von ihm geschätzter CTO erklärte ihm, warum es so aufwändig ist, guten Quellcode zu schreiben und warum dieser kontinuierlich verbessert werden muss. Er erklärte ihm, dass ein Feature eigentlich dreimal geschrieben werden muss, um es funktional und sinnvoll zu programmieren:

  • Schreibe den Code, um das Problem zu verstehen.
  • Implementiere die Lösung.
  • Mache eine perfekte Implementierung.

Details spielen beim Schreiben von unserem Quellcode eine große Rolle. Wir schauen den Code gemeinsam als Team durch, um Fortschritte zu machen und voneinander zu lernen. Wir tun dies, weil es sich immer wieder bewiesen hat, dass wir durch den Austausch ein besseres Gefühl dafür bekommen, wie der Code geschrieben werden muss. Folgende Dinge werden dann zum Beispiel diskutiert:

  • Strukturierung
  • Benennung der Objekte
  • Trennung der Code-Formate voneinander
  • Benennung der Funktionen
  • Wie groß die Funktion ist
  • Wie viele if-blocks ineinander verwendet werden
  • Wie Loops gehandhabt werden
  • … etc.

Nach mehrmaliger Überprüfung fahren wir mit der Testphase fort.

Usability: Warum wird das Feature erstellt?

Für jede Funktion im Feature führen wir Komponenten- und Integrationstests durch, um sicherzugehen, dass keine zukünftigen Probleme auftauchen. Außerdem geht es hier darum, potentielle zukünftige Seiteneffekte zu verhindern.

Jedes Mal, wenn ein Code-Abschnitt gepusht wird, werden die eingebauten Tests ausgeführt. Die Ergebnisse sind auf dem Server für alle Entwickler zur Überprüfung verfügbar. Danach testen wir noch einmal manuell, um zu kontrollieren, ob die Funktion tut, was sie tun soll.

Sicherheitsrelevante Features und Bedenken hinsichtlich der Funktionalität werden in mehreren Iterationen in der Gruppe diskutiert.

Die Implementierung wird überarbeitet, bis das Feature von einem Reviewer akzeptiert wird. Dann werden in wöchentlichen Meetings die neuen Funktionen getestet und von der Gruppe bestätigt. Nach dem manuellen Testen kommt die Funktion in die Beta-Phase, in der sie bei einem ausgewählten Kunden erneut im Realbetrieb getestet wird.

Qualität: Wie gut funktioniert das Feature?

Während der Dauer des gesamten Projekts werden die Ergebnisse präsentiert und ständig mit dem Kunden zusammen analysiert. Wir erhalten so Feedback und können Verbesserungen durchführen. Wenn ein Feature nach dem Prozess nicht das gesetzte Ziel erfüllt, wird es wieder entfernt.

Von der Beta-Version zur Produktion

In der nächsten Phase bekommt der Kunde diese Funktion bereitgestellt. Die Beta-Version wird auf einen Staging-Server gespielt, wo ausgewählte Kunden mit ihr arbeiten und sie somit testen. Mit dieser Beta-Version erkennen und beheben wir Probleme, die vor einem Realbetrieb nicht aufgefallen sind.

Nach erfolgreichem Abschluss der Beta-Phase wird das Feature auf unseren produktiven Servern veröffentlicht, woraufhin wir die neue Version des Produkts ankündigen.

Wir veröffentlichen alle drei bis vier Monate neue Produktversionen. Bei akuten Problemen veröffentlichen wir kurzfristig Hotfixes.

Monitoring

Wir überwachen konstant Logfiles, in denen wir mögliche Unstimmigkeiten identifizieren. Potentielle Probleme evaluieren wir in wöchentlichen Meetings. Hierbei ist es wichtig, schnell zu reagieren und Verbesserungen zeitnah durchzuführen.

Hotfixes

Auftretende Fehler werden zuerst als Test reproduziert und dann im Quellcode korrigiert. Über das Korrigieren hinaus untersuchen wir wie es zu einem Fehler kommen konnte. So analysieren wir zum Beispiel, ob Quellcode falsch zusammengeführt wurde, die Dokumentation nicht eindeutig oder die Struktur so gestaltet war, dass der Reviewer das Problem nicht entdecken konnte. Oft sind Bugs die Folge von schlechter Code-Struktur, schlechter Architektur oder schlechtem Design.

Fazit

Es erfordert viel harte Arbeit und ein engagiertes Team, um die hohe Qualität jedes Produkts zu gewährleisten — unabhängig von der Wirtschaftsbranche. Softwareentwicklung ist in dem Punkt nicht anders: Wie man sehen kann, gibt es viele Detailreviews, Teamarbeit und konstantes Lernen.

Bei OMQ sehen wir uns dazu verpflichtet, die bestmögliche Qualität bei unserer Software für Kundenservice-Automatisierung zu bieten. Wir arbeiten mit höchster Gründlichkeit in jedem Schritt, um die Zukunft in dieser Branche aktiv zu gestalten und voranzubringen.

Falls Sie sich für eine Kundenservice-Lösung interessieren oder Fragen haben, können Sie uns jederzeit kontaktieren! :)