kotlin spring boot 7p

Kotlin meets Spring Boot – What’s in it for us?

Kotlin IS NOT ANDROID ONLY

Most of you might know Kotlin as a programming language designed for developing Android mobile applications. Since its first appearance in 2011, it has been challenging good old Java to a race for number 1 in the market. How big of a player it actually has become could be seen when Google announced that “the next big step that we’re taking is that we’re going Kotlin-first.” in May 2019.

Less famous is Kotlin’s use in backend applications. At SEVEN PRINCIPLES we took the opportunity to develop a new Spring Boot application and decided to give Kotlin a try. Read on for insights into features we loved about this symbiosis and issues we ran into. We will cover a brief compatibility check, data classes as DTOs, Kotlin’s null safety guarantees and the use of extension functions.


Spring BOOT THROUGH Kotlin GLASSES

Kotlin: Compatibility

Kotlin natively runs on the JVM. That’s great! Because it allows us to use practically any library written in Java. This also holds true for the Spring framework.

@SpringBootApplication
class CoreApplication

fun main(args: Array<String>) {
    runApplication<CoreApplication>(*args)
}

Have a look at the Controller implementation in our code example. There is everything that you might already know from Java backend programming. Dependency injection still works by annotation-based wiring of Spring components.

@RestController 
@RequestMapping("/api") 
class UserController(val userService: UserService) { 
    // List all users 
    @GetMapping("/users") 
    fun readAll(@RequestParam("search") keyword: String? = null): List<UserDto> { 
        return userService.findAllFilteredBy(keyword).map { it.mapToDto() } 
    } 
 
    @PutMapping("/user/{id}") 
    fun update(@RequestBody userDto: UserDto, @PathVariable("id", required = true) id: Long) { ... } 
}

Kotlin: Data Classes as DTOs

Data classes – as you have probably already guessed from their name – were designed for “holding data”. They ship with attribute accessors and come in handy for use as Data Transfer Objects (DTOs). DTOs should be kept free from business logic; they hide implementation details from the “world wild web” and prevent unintended manipulation of your application’s state. As you can see in our code example, that is exactly what data classes do. You can get rid of Java’s extensive getters and setters by simply declaring mutable “vars” and immutable “vals” in Kotlin’s primary class constructor. Slick, eh?

data class UserDto(
    val firstName: String?,
    val lastName: String,
    val dateOfBirth: Date?
)
@RestController
@RequestMapping("/api")
class UserController(val userService: UserService) {
    // List all users
    @GetMapping("/users")
    fun readAll(@RequestParam("search") keyword: String? = null): List<UserDto> { ... }

    @PutMapping("/user/{id}")
    fun update(@RequestBody userDto: UserDto, @PathVariable("id", required = true) id: Long) {
        val (firstName, lastName, dateOfBirth) = userDto
        val user = userService.findById(id) ?: throw RuntimeException("No user found for id $id.")

        userService.update(user, firstName, lastName)
    }
}

Small hint: Initialization of multiple variables at once with values from a data class instance makes use of “Destructuring components” and can really brighten up your day.


Kotlin: Null Safety

APIs have a huge source of uncertainty – namely the user. Whenever there is variable input into our application, input validation is needed. Kotlin has a great way of easing this task for us. As shown in the code snippet above, you must explicitly allow nullable values by denoting the corresponding variable type with a “?”. What happens if we try to send a request to our update method with an empty “lastName” attribute? It would be rejected with Http-Status “404 – Bad Request”. What happens if we try to call a function which expects a non-null value parameter with a nullable variable? The code will simply not compile. Bye bye, NullPointerExceptions! Attention should be paid when calling Java code. The Kotlin compiler uses assertions for this. But that does not prevent NPEs being thrown if the actual runtime object references a null value.

Do you like Rock ‘n’ Roll? Kotlin has it. Did you notice the “?:”-statement in the code example below? That is the so called “Elvis Operator”. It reads as “If A is null assign B”. We did happily use it for variable initialization and invoking exceptions as seen previously. When applied to a variable the Kotlin compiler automatically recognizes the corresponding value as non-null from then on.

@Service
class UserService(val userRepository: UserRepository) {
    fun findAllFilteredBy(keyword: String?): List<User> { ... }

    fun findById(id: Long): User? { ... }

    fun update(user: User, firstName: String?, lastName: String) {
        user.firstName = firstName ?: user.firstName
        user.lastName = lastName

        userRepository.save(user)
    }
}

Kotlin: Extension Functions

Extension functions allow augmenting the behavior of existing classes for which modifying the original class signature is not possible – as in the case of third-party libraries. If you tried to find an analogue in the Java world, they are basically member functions declared outside of the regular class definition. We have used extension functions for wrapping data from our business logic objects into the DTOs used for the transport layer of our application.

fun User.mapToDto(): UserDto {
    return UserDto(
        this.firstName,
        this.lastName,
        this.dateOfBirth
    )
}

Kotlin: Function Declaration

A word of warning: Without a mutual understanding for the application of extension functions their extensive use could lead to confusion; especially when collaborating in a larger team.

fun User.functionHiddenSomewhereOutOfScope(input: Any) {
    this.firstName = ""
    this.lastName = ""
}

Note how Kotlin allows different ways of function declaration in the code example below. Although this results in shorter code and better readability, without IDE support it is not always directly clear what the return value or purpose of the function is.

fun surpriseMe(input: Any) = input.prepareGift()

fun anythingIsAppreciated(input: Any): Any = input.prepareGift()

fun butILikeItExplicit(input: Any): Any {
    return input.prepareGift()
}

Kotlin: Conclusion

For the sake of brevity this article does not cover everything we delved into. All in all, we agreed that – after a time of adapting – writing Kotlin felt pretty natural and its syntax blends in neatly with Spring Boot. It simplifies many things that should have been simple from the start, but were not simple in Java, e.g. wrapping of objects and input validation. Not every feature that ships with Kotlin can yet be exploited in the context of Spring Boot. In our case, we ran into issues when it came to reactive programming and the implementation of JPA with Hibernate. If you feel tempted to gather more impressions, try the sources below for further reading.


Sources

https://kotlinlang.org/docs/tutorials/kotlin-for-py/extension-functionsproperties.html

https://kotlinlang.org/docs/reference/java-interop.html

https://kotlinlang.org/docs/reference/data-classes.html

https://kotlinlang.org/docs/reference/multi-declarations.html

http://techcrunch.com/2019/05/07/kotlin-is-now-googles-preferred-language-for-android-app-development/

agilie prinzipien

Die agilen Prinzipien im Überblick

Das agile Manifest wurde 2001 von 17 erfahrenen Softwareentwicklern formuliert und resultierte aus dem Bedürfnis zeitnah und greifbar den Kundenwünschen entsprechende Lösungen zu liefern. Um in der digitalen Wirtschaft erfolgreich zu sein, ist eine Anpassung der Arbeits- und Verhaltensweise an ein dynamisches Umfeld von großer Bedeutung.

Let Superheroes Improve Team Effectiveness

A guide to a Scrum Retrospective that is meant to improve team effectiveness by fostering psychological safety using a teams superpowers.

remote arbeiten

Remote und agil Arbeiten: Best Practices für die Homeoffice Zeit

Autoren: Jana Katherina Piller, Marcel Feige und Victoria Lorenz

Inhaltsverzeichnis

  1. Remote arbeiten war niemals wichtiger
  2. Egal ob Scrum, Kanban oder SAFe: Das sollten Sie bei remote Meetings immer beachten
  3. Unser Fazit: Remote Arbeiten

Remote arbeiten war niemals wichtiger

In Zeiten, in denen ganz Deutschland im Homeoffice arbeitet, ist das Thema “Remote Work” so populär wie nie. Doch schon vor der Krise hat sich ortsunabhängiges Arbeiten zum Trendthema der Zukunft entwickelt. Meetings mit Kollegen, Kunden und Geschäftspartnern werden virtuell über Video- und Telefonkonferenzen abgehalten, Arbeitsaufgaben werden komplett online erledigt und der Arbeitsort kann flexibel gewählt werden. Remote arbeiten birgt somit viele Potentiale.

Doch je mehr Teilnehmer sich in einem virtuellen Meetingraum befinden, desto komplexer und aufwendiger wird die Organisation. Aus diesem Grund sind die Basics für remote Zusammenarbeit von zentraler Bedeutung, wenn es um skaliert agiles Arbeiten geht.

Wir zeigen Ihnen die wichtigsten Tipps und Tools für effektive remote Meetings!

Egal ob Scrum, Kanban oder SAFe: Das sollten Sie bei remote Meetings immer beachten

Häufig merken wir, dass es an der ein oder anderen Stelle Verzögerungen oder Störungen gibt, wenn ein Meeting remote stattfindet. Um die Effizienz der Interaktion zu maximieren, ist es wichtig, dass jeder Teilnehmer grundlegende Regeln beachtet und gut vorbereitet ist.

6 grundlegende Tipps für eine effektive remote Zusammenarbeit:


Pünktlich sein: Am besten einige Minuten früher in die Meetings kommen, damit genügend Zeit ist, um sich einzurichten

Remote arbeiten Vorbereitung
Vor dem Start sicherstellen, dass keine technischen Schwierigkeiten bestehen

remote arbeiten Kamera an
Kamera einschalten (wenn technisch möglich), um die Zusammenarbeit und das Teamgefühl zu verbessern 

