Working in Home-Office

7 Tipps für eine langfristige IT-Sicherheit im Home-Office

Besonders die aktuelle Situation veranschaulicht uns, wie wichtig ein durchdachtes Security Konzept ist. Zusätzlich haben viele Arbeitgeber und -nehmer das große Potential vom Home-Office entdeckt und möchten darauf auch in Zukunft nicht mehr verzichten. Somit bleibt das Thema IT-Sicherheit im Home-Office auch in Zukunft ein relevantes Thema.

Doch wovor muss man sich überhaupt schützen und worauf sollten Sie achten?

5G Vorteile für Ihr Business

Die Anforderungen an Unternehmen und ihre Geschäftsprozesse steigen immer weiter. Instabile Verbindungen in den Produktionshallen, zu geringe Bandbreiten für moderne hochspezialisierte Prozesse und neue Sicherheitsstandards stellen Unternehmen des 21. Jahrhunderts vor unbekannte digitale Herausforderungen. Doch wie können Sie diesen Anforderungen gerecht werden, wie kann Ihnen 5G dabei helfen und welche Leistungen sollten Sie in Anspruch nehmen?

User Story Mapping

User Story Mapping (EN)

We will introduce you to the advantages and functionality of User Story Mapping: A technique that is used to visualize requirements and is very popular in the agile world. But what other fields of application does User Story Mapping have and how are User Story Maps created and digitalized?

User Story Mapping

User Story Mapping

Wir stellen Dir die Vorteile und Funktionalität von User Story Mapping vor: Einer Technik, die zur Visualisierung von Anforderungen genutzt wird und die in der agilen Welt großen Anklang findet. Doch welche weiteren Anwendungsfelder hat User Story Mapping und wie werden User Story Maps erstellt und digitalisiert?

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 in der Praxis

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: