Feature-Kultur

Wir verbessern bei bobbie was wir tun und das jeden Tag!

Das hört sich nach einer Mission an?

Das ist es für uns auch. Wir sind angetreten, um den Baustoffhandel zu verändern, zu digitalisieren und transparenter zu machen. Dazu ist viel Softwareentwicklung nötig, da der Grundstein für die Digitalisierung der Prozesse quasi nicht vorhanden war, also haben wir es selbst in die Hand genommen!

Frontpage_Bild_Fu_r_Softwarepartner_wei__v1

Wie ist das möglich?

Wir hinterfragen regelmäßig, was wir tun, um es zu verbessern. Außerdem hinterfragen wir den aktuellen Standard in der Baubranche und wollen an dieser Stelle neue Standards setzen!

Unsere Entwicklung ist Teil des Teams, sie passiert intern. Wir arbeiten nicht mit externen Entwicklern, sondern unsere Entwickler sitzen in der gleichen Firma wie die Vertriebler und alle anderen bobbies, was es uns möglich macht, schnell zu agieren. Zudem kennen die Mitarbeiter, die Software bauen das Unternehmen dadurch so gut, dass sie die Anforderungen verstehen und Lösungen optimal entwickeln können!

bobbie hat ein Deploy System, welches jeden Tag das deployed, also installiert und konfiguriert, was wir tagsüber erarbeitet und getestet haben. 

Deployment =

Man versteht darunter die Prozesse zur Installation und Konfiguration von Software auf Computer oder Server. Dies kann halb- oder vollautomatisiert erfolgen. Kurz gesagt ist es die Bereitstellung von Software. 

Jeden Tag deployen, ist das nicht gefährlich?

Es gibt immer Risiken, diese Methode versteckt diese nur nicht. Ohne regelmäßige Tests und ein Team, das in der Lage ist, diese korrekt auszuführen und Fehler zu beheben, wäre das sehr gefährlich. 

Wir fahren automatische Tests, diese prüfen Dinge, die immer geprüft werden müssen.

Durch das tägliche Deployen sind die Teile der Software, die wir deployen, immer klein und damit die Änderungen besser nachvollziehbar. Wenn sich während der Tests herausstellt, dass ein Bug vorliegt, dann deployen wir nicht und alle bekommen das mit. Wir setzen hier das sogenannte Andon-System um, die berühmte Reißleine aus dem Lean Management. Wir greifen sofort ein, wenn es ein Problem gibt und lösen dies schnellstmöglich. Genau das ist möglich, weil wir kleine Teile deployen und ein internes Team haben. Hier schließt sich der Kreis. 

Braucht man ein besonderes System, um täglich zu deployen?

Durch Ansible und eine Konfigurationsmanagement-Plattform, erreichen wir Homogenität, was beim täglichen deployen hilft.  

In einem Versionsverwaltungssystem - GIT - wird jegliche entwickelte Software gesammelt und verwaltet. 

 

Wir arbeiten nach der CI/CD Praxis. CI steht für Continuous Integration, also kontinuierliche Integration und CD steht für Continuous Delivery, zu deutsch kontinuierliche Auslieferung bzw. Continuous Deployment, also kontinuierliche Bereitstellung.  

Kontinuierliche Entwicklung

Dazu benötigen wir GIT. 

Unsere Entwickler sind intern, wir bauen Features selber, priorisieren die aktuellsten Themen und es ist unsere Priorität Fehler schnell zu lösen. Unser System ist jede Woche besser als in der Woche davor.

Kontinuierliche Integration

Hierzu benötigen wir ebenfalls GIT und dazu auch CI/CD Pipelines. Diese Pipelines beschreiben die Prozesskette bzw. die Summe aller Aktivitäten, die von Code bis zum Betrieb dieser führen. 

Jedes neue Stück Software wird automatisch integriert. Fehlerfälle werden sofort an die Entwicklung gemeldet, die sich direkt darum kümmern und die Fehler beheben. 

Kontinuierliche Verteilung

Durch CD Pipelines erfolgt die Verteilung auf Systeme, darunter auch Test Systeme unterschiedlicher Stufen. 

Kontinuierliche Überwachung

Das sogenannte Monitoring. Wir monitoren Produktions- und Testsysteme, um alle ungeplanten Aktivitäten zu erfassen. Dies ermöglicht uns, Warnungen frühzeitig wahrzunehmen und Fehler schnell zu beheben! Es ist vergleichbar mit Frühwarnsystemen bei Katastrophen, nur dass wir diese Katastrophen im Testsystem provozieren.