remote arbeiten Aufmerksamkeit
Aufmerksam sein: So sorgen Sie für ein produktives Meeting und vermitteln gegenseitigen Respekt

Remote arbeiten Mikro aus
Das Mikrofon auf Stumm schalten, wenn nicht geredet wird, um Hintergrundgeräusche zu vermeiden

remote arbeiten Pausen
Feste Pausen einplanen: Als Maßgabe gilt, alle 1,5 Stunden eine Pause von mindestens 15 Minuten zu integrieren

Darüber hinaus sind die richtige Vorbereitung und Organisation des Meetings von großer Bedeutung. Doch was genau ist dabei zu beachten?

Best Practices für die Vorbereitung & Organisation

Remote arbeiten war noch nie so wichtig. Besonders jetzt wird bei remote Meetings eine strukturierte Agenda benötogt.

Der Moderator des Online Meetings ist für eine strukturierte Abfolge zuständig. Um dies sicherzustellen, ist eine Agenda zu definieren. Dabei sollte der Moderator auf ein realistisches Timeboxing achten, Fokuspunkte für verschiedene Themen setzen und eingeplante Pausen sichtbar machen.

Schon in der Vorbereitungsphase ist es wichtig, den Ablauf und den Status Quo transparent abzubilden, damit auch Meeting-Teilnehmer sich entsprechend vorbereiten können und über deren Rolle im Meeting Bescheid wissen.

Bei größeren Meetings mit verschiedenen Teams ist es außerdem ratsam, einen Testlauf durchzuführen und einen Facilitator zu benennen, der sich mit den genutzten Tools auskennt. In diesem Schritt sollte auch sichergestellt werden, dass alle Mitglieder Zugriff auf die Tools haben und damit vertraut sind. Ist dies nicht der Fall, kann im Voraus eine kurze individuelle Einführung gemacht werden. Doch welche Tools können für die Kommunikation genutzt werden?

Die besten Tools für Ihre Kommunikation

Meist nutzt Ihr Unternehmen schon ein Tool für die interne und externe Kommunikation und Kollaboration (z.B. Skype for Business oder WebEx). Statt sich eine neue (häufig kostspielige) Konferenz- und Chat-Software anzuschaffen, sollte sich mit der Effizienz und Funktionalität der vorhandenen Tools auseinandergesetzt werden. Hat das Tool noch nicht alle benötigten Funktionen, können je nach individuellem Bedarf weitere Tools eingesetzt werden. Gerne stehen wir hierfür beratend zur Seite.

Ist die Vorbereitung abgeschlossen, können sich die Teilnehmer nun auf das bevorstehende Meeting freuen – denn sie wissen genau, was sie erwartet. Aber was gibt es während des Meetings zu beachten?

Best Practices für den Verlauf des remote Meetings

Um ein angenehmes Arbeitsklima zu erzeugen, sollte der Moderator die ersten Minuten des Meetings für Smalltalk einplanen. Dies gibt den Teilnehmern die Möglichkeit sich einzufinden und zu sortieren.

Sobald sich alle Teilnehmer im virtuellen Meetingraum befinden, kann das Meeting starten: Als Einstieg sollte der Moderator die Agenda kurz erläutern, sowie Zielsetzung und gewünschte Ergebnisse darlegen. Um das Timeboxing einzuhalten, helfen Tools mit Online Timer (z.B. Cuckoo).

Erfolgskriterien und Tools für ein produktives remote Meeting

Kamera an und Bildschirm teilen
Präsentiert ein Teilnehmer seine Arbeitsergebnisse, sollte dieser seinen Bildschirm teilen und die Kamera anschalten. So können die anderen Teilnehmer dem Präsentator besser folgen, sowie Gestik und Mimik nachvollziehen.

Fragerunde
Sind bestimmte Punkte unklar oder kommen während einer Präsentation Fragen auf, sollten diese im Chat oder am Ende der Präsentation gestellt werden. Vermeiden Sie Unterbrechungen, während ein Meeting-Mitglied seine Ergebnisse präsentiert.

Protokolle
Bei Retrospektiven moderiert und protokolliert der Moderator das Feedback und die Verbesserungsvorschläge des Teams. Hierfür gibt es verschiedene Tools, die insbesondere bei virtuellen Meetings eine große Hilfe sind (z.B. mentimeter, surveymonkey oder funretro).

Verbesserungsmaßnahmen
Alle im Meeting getroffenen Verbesserungsmaßnahmen und Entscheidungen sollten online dokumentiert und für alle Betroffenen per Link verfügbar gemacht werden. Dadurch werden Ergebnisse und nächste Schritte jederzeit sichtbar und nachvollziehbar.

Doch wie funktioniert eine Online-Dokumentation von Arbeitsergebnissen?

Reibungslose Dokumentation für Remote Meetings

Auch hierfür gibt es spezielle Tools, die Ihnen die Arbeit erleichtert und einer übersichtlichen und strukturierten Dokumentation von Arbeitsschritten und -ergebnissen dient. Hier ein kleiner Auszug gängiger Tools:

Unser Fazit: Remote Arbeiten

Ob Sie PI Plannings organisieren, Workshops durchführen oder Sprint-Meetings planen – bei einer remote Durchführung ist eine disziplinierte und organisierte Zusammenarbeit gefragt.

Es ist allerdings ganz normal, falls die ersten virtuellen Meetings noch nicht reibungslos verlaufen. Wenn Sie jedoch die grundlegenden Regeln befolgen, sich gut vorbereiten und die vorgestellten Tools zur Hilfe nehmen, werden Sie schnell einen gemeinsamen Erfolg feiern!

Bei Fragen zur Anwendung der passenden Tools oder allgemein zur remote Zusammenarbeit, kontaktieren Sie uns gerne!

Titelbild: © fizkes – stock.adobe.com
Blogfoto: © Konstantin Yuganov – Fotolia

Quellen: 
https://www.collaborationsuperpowers.com/covid19/
Best practices to run a successful distributed PI Planning Event! By Fayette Bosch und Anneleen Doornebal (BlinkLane Consulting 2020)
Remote Agile Events at Scale by Michael Küsters (2020)
https://www.scaledagileframework.com/distributed-pi-planning/

Agiles Mindset

Agiles Mindset: Die Grundlage einer agilen Arbeitsweise

Inhalte dieser Seite

DIE EINFLÜSSE DER DIGITALISIERUNG AUF IHR UNTERNEHMEN

Unsere Welt wird immer schnelllebiger, digitaler und komplexer. Um heutzutage und in Zukunft wettbewerbsfähig zu bleiben und am Markt zu bestehen, ist ein Umdenken notwendig: Statt starrer Strukturen und langfristiger Vorausplanung gewinnt eine flexible und schnelle Anpassung an Anforderungsänderungen an Bedeutung.

Um als Unternehmen die Herausforderungen der Digitalisierung zu meistern, ist eine schrittweise Veränderung in Richtung einer agilen Denk- und Arbeitsweise essenziell. Die Verankerung dieser Denkweise, des sogenannten „agilen Mindsets“ im gesamten Unternehmen, bildet die Grundlage für eine agile Transformation. Doch was bedeutet agiles Mindset überhaupt?

DIE DEFINITION DES AGILEN MINDSETS

Agilität steht für Beweglichkeit und das Mindset definiert die Einstellung des Denkens. Folglich kann ein Mensch, welcher ein agiles Mindset entwickelt hat, flexibel und schnell handeln und somit besser im Moment agieren, neueste Informationen evaluieren, diese ständig aktualisieren und in seine Entscheidungen mit einbeziehen. Besonders in einer digitalen Welt sind dies die Grundpfeiler für ein erfolgreiches Wirtschaften.

Doch wie kann man ein agiles Mindset entwickeln? Um dies zu verstehen, stellen wir Ihnen die agilen Werte vor – abgeleitet aus dem Agile Manifesto.

DIE VIER WERTE DES AGILEN MINDSETS

Entwickeln Sie das richtige Mindset

Die Basis für die vier Werte des agilen Mindsets bildet die richtige Einstellung. Wir bei SEVEN PRINCIPLES verstehen darunter Werte wie Mut, Offenheit, Selbstverantwortung und Menschenfokussierung. Erst wenn die vier Werte in der Unternehmenskultur verankert sind, können agile Prinzipien und Praktiken erfolgreich angewendet werden. Mit diesen vier Werten realisiert Ihr Unternehmen ein agiles Mindset:

1. Individuen und Interaktion stehen über Prozessen und Tools

Der Fokus dieses Leitsatzes liegt auf der direkten Kommunikation mit dem Kunden und zwischen den Teammitgliedern. Dabei geht es um den gemeinsamen -Zusammenarbeits- und regelmäßigen Reflexionsprozess. 

Das Team ist dafür verantwortlich, dass alle Fragen, Vorschläge und Ideen des Kunden beantwortet bzw. einbezogen werden. Der direkte Austausch im Team ist aufgrund der hohen Dynamik der Märkte und der stetig ändernden Kundenanforderungen wichtiger als ausgereifte und detaillierte Prozesse.

Dies steigert langfristig nicht nur die Produktivität, sondern sorgt auch für eine höhere Mitarbeitermotivation durch das WIR-Gefühl im Team. Doch wie wirkt sich das agile Mindset auf Ihre Dokumentation aus?

