69
Wie Clean Code zum Teamsport wird Von der Vision zur Mission

Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Wie Clean Code zum Teamsport wird

Von der Vision zur Mission

Page 2: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Hi

Page 3: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Halina[Senior Software Entwickler ]

Page 4: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Clean Code Team ?

Page 5: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Was ist eigentlich Clean Code?

Page 6: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Ist das nicht subjektiv?

Page 7: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

“simple to readand

painless to maintain“

Page 8: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

lesbar

verständlich

wartbar

testbar

Page 9: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Was sagen Entwickler?

Page 10: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Batman: “- SoC

- KISS- YAGNI- SLA- SRP- DEMETER- DRY- Test first- IOSP- ISP- Evolvierbarkeit- FCoI- Root Cause Analysis- Dependency Inversion Principle- SOLID- Information Hiding Principle- Liskov- boy scout rule

… *lufthol* …

Alfred: „Schöne Variablennamen... … und, ähm, Tests.

Ja, Testabdeckung! “

Robin: “ Hmmm, gleiche Einrückung?

… Also Leerzeilen und Umbrüche sowas?“

Was verstehst Du unter Clean Code?

Page 11: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Woher kommen die unterschiedlichen Sichten

auf Clean Code?

Page 12: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

individuelles Fachwissen&

individuelle Erfahrung

Page 13: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Dreyfus Model

Brüder Stuart und Hubert Dreyfus, 1980

Page 14: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Novice braucht Regeln

Advanced Beginner testet Regeln

Competent wendet Regeln an

Proficient greift auf Regeln zurück

Expert weit über Regeln hinaus

Dreyfus Model5 levels of skill aquisition

Dan North, GOTO 2017

Page 15: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Woran jetzt jeder denkt:

Page 16: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu
Page 17: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Moment !

Page 18: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Hier geht es um einzelne Fähigkeiten

Page 19: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Robin

C Ruby

Java PHP

JS C++

Page 20: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Dreyfus Squared

NoviceAdvancedBeginner

Competent Proficient Expert

Novice

AdvancedBeginner

Competent

Proficient

Expert

Dan North, GOTO 2017

Page 21: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Onboardings / Einführungen

o Trainings / Workshops

o Diskussionen / Meetings

o Fragen / Antworten

o Code Reviews

o Teamzusammenstellung / Pairings

Berücksichtigen bei

Page 22: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Ok.Also je nach Level geht jeder anders mit

Regeln um oder kennt sie noch gar nicht.

Page 23: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Betrachten wir wieder unser Team …

Page 24: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Welche Regeln?

Page 25: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Coding Guidelines!

Page 26: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Eigene Guidelines einfach festlegen?

Page 27: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Nur sinnvoll, wenn das Team die Guidelines ernst

nimmt

Page 28: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Schritt 1Sicherstellen, dass jeder im Team versteht, warum Guidelines so wichtig sind

Schritt 2Von Anfang an jeden im Team bei der Erstellung der Guidelines involvieren

Page 29: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Code Ownership

o Man kann Dinge nachschlagen

o Keine Streitereien zwischen Einzelnen

o Neuzugang kann sich einfach einlesen

o Lesbarer Code, als hätte man ihn selbst geschrieben

o Positiver Effekt auf Wartbarkeit, wenn Guidelines

eingehalten werden weniger Kosten

o Weniger erfahrene Entwickler können sich leichter

orientieren und besser dazulernen

Vorteile

Page 30: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Was legt man da denn überhaupt fest?

Page 31: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Formatierung

o Kommentare

o Umfang von Klassen & Funktionen

o Testing

o Datei Organisation

o Naming Conventions

o Architektur Guidelines

… und, und, und

Was sind Coding Guidelines?

Page 32: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Ist das nicht viel?

Page 33: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Wie machen das andere?

Page 34: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu
Page 35: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu
Page 36: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu
Page 37: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Bestehende Guidelines als Basis auswählen

Vorlage suchen (Sprache/Framework)

o Nur festhalten, wo das Team davon abweichen will

o Den ersten Entwurf im Team präsentieren

per Mail, Confluence und/oder Meeting

o Offene Diskussion & Zeit für Erklärungen

o Commitment von allen einholen

o Gemeinsam (!) “Strafen” bei Regelverstoß festlegen

Coding Guidelines festlegenpro Sprache / Projekt

Page 38: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Moment, Strafen?

Page 39: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu
Page 40: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu
Page 41: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Wieder zurück…

Page 42: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Bestehende Guidelines als Basis festlegen

Vorlage suchen (Sprache/Framework)

o Nur festhalten, wo das Team davon abweichen will

o Den ersten Entwurf im Team präsentieren

per Mail, Confluence und/oder Meeting

o Offene Diskussion & Zeit für Erklärungen

o Commitment von allen einholen

o Germeinsam(!) “Strafen” bei Regelverstoß festlegen

o regelmäßig prüfen/aktualisieren/erweitern

Coding Guidelines festlegenpro Sprache / Projekt

Page 43: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Wie trifft man solche Entscheidungen im Team?

Page 44: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Votingohne große Diskussion abstimmen

o ConsensusTeam diskutiert, bis sich alle auf eine Lösung einigen

o The Strong LeaderDiskussion im Team, Entscheidung durch Leader. Leader-Rolle kann wechseln

MethodenGerald M. Weinberg’s - “Becoming a Technical Leader“.

Page 45: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Proo Schnelle Ergebnisseo Gefühl der Gleichberechtigungo Hilfreich, wenn keiner