Kontinuierliches Testen

Das funktioniert über ein Testverwaltungssystem und durch automatisiertes Ende-zu-Ende-Testen. 

Wir testen bei bobbie täglich, systematisch, automatisiert und explorativ. 

Was bedeutet systematisch? Das Systematische Testen ist das Testen von klar definierten Wegen, wie die Software benutzt oder werden soll, aber auch wie sie nicht benutzt werden soll und nein sagen muss.

Was bedeutet automatisiert? Bei automatisierten Tests, testen Systeme andere Systeme. Teilweise wie Anfragen von anderen Systemen, teilweise memen diese Systeme menschliches Verhalten nach, indem sie aus Testsystemen etwas bestellen.
Was bedeutet explorativ? Explorative Tests versuchen grundsätzlich herauszufinden, wie die Software tatsächlich funktioniert. Zudem stellen sie Fragen, wie sie mit schwierigen und einfachen Fällen umgehen kann. Die Qualität der Tests hängt maßgeblich davon ab, wie gut der Tester ist und von seiner Fähigkeit, Testfälle zu erfinden und Programmfehler zu identifizieren. 

Tests werden bei bobbie nach Use Cases der Entwicklung durchgeführt. Die Kombination der unterschiedlichen Testarten sorgt für Sicherheit.

Tägliches Testen, ist das nicht nervig?

Anfangs ja, definitiv! Aber man gewöhnt sich daran. Man entwickelt ein Bewusstsein dafür, dass man alles auf den Prüfstand stellen kann und sogar muss. Wir arbeiten natürlich auch immer daran, dass Testen effektiv ist und immer effizienter wird.

Wie geht ihr mit größeren Änderungen um?

Wichtig ist, die Dinge immer aus der Sicht der Stakeholder zu betrachten. Das sind in unserem Fall hauptsächlich die Kunden, Hersteller und alle bobbies!

Wir haben den Zusammenschluss der Betroffenen, planen grob die nächsten Schritte und setzen diese dann in agilen Teams um. Zudem holen wir uns agil Feedback, um schnell sowohl große, als auch kleine Verbesserungen zu erreichen. 

Unser Spirit ist: wir bobbies wollen, dass wir Tag für Tag besser werden und uns stetig weiter entwickeln!

Zudem leben wir eine offene Fehlerkultur. Wir machen alle Fehler und das ständig, das ist auch gut so, denn nur so können wir lernen. Wichtig ist dabei, dass wir denselben Fehler bzw. Fehlertypen nicht wiederholen. 

Bei uns wird jeder einbezogen, wir holen uns Feedback und Inhalte von allen Kollegen. Wir schenken dem Feedback stets Beachtung und evaluieren dies transparent, wir können frühzeitig bestimmen, wer die Stakeholder des Systems sind und können diese intern ansprechen. Die Grundsätze und Oberflächen jeder Abteilung sprechen wir in Teams durch, um hohe Akzeptanz und Verständnis füreinander zu entwickeln.

Hilft das eigene Team dabei, das Unternehmen sowie die Software zu entwickeln?

Geistiges Kapital wird im Unternehmen gehalten, wir gehen sehr bewusst mit dem Wissensmanagement um und pflegen eine Wissenskultur. 

Das Team intern zu haben hilft definitiv bei der Entwicklung, sonst könnten wir keinesfalls schnell genug reagieren oder schnell deployen. Wir müssen das fachliche und technische Wissen auf kurzen Wegen zusammenführen. Es ist wichtig, dass unser technisches Personal die fachlichen Aspekte und Herausforderungen lernt und versteht, und andersherum. Es ist essentiell, dass ein Verständnis in beide Richtungen herrscht. 

Kurz gesagt verstehen wir uns intern viel besser, als externe es jemals könnten! Wir lernen die Abteilungen kennen, verstehen was ihre Herausforderungen sind und arbeiten eng mit ihnen an den Lösungen. 

 

Wie gehen die anderen Abteilungen damit um?

Je länger man zusammen arbeitet, desto besser lernt man die anderen kennen und kann ihre Probleme und Wünsche immer besser verstehen und nachvollziehen. Trotz der unterschiedlichen Abteilungen, die im Kern sehr verschiedene Aufgaben haben, werden alle Themen teamübergreifend diskutiert und gelöst, auch wenn die Abteilungen sich zum Start nicht immer einig sind. Zielkonflikte können erst gar nicht entstehen, da es keine Trennung zwischen intern und extern gibt, wir sind alle bobbies!