2. Funktionierende Software/Produkte stehen über umfangreicher Dokumentation

Diese Wertvorstellung des agilen Mindsets bedeutet nicht, dass die Dokumentation abgeschafft werden soll. Vielmehr sollte diese auf das Notwendigste reduziert werden. Die Qualität und Zufriedenstellung der Kunden sind demnach wichtiger als eine detaillierte Dokumentation des Projektes. Der Fokus liegt dabei auf einer kontinuierlichen Lieferung von Ergebnissen und schnellen, flexiblen Entscheidungswegen.

Das agile Mindset wirkt sich nicht nur positiv auf Ihr Team aus – auch die Bindung zu Ihrem Kunden wird optimiert.

3. Zusammenarbeit mit Kunden/Projektbetroffenen steht über Vertragsverhandlungen

Die Kundenanforderungen und -wünsche können sich während des Projektes verändern. Statt zu Beginn des Projektes starre Vertragsverhandlungen auszuarbeiten, wird der Kunde in der agilen Arbeitsweise während des gesamten Entwicklungsprozesses mit einbezogen. Diese Integration fördert den nachhaltigen Erfolg des Unternehmens, da Zeit und Ressourcen effizient genutzt werden und das finale Produkt genau den Geschäftsanforderungen des Kunden entspricht.

Ebenfalls liegt der Fokus nicht mehr auf langfristig festgelegten Plänen.

4. Reaktion auf Änderungen steht über dem Verfolgen eines festgelegten Plans 

Im klassischen Projektmanagement werden vor dem Start des Projektes ausführliche Pläne entwickelt, an die sich das Team während des gesamten Projektes hält. Das agile Mindset bildet die Grundlage, um im Team schnell und flexibel ändernde Kundenanforderungen zu adaptieren und besser auf Fehler reagieren zu können, statt sich an strikte Pläne zu halten. Dies wird durch kleine, selbstorganisierte Teams und kurze Iterationen erreicht.

Zu betonen ist allerdings, dass die rechte Seite der obenstehenden vier Werte auch wichtig und relevant ist. Die Bedeutung der linken Seite hat jedoch in einer agilen Organisation einen höheren Stellenwert.

Being Agile vs. Doing Agile: Was lernen wir daraus?

Aus unserer langjährigen Projekterfahrung haben wir gelernt, dass es einen Unterschied zwischen „agil sein“ und „agil handeln“ gibt. Denn agiles Arbeiten wird erfolgreich mit dem agilen Mindset -nicht mit der Einführung von Techniken.

Wer lediglich agil handelt, wendet die Praktiken an, ohne das agile Mindset verinnerlicht zu haben. Das bedeutet, dass die agilen Methoden wie beschrieben ausgeführt und erfüllt werden, jedoch ohne die Etablierung einer agilen Unternehmenskultur. Dies führt dazu, dass ein eigenverantwortliches und transparentes Arbeiten behindert wird.

Agil zu sein bedeutet hingegen, im ersten Schritt das Mindset und die damit verbundenen Werte und Prinzipien zu verinnerlichen. Erst danach ist es möglich, die Praktiken effektiv und situationsgerecht anzuwenden.

Sie möchten mehr erfahren über das agile Mindset oder sind an einer agilen Transformation interessiert? Wir freuen uns auf Ihre Kontaktaufnahme!

Titelbild: © SEVEN PRINCIPLES AG
GIF Rakete: © SEVEN PRINCIPLES AG
Foto 1: © bnenin – stock.adobe.com
Foto 2: © fizkes – stock.adobe.com

Quellenverzeichnis:

Magnolia – Das Headless CMS im Zusammenspiel mit Single Page Apps

Warum ein Headless CMS mit einer SPA kombinieren?

Im Zuge des Redesigns eines webbasierten responsiven Vendor Management-Systems bei unserem Kunden AviationStaffManagement (kurz ASM) bestand die Herausforderung, eine Online-Hilfe und andere Inhalte wie z.B. Informationen zu Ansprechpartnern in die Anwendung zu integrieren. Für die Inhaltserstellung sollten folgende Rahmenbedingungen beachtet werden:

  • Die Pflege der Inhalte soll von Mitarbeitern der ASM nutzerfreundlich über ein Web-Frontend möglich sein,
  • die Inhaltserstellung/-pflege soll separat von den öffentlich sichtbaren Inhalten erfolgen,
  • nach der Freigabe der Inhalte sollen diese in der Testumgebung der Anwendung sichtbar sein, um Integrationstests durchführen zu können,
  • nach der endgültigen Freigabe sollen die Inhalte auf einfache Art und Weise in das Live-System publizierbar sein.,
  • die Inhalte müssen mehrsprachig sein und für bestimmte Anwendungsrollen bzw. Mandanten im System (die aufgrund unterschiedlicher Funktionalitäten Anpassungen in den Hilfetexte erfordern) sollen separate Inhalte pflegbar sein,
  • die Inhalte der Online-Hilfe sollen unter Berücksichtigung der Anwendungsrolle und des Mandanten durchsuchbar sein.

Diese Rahmenbedingungen sprachen aufgrund ihrer Komplexität für den Einsatz eines Content Management Systems (CMS) und gegen die Erweiterung der Anwendung um eigene Funktionalitäten zur Pflege und Darstellung/Filterung dieser Inhalte.

Aus technischer Sicht waren folgende Fragestellungen zu beachten:

  • Layout des Inhalts innerhalb der Anwendung und Abruf der publizierten Inhalte aus dem CMS über eine API,
  • einfache Erweiterungsmöglichkeiten des Authentifizierungsverfahrens für die Ermittlung der personalisierten Inhalte im Hinblick auf die Nutzerspezifika (Anwendungsrolle, Mandant),
  • Möglichkeit einer Volltextsuche über die publizierten personalisierten Inhalte des CMS über die API sowie
  • einfache Integration des CMS in die bestehende Infrastruktur.

Wir entschieden uns für das CMS Magnolia, einem CMS auf Java-Basis, das browserbasiert läuft, den genannten Rahmenbedingungen gerecht wird und sowohl als klassisches CMS mit einem Frontend für die Darstellung der publizierten Inhalte, als auch als Headless CMS mit einer REST-API zum Zugriff auf den publizierten (unformatierten) Content eingesetzt werden kann.

ZARAS – Ein Vendor Management-System für die AviationStaffManagement

Unser Kunde AviationStaffManagement bietet einen Vendor Management Service, der unter anderem die Steuerung des gesamten Rekrutierungsprozesses von Zeitarbeitnehmern, die dazugehörige administrative Abwicklung, Support, sowie die Koordination der externen Lieferanten wie auch eine Lieferantenbewertung bietet. Mit tiefgreifenden und fundierten Branchenkenntnissen und dem Wissen über die Bedarfe der Kunden hat ASM in Zusammenarbeit mit uns ZARAS (Zeitarbeitnehmer-Rekrutierungs- und Administrations-Software) als eigene, innovative Softwarelösung entwickelt, mit der Prozesse optimiert und wirtschaftlich effizienter gestaltet werden können. So kann ASM die Qualität im Vendor Management sichern und allen Kundenanforderungen mit speziell darauf abgestimmten Leistungen und dem individuellen Einsatz geeigneter Produkte begegnen. ZARAS ist eine web- und workflowbasierende JavaEE-Applikation, die in diesem Jahr komplett neu als responsive Single Page App (SPA) unter Nutzung von Angular umgebaut wurde.

Magnolia – Das flexible Headless CMS

Magnolia unterstützt zahlreiche Standards wie JSR 168 oder JSR 170 für den Zugriff auf den Content. Hervorzuheben sind vor allem das Java Content Repository (JCR) bzw. JSR 170 und JSR 283, da diese Standards die Basis von Magnolia bilden. Magnolia ist nicht irgendein rudimentäres CMS, sondern setzt ganz auf etablierte Standards wie sie auch z.B. Adobe AEM verwendet.

Außerdem ermöglicht Magnolia durch den kompatiblen Technologie Stack (Java EE/JBoss).eine optimale Einbindung in den Kontext der ZARAS Applikation. Eine einfache Integration des CMS in die bereits bestehende Infrastruktur war somit gegeben.

Zu guter Letzt unterstützt Magnolia neben der Umsetzung von klassischem CMS die Realisierung von Projekten mit Headless CMS Architektur – also die Auslieferung der Inhalte über eine JSON API. Der Vorteil von Headless ist die Trennung von Content und Darstellung / Verwendung. Das CMS liefert den Content und verfügt über die für die Pflege benötigten Tools. Somit muss der Inhalt nur einmal gepflegt werden und kann für verschiedene Front-Ends verwendet werden.

Vorteile von Magnolia

Die hohe Zahl an Personalisierungsoptionen bei Magnolia war einer der Hauptgründe, weshalb wir uns für dieses CMS entschieden haben. Mehrsprachigkeit, gruppen-/rollenspezifischer Content, die Sicherheitseinstellungen, Stichwort- und Volltextsuche sowie Freigabeworkflow und Qualitätssicherung konnten komplett auf die Wünsche von ZARAS arrangiert werden.

Mehrsprachigkeit

Um dem Anwender eine optimale Nutzung zu ermöglichen, sollte das ZARAS Frontend in unterschiedlichen Sprachen vorliegen. Magnolia bietet durch seine Mehrsprachigkeit die Möglichkeit, Inhalte (Texte und Grafiken) in mehreren Sprachen bereitzustellen, zwischen denen während der Nutzung bequem gewechselt werden kann.