Verantwortung übernehmen will

o Gut, wenn es keinen Spezialisten zu dem Thema gibt

o Entscheidungen selten total schlecht

VotingGerald M. Weinberg’s - “Becoming a Technical Leader“

Kontrao Oft kein optimales Ergebniso Ohne Diskussion kein

Lerneffekt

Page 46: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Proo Großartige Ergebnisseo Hoher Lerneffekt durch

Diskussion

ConsensusGerald M. Weinberg’s - “Becoming a Technical Leader“

Kontrao Sehr zeitintensivo Wird schnell anstrengend,

wenn Meinungen zu weit auseinander liegen

Page 47: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Proo Schnelle Ergebnisseo Großartige Ergebnisse, wenn

der Leader tiefes Fachwissen hat

Strong LeaderGerald M. Weinberg’s - “Becoming a Technical Leader“

Kontrao Schlechte Ergebnisse, wenn

der Leader keine guten Fachkenntnisse hat und er andere Meinungen nicht berücksichtigt

o Keine Gleichberechtigung führt vielleicht zu dem Gefühl, weniger wichtig zu sein

Page 48: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Slack

o Confluence

o Handzeichen

o Entscheidungs-Log

etc.

Es muss nicht immer ein Meeting sein:

Page 49: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Wenn man auf Widerstand stößt, Moderator-Rolle an den „Rebell“ abgeben

o Stillere Teammitglieder einbeziehen und nach ihrer Meinung fragen

o Wenn man gemeinsam entscheidet, ist das ganze Team dafür verantwortlich

keine Blame Kultur

o Wenn über ein komplexes Thema entschieden werden muss, vorab ein

Zeitkontingent zur Einarbeitung festlegen

o Meinungen entschärfen:

„Wie seht ihr das?“

„Lasst uns den anderen Ansatz zusammen durchspielen!“

Tipps für Team-Entscheidungen

Page 50: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Gut

Page 51: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Guidelines festgelegt

Page 52: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Und wie läuft das jetzt jeden Tag?

Page 53: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Wir müssen doch Features bauen!?

Page 54: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Automatisieren, was geht!

Page 55: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Tools bereits in der Entwicklungsumgebung einrichten

o Statische Codeanalyse der Testsuite vorschalten

✓ Spart Arbeit

✓ Frühes Feedback

✓ Die Tools kritisieren den Code, nicht andere Teammitglieder

✓ Deckt Probleme auf, ein Mensch vielleicht nicht wahrnimmt

✓ Lerneffekt

Statische Codeanalyse

Page 56: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Und was ist damit, das die statische Codeanalyse

nicht finden kann?

Page 57: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Code Reviews !

Page 58: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Warum?

Page 59: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Vorteile

o Konsistenter Code

o Code Ownership

o Wissen verteilen

o Teamstandards erhöhen

o Entwickler geben sich mehr Mühe, wenn Reviews anstehen

o Hands on learning: dein Code, dein Anwendungsfall

o Weniger Security Issues

o Weniger Bugs

Page 60: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Wie?

Page 61: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Review Guidelines

Page 62: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Review Checkliste

im Team erarbeiten und updaten

o Allgemein (Coding Standards)

o Performance

o Security

o Dokumentation

o Testing (ausreichend und sinnvoll)

Page 63: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Grundregeln

o Wirklich konstruktiv sein

o Zeit nehmen für Erklärungen

o Immer etwas Gutes finden

o Harte Kritik entschärfen:

„ ... ist nicht so gut, was meinst Du?“

„Ich glaube, es wäre besser, weil …“

o Reviews vor dem Mergen abschließen (Dod)

o Anderen für Kritik danken

o Lob / Begeisterung für gute Ansätze

Page 64: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Wie kann man sonst noch Wissen im Team verteilen?

Page 65: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Code Reviews

o Pair-Programming

o Workshops

o (e-learning) Kurse / Clean Code Videos

o Brown Bag Lunch

o Buch Club

o Programmierbier

o Dokumentation

Wege, Wissen im Team zu verteilen

Page 66: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Findet einen Weg, der zu eurem Team passt!

Page 67: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

o Bewusstsein für verschiedenen Lernstufen

oder Erfahrungsstufen schärfen

o Coding Guidelines etablieren

o Entscheidungsprozess im Team optimieren

o Code Reviews einführen

o Soviel automatisieren wie möglich

o Austausch fördern

Zusammengefasst:

Page 68: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Organisiert Euch!

Page 69: Wie Clean Code zum Teamsport wird - Embedded Testing · o Brown Bag Lunch o Buch Club o Programmierbier o Dokumentation Wege, Wissen im Team zu verteilen. Findet einen Weg, der zu

Danke für‘s ZuhörenRessources:

Dan North, GOTO 2017 - https://www.youtube.com/watch?v=lvs7VEsQzKYBrüder Stuart und Hubert Dreyfus, 1980 - Dreyfus ModelGerald M. Weinberg’s book “Becoming a Technical Leader“https://team-coder.com/boosting-the-quality-of-team-decisions/

Bilder:

https://www.publicdomainpictures.net/en/view-image.php?image=129416&picture=darwin-evolutionhttps://creativecommons.org/publicdomain/zero/1.0/https://www.buildabear.de/mode/haarreif-mit-hasenohren/a-22348/https://pixabay.com/de/service/terms/#usagehttps://pixabay.com/de/gugelhupf-kuchen-gebacken-2842827/https://pixabay.com/de/marke-kreuz-falsch-nr-abstimmung-39951/