Gruppen- / Rollenspezifischer Content

Oft wird es als Herausforderung gesehen, Inhalte individuell nach User-Gruppen zu liefern. Mit Magnolia bietet sich die Möglichkeit, generische Inhalte durch gruppen-/rollenspezifische Inhalte zu ergänzen.

Für die Auslieferung werden der generische und der individuelle Content ermittelt und gemeinsam als JSON ausgeliefert. Zunächst wird ein Hilfetext für alle Anwender gepflegt. Einige Anwender jedoch sollen zusätzliche Informationen erhalten. Bei ZARAS liefert das CMS zuerst den allgemeinen Hilfetext, gegebenenfalls gefolgt von weiteren Texten entsprechend der Rolle. Dies bietet den Vorteil, dass sich die Inhalte nach Zielgruppe gestalten lassen. Das Frontend muss sich um diese Rollenthematik nicht mehr kümmern, wodurch hier weniger Zuarbeit benötigt wird.

Authentifizierung

Um eine möglichst hohe Sicherheit zu gewährleisten, dürfen CMS Daten nur von berechtigten Anwendern abrufbar sein, d.h. ohne Authentifizierung ist kein Zugriff möglich. Da das ZARAS Backend bereits mit JSON Web Tokens (JWT) arbeitet, wollten wir diese auch für die Zugriffssteuerung des CMS nutzen.

Zur Umsetzung dieses Authentifizierungsverfahrens haben wir einen eigenen Filter implementiert und in die Magnolia Filter Chain angehängt. Das Angular Frontend schickt bei jedem Request einen Authorization Header (JWT). Im Anschluss verifiziert und analysiert dieser Filter den JWT Token. Bei ungültigen oder fehlenden Tokens wird die weitere Contentauslieferung geblockt.

Stichwort- und Volltextsuche

Zusätzlich zur kontextsensitiven (routenabhängigen) Einblendung der Hilfetexten – die definierten Routen im Angular-Frontend spiegeln sich eins zu eins in der Seitenhierarchie im CMS wieder — soll der Anwender innerhalb von ZARAS kontextübergreifend Informationen zu fachlichen Fragestellungen — ein Lieferant möchte z.B. Informationen zum Thema „Vorschlag von Kandidaten“ — suchen können. Für die personalisierte Umsetzung mit Magnolia wurde im Frontend eine Stichwort- und Volltextsuche integriert.

Diese Suche haben wir mithilfe der in Magnolia enthaltenden JCR Query API implementiert, die vom Frontend nach der Eingabe der Anfrage aufgerufen wird. Das ermöglicht es, mit einer SQL ähnlichen Syntax den gesamten Content zu durchsuchen. Da die Einschränkung auf rollen- bzw. gruppenspezifische Inhalte nicht direkt in der JCR-Anfrage abgebildet werden kann, liefert diese zunächst die Basismenge von relevanten Inhalten, die anschließend nach den spezifischen Kriterien gefiltert wird. Dem Frontend wird das Ergebnis schließlich als JSON Response zur Verfügung gestellt.

Die Stichwort-/Volltextsuche wird innerhalb des Hilfe-Layers ausgeführt. In der Ergebnisliste werden die zur Anfrage relevanten Hilfethemen — mit einer kurzen Darstellung des Kontextes, in dem die gesuchten Stichwörter vorhanden sind — angezeigt. Von der Ergebnisliste kann dann wie gewohnt zu einem konkreten Hilfetext gesprungen werden

Freigabeworkflow zur Qualitätssicherung

Vor der Bereitstellung von neuen oder geänderten Inhalten für den Anwender ist eine Qualitätssicherung und Freigabe erforderlich, welche ebenfalls mit Magnolia erteilt werden kann.

Eine Magnolia Installation besteht aus jeweils mindestens einem Autor und einer Public Instanz. Die Autor Instanz ist für die Pflege und Qualitätssicherung zuständig. Entspricht der Content den Vorgaben, wird der Content (Texte und Assets, bspw. Bilder oder PDF Dateien) als Bestandteil des Freigabeworkflows auf die Public Instanz übertragen. Erst nach dieser Veröffentlichung bzw. Aktivierung sind die aktuellen Inhalte für alle Anwender verfügbar – natürlich unter Berücksichtigung entsprechender Authentifizierungen und Zugriffskonzepte. So konnte schlussendlich ein effektiver Workflow generiert werden, der den aktuellen Kundenanforderungen entsprach.

Optimale Lösung mit Magnolia

Warum sollte Magnolia als CMS integriert werden? Magnolia erlaubt es mit wenig Aufwand ein Java basiertes CMS aufzusetzen. Der Vorteil ist, dass man als Entwickler, bedingt durch saubere Architektur und umfangreiche Dokumentation, schnell mit dem System vertraut wird.

In allen Bereichen bleibt dem Entwickler ein hohes Maß an Flexibilität für projektspezifische Erweiterungen. So konnten wir für unseren Kunden ZARAS schlanke Templates zur Pflege und Verwaltung der Inhalte generieren. Die Mitarbeiter machten sich schnell mit der Bedienung vertraut und pflegten direkt produktive Inhalte ein.

Dank großem Funktionsumfang (Mehrsprachigkeit, Personalisierung usw.) und Erweiterbarkeit eignet sich Magnolia für eine Vielzahl von Projekten unterschiedlicher Größe. Im Fall von ZARAS hat neben klassischen CMS Funktionen vor allem die Unterstützung von Headless Architekturen überzeugt. Die Integration in die Infrastruktur ist sehr simpel, da das CMS als eigenständige Web-Applikation auf demselben Applikation-Server wie die eigentliche Anwendung betrieben kann. Der Betrieb des CMS als separater Mikroservice in einem eigenständiger Applikationsserver ist genauso einfach realisierbar.

Der Relaunch der ZARAS Applikation als Single Page Application auf Basis von Angular im Zusammenspiel mit Magnolia ist hier ein voller Erfolg.

Kontakt

Wie denken Sie über Magnolia? Mit welchem CMS arbeiten Sie in Ihrem Unternehmen? Oder nehmen Sie direkt Kontakt zu unserem Team auf. Wir freuen uns auf Sie: Kontaktformular

AGILE TRANSFORMATION – STARTEN SIE MIT UNS DURCH

Autoren: Niklas Kern, Marco Mücke, Alexander Axthelm, Hendrik Heine

Die 7 Erfolgskriterien für die agile Transformation

„Agile Transformation“ – an diesen zwei Worten kommen Unternehmen heutzutage kaum vorbei. Branchenübergreifend erfordert die anhaltende Digitalisierung eine zunehmende Anpassungs- und Reaktionsfähigkeit von Unternehmen. Speziell die hohe Dynamik der Märkte und die immerzu steigende Konkurrenz erhöhen den Druck. Zahlreiche Unternehmen stehen davor, sich für die Zukunft neu aufzustellen oder befinden sich schon inmitten der agilen Transformation.

Doch was bedeutet eigentlich „Agile Transformation“? Unter der agilen Transformation verstehen wir bei SEVEN PRINCIPLES und Scaled Innovation die Weiterentwicklung eines Unternehmens basierend auf agilen Werten und das Etablieren einer darauf aufbauenden Unternehmenskultur. Durch agile Arbeitsweisen haben Unternehmen die Chance, schneller auf sich ändernde Kundenwünsche zu reagieren, die Produktivität zu erhöhen und dadurch das „Time-to-Market“ zu reduzieren. Besonders im Vergleich zu klassisch agierenden Unternehmen entsteht damit ein deutlicher Wettbewerbsvorteil. Allerdings stellt die unternehmensweite Umstellung der Arbeitsweise Organisationen auch vor große Herausforderungen.

Die 7 Erfolgskriterien

Als beratende Experten für die Digitalisierung und agile Arbeitsweisen, liegt unser Schwerpunkt auf der Begleitung von Unternehmen jeder Größe durch die agile Transformation. Basierend auf unseren Praxiserfahrungen haben wir 7 Kriterien erarbeitet, die wir als essenziell für die erfolgreiche Umsetzung der agilen Transformation ansehen:

Die Veränderung muss in den Köpfen der Führungskräfte und der Mitarbeiter stattfinden. 1. Starke Führung, 2. Motivierte Vision, 3. Klares Zielbild, 4. Realistsische Erwarungshaltung und transparentes Vorgehen, 5. Einbindung der Interessenvertreter, 6. Ergebisorientierte und inkrementelle Arbeit, 7. Kontinuierliches Lernen und Verbessern
Die Veränderung muss in den Köpfen der Führungskräfte und der Mitarbeiter stattfinden.

1. Starke Führung

Für eine erfolgreiche Transformation muss der Wandel gelebt werden – von der Vorstands- bis zur Arbeitsebene. Dies beinhaltet ein klares Bekenntnis, konsequente Unterstützung, sowie das Vorleben der neuen, agilen Denk- und Arbeitsweise. Insbesondere das Management hat die zentrale Rolle als Führungskraft und Unterstützer des Wandels zu agieren, als Vorbild zu fungieren und die Teams sicher durch die agile Transformation zu manövrieren.

2. Motivierende Vision

Eine ganzheitliche und motivierende Vision vermittelt allen Mitarbeitern des Unternehmens eine klare Richtung für die Zukunft. Authentizität und Verständlichkeit der Vision sind dabei ebenso wichtig wie deren
transparente Kommunikation. Nur so kann ein glaubwürdiges “Wir-Gefühl” vermittelt werden und Begeisterung für die agile Transformation entstehen. Durch Schaffung dieser Grundlage ist es möglich, dass sich das “agile Mindset” im Unternehmen verbreitet, sodass die Vision umgesetzt werden kann.

3. Klares Zielbild

Aus der übergeordneten Vision des Unternehmens leitet sich das strategische Bild ab, das die zukünftigen Strukturen und Fähigkeiten des Unternehmens widerspiegelt. Darauf abgestimmt entsteht die Taktik, mit welcher die Vision realisiert werden soll. Es gilt ebenfalls zu bestimmen, welche Kompetenzen im Unternehmen vorhanden sein müssen. Wichtig ist eine unternehmensweite Kommunikation der Strategie sowie die regelmäßige Prüfung und Validierung der Ergebnisse im Verlauf der agilen Transformation.

4. Realistische Erwartungshaltung und transparentes Vorgehen

Der Wandel von alteingesessenen, klassischen Strukturen und Methoden hin zur agilen Organisation findet nicht innerhalb kürzester Zeit statt. Die Erwartungshaltung an die Umsetzungsgeschwindigkeit sollte sich an den vorhandenen Kapazitäten orientieren. Je weniger interne oder externe Kapazitäten zur Verfügung stehen, desto geduldiger muss die Umsetzung erfolgen. Die Qualität bestehender Produkte und Services sollte unter einer Transformation nicht leiden. Insbesondere sollte darauf geachtet werden, das Personal nicht übermäßig zu belasten. Daher ist basierend auf einer realistischen Erwartungshaltung ein transparentes Vorgehen notwendig. Ein strukturierter Ansatz unterstützt die agile Transformation. Dieser zeigt auf, wie Coachings, Trainings, Mitarbeiterentwicklung, Beratung, etc. in die Umsetzung integriert werden und verschafft einen transparenten Überblick über das Vorgehen.

5. Einbindung der Interessensvertreter

Alle zentralen Interessensvertreter (u.a. Betriebsrat, Personalentwicklung, Finanzen, Compliance, Kunden) müssen frühzeitig in den Transformationsprozess eingebunden werden, um diesen unterstützend zu begleiten. Die gemeinsame Bearbeitung übergreifender Themenbereiche wie agile Budgetierung, Controlling und Karrierepfade in der neuen Organisation, hilft, das Unternehmen neu auszurichten. Offene und konstruktive Debatten der Interessensvertreter sind der Schlüssel für eine erfolgreiche Umsetzung der Transformation und decken fortlaufend Verbesserungspotentiale auf.

6. Ergebnisorientierte und inkrementelle Arbeit

Ausgehend von einem gemeinsamen Zielbild müssen Etappenziele definiert und deren Erreichung nachgehalten werden. So gelingt es über alle Ebenen bis hin zum einzelnen Mitarbeiter sicherzustellen, dass gemeinsam auf die übergreifende Zielsetzung fokussiert hingearbeitet und die Vision unterstützt wird. Die Umsetzung erfolgt agil, durch inkrementelle Lieferung und Erfolgskontrolle. Die Reflektion der Teilergebnisse ermöglicht den Fortschritt regelmäßig zu überprüfen und zeitnahe Kurskorrekturen, frei nach einer agilen Arbeitsweise, vorzunehmen. Hierbei ist der Einsatz eines diagnostischen Tools hilfreich.

7. Kontinuierliches Lernen und Verbessern

Die Verankerung der agilen Verhaltens- und Denkweisen in der Unternehmens-DNA ist ausschlaggebend für den langfristigen Erfolg der agilen Transformation. Nur durch den Drang zur kontinuierlichen Verbesserung und der damit verbundenen Veränderung kann die Organisation Lösungen für noch unbekannte Probleme entwickeln. Feedback-Zyklen über alle Ebenen unterstützen systematisch erfolgreiche Vorgehensweisen zu identifizieren, zu teilen und Innovationen zu fördern.

Unsere Erfolgskriterien adressieren die Hauptherausforderungen in agilen Transformationen.  Quelle: CollabNet VersionOne, 13th annual state of agile report (2018)
Unsere Erfolgskriterien adressieren die Hauptherausforderungen in agilen Transformationen. Quelle: CollabNet VersionOne, 13th annual state of agile report (2018)

Agile Transformation bedeutet Veränderung

Die Transformation von klassischen hin zu agilen Arbeits- und Denkweisen stellt viele Unternehmen vor große Herausforderungen. Beachtet man jedoch einige Erfolgskriterien, können viele Hindernisse von Anfang an umgangen werden. Dabei sind diese Kriterien für Unternehmen jeder Größe und auf jeder Ebene innerhalb der Organisation gleichermaßen relevant. Besonders eine transparente Kommunikation, die Unterstützung auf allen Ebenen und der Wille zur kontinuierlichen Verbesserung, gepaart mit fortlaufenden Reviews, sehen wir bei SEVEN PRINCIPLES und Scaled Innovation als essenziell für eine erfolgreiche agile Transformation an. Wie denken Sie über die agilie Transformation und wie leben Sie diese in Ihrem Unternehmen?

Unser Expertenteam

Sie haben Fragen zum Thema “Agile Transformation”? Dann kontaktieren Sie uns. Unsere Experten stehen Ihnen gerne zur Verfügung.


Manuel Ruano
Head of Telecoms
manuel.ruano@7p-group.com
SEVEN PRINCIPLES AG


Alexander Axthelm
Managing Partner
alexander.axthelm@scaled-innovation.com
Scaled Innovation GmbH



Blockchain im Zusammenspiel Mit KI und Edge Computing

FUTURE TECHNOLOGIES IN ACTION @ 7P

Wie können wir den Zug der Zukunft noch praktischer und das Reisen noch angenehmer gestalten? Wie können wir die Sicherheit beim Reisen gewährleisten und dabei gleichzeitig die Richtlinien der DSGVO einhalten? Wird der Zug der Zukunft intelligent sein und Daten in Echtzeit verarbeiten können? Blockchain im Zusammenspiel mit KI und Edge Computing könnte eine Antwort auf diese Fragen sein. Als beratende Experten für innovative IT-Lösungen für die Digitalisierung beschäftigen wir uns bei SEVEN PRINCIPLES mit genau diesen und ähnlich komplexen Fragestellungen und Themen. Unser Use Case führt einen Schritt näher zum Bahnbetrieb der Zukunft. Doch wie sollen all diese neuen Technologien im Zusammenspiel einwandfrei funktionieren? Und welche Rolle spielt dabei die Blockchain?

DIE KOMPONENTEN

Blockchain sichert Nachvollziehbarkeit

In der Blockchain können wichtige Daten kryptografisch geschützt, fälschungssicher protokolliert und redundant gespeichert werden. Sicherheitsrelevante Informationen werden auditierbar vorgehalten und vor Manipulation geschützt. Prozessdaten sind über die verteilte Blockchain schnell an allen relevanten Stellen verfügbar, auch über Unternehmensgrenzen hinweg.

Künstliche Intelligenz (KI) erhöht Sicherheit

Daten sind über Sensoren und Datenspeicher der verschiedensten Prozesse meistens in ausreichendem Maß, häufig sogar im Übermaß vorhanden. KI hilft nicht nur bei der Auswertung und Nutzengewinnung. Sie verschafft häufig erst die Sicherheit in der Bewertung und das Vertrauen in die abgeleiteten Ergebnisse und Regeln, die für eine erfolgreiche Anwendung benötigt werden. Und mit den richtigen Daten lässt sich die Technik so verfeinern, dass eine KI in der Lage ist, gefährliche Situationen eigenständig zu identifizieren und zu melden.

Edge Computing vereinfacht Datenschutz

Edge Computing bringt die erforderliche Rechenleistung zu den Daten, datenschutzrelevante Vorgänge wie Übertragung oder Speicherung können so minimiert oder ganz vermieden werden. Weitergegeben werden nur noch aufbereitete Ergebnisse oder (Warn-) Signale – auf die Informationsverarbeitung bezogen ist das Datenschutz by Design.

Architektur des SEVEN PRINCIPLES Showcase Network, Blockchain im Zusammenspiel mit KI und Edge Computing
Architektur des SEVEN PRINCIPLES Showcase Network, Blockchain im Zusammenspiel mit KI und Edge Computing

ANGENEHMES UND SICHERES REISEN

Sitzplätze per App identifizieren

Bereits heute erfassen Kameras das Geschehen in Zügen und spielen somit eine entscheidende Rolle, wenn es um sicherheitsrelevante Themen geht. Der SEVEN PRINCIPLES Use Case zeigt, dass die Kombination aus Edge Computing, Kameras und KI (Computer Vision, Tensorflow) eine Objekterkennung von Personen oder Gegenständen ermöglicht. In Kombination mit Umgebungssensoren lässt sich die Technik so verfeinern, dass die KI in der Lage ist, gefährliche Situationen eigenständig zu identifizieren und zu melden. Solche Situationen können einem Zugbegleiter angezeigt und bei wirklicher Gefahr zusammen mit den Metadaten auf einer Blockchain fälschungssicher persistiert werden. Natürlich sollte der Zug der Zukunft – die Sicherheit vorausgesetzt – auch praktisch und angenehm für die Reisenden sein.

Wäre es nicht schön, wenn die aktuelle Anzahl der freien (und belegten) Sitztplätze ermittelt und grafisch angezeigt würde? Die Verarbeitung dieser Daten wäre in Echtzeit möglich, und für die Validierung der Ergebnisse könnten Funk und WLAN herangezogen werden. Für ein optimiertes Ergebnis würden zusätzlich Sitzplatzreservierungen und Belegungsprognosen einbezogen werden. Reisende könnten sich freie Plätze anzeigen lassen und diese reservieren, sowohl am Bahnsteig, als auch im Zug selbst, und das ganz einfach über eine Anzeige bzw. über eine App.

Reisen ohne Stress dank Blockchain

Wir geben Ihnen ein Beispiel: Stellen Sie sich vor, Sie stehen am Bahnsteig. Es ist Feierabendverkehr und Sie wissen, dass der Zug sehr ausgelastet sein wird. Plötzlich weist Ihr Handy Sie darauf hin, dass der ICE Sprinter von Frankfurt nach Köln einfährt und die Wagons 3 bis 5 bereits belegt sind, sich jedoch ausreichend Plätze in den Wagons 6 bis 9 befinden. Es wäre nun ein Leichtes für Sie, sich am Bahnsteig richtig zu positionieren und sofort ohne große Umwege einen freien Sitzplatz zu finden. Sollte der Zug vollkommen überfüllt sein, bestände darüberhinaus die Möglichkeit, Ihnen alternative Züge oder sogar Verkehrsmittel
vorzuschlagen. – Reisen ohne Stress.

Angenehme Temperaturen

Zum angenehmen Reisen gehört nicht nur ein gemütlicher Sitzplatz, auch die Temperatur, der Luftdruck und die Luftfeuchtigkeit sollten stimmen, um besonders lange Fahrten – auch in Rekordsommern – angenehm und komfortabel zu gestalten. Umgebungssensoren in den Wagons könnten den Zugbegleiter informieren, sobald ein festgelegter Wert über- oder unterschritten wird, damit er entsprechende Maßnahmen einleiten kann.

Der Usecase verdeutlicht, dass die Verbindung der Komponenten Blockchain, KI und Edge Compting die Bahn-IT revolutionieren und das System Bahn im Hinblick auf die Digitalisierung deutlich voran bringen könnte.

DIE TECHNIK HINTER DER IT LÖSUNG

Klingen die beschriebenen Szenarien genau so verlockend für Sie wie für uns? Die SEVEN PRINCIPLES Blockchain-, KI- und Edge Computing-Experten haben die nötige Grundlage für diese kosteneffiziente und effektive IoT-Lösung entwickelt. Für den Datenaustausch zwischen den Zügen, den Eisenbahnverkehrsunternehmen und dem Benutzer wird im Showcase eine Blockchain-/Distributed Ledger-Lösung auf Basis des Hashgraph-/ Babble-Konsensalgorithmus angebunden. Somit wäre neben der Übertragung in Echtzeit, der erhöhten Sicherheit und der Einhaltung der DSGVO eine höhere Toleranz gegen Netzwerk- bzw. Kommunikationsabbrüche bei gleichzeitiger Auditierbarkeit möglich. Aufgrund dieser Eigenschaften bietet sich diese Lösung auch als Basis für andere Zug-ITSysteme an, z.B. zur Ticket-Kontrolle. Besonders sicherheitskritische Informationen wie Bauteil- Wartungszyklen könnten transparent kommuniziert und dauerhaft fälschungssicher abgespeichert werden. Und das dank Blockchain.

FAZIT

Die Verbindung von Blockchain, KI und Edge Computing würde den Bahnbetrieb, wie wir ihn heute kennen, revolutionieren. Das Reisen würde sicherer und komfortabler, Züge würden intelligenter werden und Informationsverarbeitung fände in Echtzeit statt. Der Datenschutz der Passagiere wäre zu jedem Zeitpunkt des Prozesses sichergestellt. Wie stellen Sie sich den Zug der Zukunft vor? Würden Sie sich so einen Zug wünschen? Wir freuen uns über Ihre Meinung in unserem Kommentarfeld.

Oder nehmen Sie direkt Kontakt zu unserem Blockchain-, KI- und Edge-Computing-Expertenteam auf:
https://www.7p-group.com/kontakt-3/

Entwickler & Designer – Tipps für interdisziplinäre Zusammenarbeit

Innerhalb Softwareentwicklungsteams ist die Beziehung zwischen der Entwicklung und dem Design eine ganz besondere. Beide können nicht ohne einander funktionieren – die erfolgreiche Arbeit des anderen ist für ihr eigenes Werk essentiell. Arbeiten (UX/UI-)Designer und Programmierer eng zusammen, kann es so natürlich auch schnell zu Reibungen kommen, und das kann das gemeinsame Projekt gefährden. Das Zauberwort, um diese Probleme zu lösen, lautet interdisziplinäre Zusammenarbeit. Doch fangen wir erst mal von vorne an:

 

Ein Beispiel aus einem interdisziplinären Projekt, bedingt durch mangelnde Absprache:

Designer A ist stolz auf seinen kreativen Output und beharrt auf seinen gestalterischen Vorgaben, die er auch so im fertigen Produkt wiederfinden möchte. Entwickler B sieht in diesen Vorgaben allerdings zuerst einmal die mangelnde Umsetzbarkeit. Diese Beschränkungen wiederum waren Designer A nicht bekannt, und er meint, dass Entwickler B ihn davon hätte in Kenntnis setzen müssen. Entwickler B hingegen hält diese für selbstverständlich.

Wer im Endeffekt Recht hat, ist für das Projekt völlig irrelevant. Sicher ist nur, dass es einen Schaden davonträgt.

 

Diskrepanzen dieser Art kommen zwischen Developern und Designern leider recht häufig vor.

Aus diesem Grund widmet sich dieser Artikel einer Annäherung der zwei Disziplinen, um diese unwahrscheinlich wichtige Beziehung ein Stück weit zu verbessern.

 

Interdisziplinäre Kollaboration bei SEVEN PRINCIPLES

SEVEN PRINCIPLES arbeitet agil. Ein Kerngedanke dieses Arbeitsmodells: die interdisziplinäre Zusammenarbeit.

Bei 7P arbeiten wir mit vielen Kollegen aus unterschiedlichen Fachbereichen zusammen, die auch jederzeit bereit sind, mit ihrer Expertise einem anderen Kollegen zu helfen – sei es durch aktive Mitarbeit oder einfach durch einen Rat bei einem besonders schwerwiegenden Problem.

 

Bei der Softwareentwicklung kann das zum Beispiel so aussehen: Der Designer hat eine konzeptionelle Idee im Kopf und würde sie gerne testen. So sucht er sich zwei Entwickler innerhalb seines Projektteams und setzt sich mit ihnen ein paar Stunden zusammen, um einen benutzbaren Prototypen für seine Idee zu bauen. Wenn dieser dann die erhofften Ergebnisse bringt, ist das großartig. Wenn nicht, ist man zumindest um die Erkenntnis reicher, wie es nicht geht.

Eine gute Möglichkeit zum interdisziplinären Austausch können auch regelmäßige, offene Fachgruppenmeetings sein. Man kann hier sein Problem einigen Kollegen vorstellen, die mit einem ganz anderen Auge draufschauen und möglicherweise Lösungsansätze finden, auf die man selbst gar nicht kommen würde.

 

Ein echtes Fachgruppenmeeting sieht natürlich weniger nach einem Stockfoto aus, doch kommt der interdisziplinäre Zusammenarbeit sehr nahe.

 

Rollenverteilung im agilen Kontext

Die interdisziplinäre Zusammenarbeit ist bei uns essentieller Bestandteil aller Projekte. Kommunikation, Kollaboration und Ideenaustausch sind allerdings auch immer eine Herausforderung, wenn unterschiedliche Disziplinen aufeinandertreffen.

 

Wie sehen die möglichen Probleme nun aus? Und vor allem: Wie kann man sie vermeiden?

 

Wollen Designer und Entwickler erfolgreich zusammenarbeiten, müssen sie sich entgegenkommen. Jedem Mitarbeiter muss daran gelegen sein, die Arbeit seines Kollegen so leicht wie möglich zu machen und nicht zu behindern. Eben so, wie man es sich andersherum auch wünschen würde.

Dabei ist die althergebrachte Aufteilung aus dem Wasserfallmodell „erstens Design, zweitens Entwicklung“ bei einer agilen, adaptiven Arbeitsweise nicht mehr sinnvoll. Zwar bedarf es häufig einiger früher Designentscheidungen, um die Entwicklung voranzutreiben, der Designer sollte zur Optimierung seiner Arbeit aber weiterhin ins fortlaufende Projekt involviert sein.

 

Ein möglicher Lösungsweg: Vor der Umsetzung startet der Designer mit der Erstellung einer generellen „Experience“ (Flowchart, Navigationsstruktur, etc.). Die detaillierte, pixelgenaue Designarbeit wird daraufhin immer einen Sprint vor der Implementierung durch den Entwickler erstellt. Es wird also immer das designt, was im nächsten Sprint entwickelt werden soll. So ist zum einen eine Struktur und zum anderen die langfristige Verfügbarkeit des Designers für das Projekt gewährleistet, falls nachträglich Änderungen vollzogen werden müssen.

 

Wie auch immer man bei der Zusammenarbeit nun vorgeht: Bei alldem ist jederzeit ein gemeinsamer Informationsstand zu gewährleisten. Wenn alle Teammitglieder auf dem gleichen Wissensstand sind, können sie am besten voneinander profitieren.

 

Spielregeln für eine erfolgreiche interdisziplinäre Zusammenarbeit

Einer der ersten Fehler, die man in einem interdisziplinären Team machen kann, ist nicht früh genug zu kommunizieren.

Wer eng im Team zusammenarbeitet, muss einen gemeinsamen Weg finden. Deshalb sollte zu Beginn jedes Projekts eine Erwartungshaltung definiert werden. Strukturen und Prozesse sollten zudem aufeinander abgestimmt werden. Will man zum Beispiel inkrementell arbeiten oder fühlt man sich mit etwas mehr Vorarbeit wohler?

Des Weiteren sollte Klarheit über die Vorgehensweise beider Seiten herrschen und ein gemeinsamer Standard festgelegt werden.

  • Für welche Screengrößen braucht der Entwickler Designs?
  • Weiß der Designer, wie zum Beispiel Layout Constraints funktionieren?
  • Wurde über das Wording gesprochen?
  • Wie sieht es mit Margins, Paddings, Grids aus?
  • Wie sollen dynamische UI-Elemente agieren?
  • Wurde der Userflow von beiden Seiten durchdacht?

Wenn diese Dinge vorher geklärt wurden, spart man sich nachher viel Zeit und Mühe.

 

Einen großen Schritt in Richtung beiderseitigem Entgegenkommen kann der Designer mit einem einfachen Grundsatz machen: Genauigkeit. Bezüglich der User Experience heißt das beispielsweise, dass der Userflow lückenlos und ohne Sackgassen funktionieren sollte, um den Entwickler nicht mit offenen Fragen zurückzulassen. Beim User Interface Design ist damit die Pixelgenauigkeit gemeint, die Fehlinterpretationen bei der Implementierung so weit wie möglich einschränkt.

Regelmäßige „Pair Programming“-Sessions zwischen Programmierer und Designer können dabei letzte Zweifel beseitigen: Der Entwicklungsfortschritt wird regelmäßig gemeinsam begutachtet und eventuelle Designabweichungen werden direkt korrigiert. Dabei lernt man voneinander, und der Programmierer entwickelt so selbst ein Verständnis für Visualität und Gestaltung, während der Designer mit den Herausforderungen der Umsetzung konfrontiert wird.

 

Interdisziplinäre Zusammenarbeit - Pair Programmer

Zwei erfahrene Pair Programmer.

 

Umgang mit Kritik

Ein essentieller Bestandteil für gute interdisziplinäre und agile Zusammenarbeit ist erfahrungsgemäß eine funktionierende Feedbackkultur. Gerade beim Thema Design kann sowohl eine falsche Abgabe als auch Annahme von Kritik zu erheblichen Irritationen führen.

So sollte man sich immer bewusst sein, dass Design von Nicht-Designern immer leicht zu kritisieren ist, weil es greifbarer als z.B. Code ist. Zu einem Interface kann grundsätzlich jeder sagen, ob es ihn anspricht oder nicht. Designkritik (so wie das Design selbst) ist in den meisten Fällen subjektiv. Als Designer muss man lernen, andere Meinungen zu akzeptieren und daraus keinen Frust entstehen zu lassen.

Als Entwickler hingegen sollte man versuchen, in seiner Ansprache sachlich und respektvoll aufzutreten und seine Meinung auch immer zu begründen. Aussagen wie „Ich mag die Farbe von dem Element nicht, keine Ahnung wieso“ bieten dem Designer keine konkreten Anhaltspunkte, um etwas zu verbessern.

Bei besonders hartnäckigen Debatten kann es außerdem helfen, die Teamkollegen hinzuziehen. Oftmals ist hier ein Kompromiss die sinnvollste Lösung.

 

Was kann man noch tun?

Einen grundsätzlichen Gedanken kann man bei allen aufgelisteten Punkten wiederfinden: Designer und Entwickler müssen versuchen, sich in ihr Gegenüber hineinzuversetzen.

 

Zum Abschluss noch ein Tipp dazu: Generell kann jeder Designer in hohem Maße davon profitieren, wenn er (mit Hilfe eines Developers) einfach mal selber etwas programmiert, zum Beispiel eine Mobile App in Android Studio oder Xcode. Erst beim Selbermachen wird die Arbeitsweise von Entwicklern so richtig verstanden. Genauso kann der Entwickler einiges lernen, wenn er dem Designer beim Bauen eines Interfaces mit dem Grafiktool seiner Wahl über die Schulter schaut oder – noch viel besser – es selbst einmal versucht.

 

Die Möglichkeiten sind da, um Kenntnisse aus der anderen Disziplin zu erlangen. Also nutzen wir sie doch einfach auch!

Interdisziplinäre Zusammenarbeit - Am besten versetzt man sich in den Kollegen hinein

 

Kontakt

Wie sind Ihre Erfahrungen zu diesem Thema? Wir freuen uns über Ihre Kommentare.

Weitere Information zu unserem AMR Team finden Sie hier auf unserer Seite:
https://www.7p-group.com/leistungen/application-development-management/

Oder nehmen Sie direkt Kontakt zu unserem Team auf:
https://www.7p-group.com/kontakt-3/

 

Aus einer Codebasis werden für iOS und Android Apps erstellt

Cross Platform App-Entwicklung – Spektrum und kritische Auseinandersetzung

Wenn sich ein Unternehmen entscheidet eine neue App zu entwickeln, wird in erster Linie an die native Entwicklung in Objective C oder Swift für Apple-Geräte und Java oder Kotlin für Android-Geräte gedacht. Eine Alternative ist die Cross Platform Entwicklung, welche sich für besondere UseCases gut eignet.

Zum Beispiel möchte ein Startup-Unternehmen mit einem MVP schnell und kostengünstig an den Markt, um das Potenzial der neuen Idee praktisch auszuprobieren und ggf. Investoren finden. Um den „Time-to-Market“ klein zu halten könnten Cross Platform Frameworks verwendet werden.

Im Folgenden werden verschiedene Cross Platform Frameworks für iOS und Android miteinander verglichen und die Vor- und Nachteile beschrieben. Die Liste ist nicht vollständig, da es sehr viele verschiedene Anbieter in diesem Bereich gibt. Die gängigsten und populärsten Anbieter sind nach Ansicht des Autors enthalten.

Unterschied native Entwicklung gegenüber Cross Platform / Hybrid

Apps, welche nativ entwickelt werden, werden in Swift / Objective C und in Java / Kotlin entwickelt. Pro Betriebssystem muss die ganze Businesslogik, UI und Datenhaltung in separatem Code erstellt und gepflegt werden. Dieses erfordert oftmals verschiedene Entwickler mit dem jeweiligen Fokus auf ihren Plattformen, wenn eine App für die zwei wichtigsten Betriebssysteme veröffentlich werden soll.

Bei der Cross Platform Entwicklung soll eine Codebasis für verschiedene Betriebssysteme/Plattformen diesen Umstand ändern.

Die Cross Platform Entwicklung wird im Folgenden nochmals unterteilt.

  • Webseite in einer Webview (Hybrid) mittels Webtechnologien
  • Frameworks welche native UI-Elemente verwenden
  • Frameworks welche eigenen Renderer verwenden

Besonderheiten für alle Frameworks

  • Um auf native Schnittstellen der Betriebssysteme zuzugreifen, beispielsweise Bluetooth, NFC und Push-Nachrichten, benötigen alle Frameworks eine Verbindung zum Betriebssystem.
    Diese Brücken können über Dritt-Entwickler-Plugins eingebunden oder selbst erstellt werden.
  • Wenn betriebssystemspezifische UI-Designprinzipien pro Plattform verwendet werden, wird immer zusätzliche Komplexität ins Projekt gebracht, da unterschieden werden muss, auf welcher Plattform die App sich gerade befindet.
  • Wenn eine UI für beide Betriebssysteme angewendet wird, sollte ein betriebssystemunabhängiges Design gewählt werden, da sich Benutzer ungerne Designprinzipien anderer Plattformen aufzwängen lassen.

Hybride Apps

Native Apps konnten direkt ab ca. 2010 Internetseiten mittels eines internen Browsers Webseiten darstellen.

Diese Funktion wurde direkt benutzt um Apps mit Hilfe von HTML, CSS und Javascript zu erstellen. Im Folgenden werden die meist verwendeten Frameworks benannt um einen Container für diese Webseiten zur Verfügung zu stellen.

Cordova

Das Open-Source-Framework Cordova von Apache hilft bei der Erstellung von hybriden Apps. Es stellt einen Container zur Verfügung, welche Verbindungen zum Host-Betriebssystem erlaubt und auch die Möglichkeiten Splash-Screens und Icons für die Apps zu definieren.

Die Verknüpfung zwischen Webview und Betriebssystem ist nötig, da sonst nicht auf native Funktionalitäten zugegriffen werden kann.

Phonegap

Bei Phonegap handelt es sich um Cordova mit zusätzlichen Funktionen und Erweiterungen von Adobe. Eine dieser Erweiterungen ist das Kompilieren und Erstellen von hybriden Apps in der Cloud auf Adobe-Servern.

Ionic

Ionic basiert ebenfalls auf Cordova. Mittels Ionic lassen sich hybride Apps schneller entwickeln. Es stellt dafür UI-Elemente zur Verfügung und eigene Module von Dritthersteller, die in einem separaten Store erwerblich sind.

Diese Module können eigene Kalenderansichten, oder ganze Workflows sein.

Die Vorteile von hybriden Apps besteht darin, dass auch Webentwickler ohne Kenntnisse der nativen Programmiersprachen Apps erstellen können, welche im App-Store zur Verfügung gestellt werden können.

Ein weiterer Vorteil ist eine Codebasis, die für iOS und Android und in dem Fall von hybriden Apps sogar für Webseiten benutzt werden kann.

Nachteile sind hier die Geschwindigkeit, da die App in einem Browser läuft und der fehlende Zugang auf native UI-Elemente. Wenn eine Offline-Funktionalität gewünscht ist, muss entweder auf die neue WebStorage-API zugegriffen, oder über eine Schnittstelle mit der nativen Datenhaltung in der App gearbeitet werden.

Frameworks mit nativen UI-Elementen

Die im folgenden besprochenen Cross Platform Frameworks benutzen einen anderen Ansatz.

Xamarin, React Native und Appcelerator verwenden für die Businesslogik auf beiden Plattformen eine Codebasis und generieren für die UI native Komponenten.

Xamarin

Xamarin verwendet die Sprache C# um für beide Plattformen die Geschäftslogik und die GUI abzubilden.

Dabei wird pro Betriebssystem in ein anderes Format kompiliert.

  • bei iOS wird der C#-Code mittels ahead-of-time (AOT) in eine ARM assembly kompiliert.
  • bei Android wird der C#-Code zu IL (Intermediate Language) kompiliert und mit der MonoVM paketiert. Native Funktionen können über JNI (Java Native Interface) angesprochen werden.

Native GUI-Elemente werden pro Plattform erstellt. Bei iOS kann direkt mit dem Xamarin iOS Designer eine Storyboard-Datei erstellt werden. Bei Android wird per Drag-and-Drop eine .AXML-Datei erstellt. Durch diese Architektur ist eine App nicht unterscheidbar, bezüglich UI und Performance, zwischen der nativen Entwicklung und Xamarin.

Als einziges Cross Platform Framework in diesem Beitrag ist Xamarin nicht komplett kostenlos. Die Community-Version kann für Unternehmen, mit weniger als eine Million Dollar Umsatz pro Jahr, verwendet werden. Die Professional-Version kostet im ersten Jahr 1.199$ und die Enterprise-Version 5.999$. Nach dem ersten Jahr werden die Lizenzen günstiger.

React Native

React Native verwendet auch native GUI-Komponenten, ähnlich wie Xamarin. Bei der Programmiersprache handelt es sich um Javascript.

Ein Vorteil von React Native gegenüber Xamarin ist die Möglichkeit über ein Hot-Reload-Mechanismus beim Entwickeln, schneller die Änderungen angezeigt zu bekommen.

Bei Xamarin beschweren sich die Entwickler über sehr lange Kompilierzeiten.

React Native verwendet eine Bridge zwischen den Javascript-Threads und den nativen Threads des jeweiligen Betriebssystems.

Diese Brücke erlaubt eine asynchrone und bidirektionale Kommunikation zwischen diesen Welten.

Durch diese Asynchronität ist die Geschwindigkeit mit der von nativen Apps gleichgestellt. Die Kommunikation wird auch verwendet, um UI-Elemente über Aufrufe zu generieren. Dabei können diese Elemente, wie bei der nativen Entwicklung bei iOS, im Objektbaum angezeigt werden.

XCode-Abschnitt mit vergrößerter Darstellung des React Native Viewbaums

React Native Viewbaum

React Native wurde von Facebook entwickelt und wird weiterhin sehr gepflegt. Durch native Module können Funktionen des Betriebssystems oder andere Bibliotheken der JavaScript Ebene zur Verfügung gestellt werden. Es gibt zahlreiche Module von Facebook, aber auch Drittanbieter erkannten Potenzial darin und bieten React Native Module an, um auf ihre nativen Bibliotheken zugreifen zu können.

Frameworks mit eigenen Renderern

Flutter

Flutter ist ein sehr junges Framework von Google. Die Apps werden mit der Programmiersprache Dart entwickelt wird.

Ähnlich wie React Native ist ein Hot-Reload-Mechanismus vorhanden, welches die Entwicklungszeit verkürzt.

Die Besonderheit bei Flutter liegt in dem graphischen Renderer Skia, welche sich um die UI-Erstellung kümmert. D.h.: Flutter erstellt keine nativen UI-Komponenten wie Xamarin oder React Native, sondern baut die komplette UI über die in C++ geschriebene Skia Bibliothek auf.

Es präferiert hierbei das hauseigene Material-UI, um eine GUI für iOS und Android zu erstellen. Trotzdem gibt es viele Implementierungen von Widgets, welche die nativen iOS-Funktionen nachbauen.

Beispiele von Flutter Cupertino Widgets

Beispiele von Flutter Cupertino Widgets

Widgets werden alle Komponenten für die UI in Flutter genannt. Dabei können Widgets einen Zustand speichern oder zustandslos sein. Widgets können auch weitere Widgets beinhalten und damit die UI in einer Baumstruktur aufbauen.

Nicht im Fokus

Progressive WebApps / Unity

Nicht im Fokus dieses Beitrages sind Progressive WebApps und Unity, mit welchen auch Dienste dem Benutzer zur Verfügung gestellt werden können und nur aus einer Code-Basis bestehen.

Vergleich als Tabelle

Nativ Cordova Xamarin React-Native Flutter
Benutzt native UI-Komponenten
Hat eigenen Renderer
Programmiersprache Java/Kotlin Objective C/Swift HTML/CSS/Javascript C# Javascript Dart

Zusammenfassung

Die Vorteile der Cross Platform Entwicklung sind im Wesentlichen die Benutzung einer Code-Basis und einer Programmiersprache für mehrere Betriebssysteme. Bei kleineren Projekten ohne eine Notwendigkeit für eine native Schnittstelle und nur ein UI-Design für beide Plattformen schrumpft die Entwicklungszeit um ein wesentliches für iOS und Android Geräte. Mittels Hot-Reload-Funktion wie in React-Native oder Flutter kann noch mehr Zeit eingespart werden.

In diesen Projekten entscheiden dann eher andere Faktoren die Auswahl des Frameworks. Beispielsweise lässt sich mit Cordova auch eine Webseite mit der gleichen Businesslogik und UI erstellen.

Wenn im Unternehmen bisher nur für das Web entwickelt wurde, wird die Einarbeitung in Cordova oder React Native wegen der verwendeten Sprache JavaScript deutlich verkürzt.

Soll die App performant sein, dann ist Cordova und Webtechnologie nicht dafür geeignet. Hier wäre React Native und Flutter vom Vorteil.

Als Entscheidungskriterium kann hierbei auch die Verfügbarkeit von Entwicklern gelten. Da Flutter erst im Winter 2018 die Version 1.0 herausgegeben hat, kann es noch keine Entwickler mit mehrjähriger Erfahrung geben.

Die größten Nachteile bei Cross Platform Entwicklung ist die Abhängigkeit der Framework- und Drittanbieterplugin-Entwickler. Wenn eine neue Betriebssystemversion für iOS oder Android erscheint, dann ist oft hier bei den Framework Anbietern Arbeit mit verbunden. Auch Anbieter von Plugins sind nicht immer aktuell oder aktualisieren ihre Software nicht. Beispielsweise kann sich eine interne Schnittstelle ändern und das eingebettete Plugin wird nicht mehr aktualisiert, weil der Entwickler keine Zeit und Interesse mehr hat. Bei diesem Szenario muss das Plugin oftmals selbst angepasst werden, was Expertise in der nativen Programmiersprache voraussetzt. Durch die Verwendung eines Cross Platform Frameworks erhöht sich die Pflege einer App gravierend.

Wenn die jeweiligen nativen UX Paradigmen genutzt werden sollen, fällt zusätzliche Arbeit an und die Komplexität und Wartung steigt. Apps auf Basis von Cordova „fühlen“ sich nicht nativ an und können durch Performanceprobleme die Benutzer verstimmen.

Fazit

Für einen Prototypen mit wenigen Funktionen der in kurzer Zeit erstellt werden muss, eignen sich Cross Platform Frameworks gut. Falls es sich um größere und langlebige Projekte handelt, rät der Autor zu einer nativen Entwicklung. Diese hat die Vorteile, dass es viele Entwickler gibt und geben sollte, das UX für die Benutzer bekannt ist und die Performance stimmt. Der doppelte Programmieraufwand zu Beginn wird bei der Pflege des Produkts egalisiert und es ist für Betriebssystemaktualisierungen gewappnet.

Sie denken darüber nach eine innovative App mit geringer „Time-to-Market“ mittels Cross Platform Frameworks erstellen zu lassen oder möchten eine jahrelang leicht zu pflegende App entwickeln lassen? Im Bereich Application Development & Managment unterstützen wir Sie gerne dabei.  Kontaktformular

Links