Skip to content

JensPiegsa/codingdojo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Coding Dojo (Lunch Sessions)

  • regelmäßiges Austauschformat zu praktischen Themen der Softwareentwicklung
  • jeden Freitag 12:30 Uhr in der Mittagspause per Webkonferenz
  • standardmäßig versuchen wir uns gemeinsam an einer Kata (Timer)
  • alternativ nehmen wir uns nach Absprache Spezialthemen vor
  • es gibt bei Slack im ICM-VC Workspace auch einen coding-dojo Kanal

Log

28.11.2025

~ until November 2025

weekly meetings, but undocumented

16.07.2021

09.07.2021

02.07.2021

25.06.2021

18.06.2021

11.06.2021

04.06.2021

28.05.2021

21.05.2021

14.05.2021

07.05.2021

30.04.2021

23.04.2021

[...]

06.11.2020 - #51

  • Vorschlag: Medicine Clash Kata

30.10.2020 - #50

23.10.2020 - #49

  • Kata: Smelly Tic Tac Toe
  • Topics:
    • Identify code smells (Primitive obsession, Feature envy, Data class, Message chain, Long method, Comments, Long parameter list, Shotgun surgery, Duplicated code, Large class, Divergent change, Data clump, Lazy class, Dead code)
    • Apply appropriate refactorings (see table)

16.10.2020 - #48

Parallel change kata by Pawel Duda and Carlos Blé

Change the class ShoppingCart. The class should be able to handle multiple items instead of the single one it currently supports. Run the tests every time you make a change. The tests must not be red at any time. No compile-errors, no failures. Commit. Refer to the Parallel Change code by Pawel Duda and Carlos Blé.

09.10.2020 - #47

  • TDD-Crashkurs (FizzBuzz-Kata)
    • TDD loop:
      • red - write a failing test
      • green - make it pass
      • refactor
    • Test anatomy:
      • arrange - act - assert (or: given - when - then)
    • TDD rules:
      • Write only enough of a unit test to fail
      • Write only enough production code to make the failing unit test pass (choose the most obvious implementation)
    • eliminate duplication (rule of three)

02.10.2020 - #46

  • Bank OCR Kata (Tests, Code)
  • Retrospective:
    • How readable are your test cases? Can you look at them and easily see which digits are being parsed?
    • What would happen if the input changed format to 12 digits instead of 9? How well would your code cope?

25.09.2020 - #45

  • Bank OCR Kata (Tests, Code)
  • Topics
    • Refactor code readability/understandability first
    • Use the IDE to refactor quickly and safely
    • Stay on the green while refactoring

18.09.2020 - #44

11.09.2020 - #43

04.09.2020 - #42

28.08.2020 - #41

21.08.2020 - #40

14.08.2020 - #39

07.08.2020 - #38

31.07.2020 - #37

24.07.2020 - #36

17.07.2020 - #35

10.07.2020 - #34

03.07.2020 - #33

26.06.2020 - #32

  • Thema: Arbeiten mit Legacy Code

Code smells am Beispiel-PDF-Exporter

  • long class
  • multiple layers of abstractions in same method / class
  • map initialization by anonymous sub-class -> own map builder or Map.of(..)
  • interface name prefix
  • bad formatted code
  • magic values -> replace with constants
  • long method -> extract method
  • comments about what -> extract method
  • unpronounceable variable names
  • method with long parameter list -> extract class or introduce parameter object
  • throws Exception -> list all types for appropriate handling
  • duplicated code
  • there are some use case for reflection
  • multiple if's with enums -> switch case
  • multiple if's -> polymorphism
  • in-place retrieval of configuration -> inject configuration values
  • in-place parsing of configuration values -> type-save configuration retrieval
  • workarounds -> descriptive method names + comments about why

Bücher

19.06.2020 - #31

12.06.2020 - #30

05.06.2020 - #29

29.05.2020 - #28

15.05.2020 - #27

08.05.2020 - #26

  • Train Reservation Kata - Teil XI
  • Themen
    • Wann Redundanzen auflösen?
    • Bug exposing tests
    • Detroit vs. London School

24.04.2020 - #25

  • Train Reservation Kata - Teil X
  • Themen
    • IntStream, primitive boxing, unboxing
    • Reduktion von Konstruktoraufrufen im Test-Setup
    • Test-Code-Refactoring
    • Builder Design Patttern
    • vararg-Methoden

17.04.2020 - #24

10.04.2020

(Karfreitag)

03.04.2020 - #23

27.03.2020 - #22

  • Train Reservation Kata - Teil VII
  • Zwischenergebnisse: Commit
  • Themen:

20.03.2020 - #21

  • Train Reservation Kata - Teil VI
  • Zwischenergebnisse: Commit
  • Themen:
    • Geschäfsregeln in Unit-Tests umsetzen
    • null vs. empty

13.03.2020 - #20

  • Train Reservation Kata - Teil V
  • unser Zwischenstand: KataTrainReservation
  • Themen
    • manuelle JSON-Verarbeitung aufgrund verletzter Format-Konventionen
    • JSON - Bad Practices
      • Zahlen als Strings
    • Struktur Geschäftsobjekte
      • Eingabe vs. Nutzung
    • zukünftige Anforderungen

06.03.2020 - #19

28.02.2020 - #18

14.02.2020 - #17

07.02.2020 - #16

31.01.2020 - #15

  • Gilded Rose Kata - Teil IV
  • Original:
  • unser Endergebnis:
  • Retrospektive:
    • Discussion points about Designing Test Cases
      • Did you need to do some refactoring before you could get the code under test at all?
      • Did you make mistakes while refactoring that the tests caught?
      • Have you tried running the text-based tests to see if they catch refactoring mistakes your tests have missed?
      • Did you find any bugs in the code when writing your tests?
      • Did you find any omissions or ambiguities in the requirements document?
      • Did you miss important tests that you had to add later? Did you go back and run them against the original version of the code?
      • How good is the statement coverage of your tests?
      • Could you easily identify the cause of failing tests?
    • Discussion points about Design and Refactoring
      • Were you prepared to argue with the goblin about changing the Item class? How did that decision change your design options?
      • When you were refactoring, did you keep in mind the new feature you intended to add?
      • Think about the design you ended up for the code. How easy would it be to add other new features? (For example weekly reports on overall stock quality, or support for interactive stocktaking)
      • Review your refactoring session in a test run logging tool, (if you used one - see Tools for the Dojo). How large steps did you take? Could you have taken smaller steps?
      • Were your test cases good enough to support refactoring or were you worried they missed things?
  • alternative Lösung in C#

24.01.2020 - #14

17.01.2020 - #13

10.01.2020 - #12

13.12.2019 - #11

06.12.2019 - #10

29.11.2019 - #9

  • Backwards Roman Numerals Kata
  • Constraint: RegEx
  • unser Ergebnis: regex101.com/r/vyMdVX/1, RomanNumerals.java, RomanNumeralsTest.java
  • Fazit
    • der regulärer Ausdruck kann eine römische Zahl in Gruppen zerlegen und eignet sich zur Validierung von String-Eingaben
    • die Zahlenumwandlung selbst würde zu viele Ersetzungsregeln benötigen

22.11.2019 - #8

15.11.2019 - #7

08.11.2019 - #6 (Special)

30.10.2019 - #5

Plan

Ergebnis

Themen

  • Testdaten aus Datei lesen
  • Wenn API-Änderungen die Tests kaputt machen (Refactoring-Ansätze) ...
  • Abschätzung von Laufzeitverhalten für Verarbeitung großer Datenmengen (O-Notation)
  • Performance-Vergleich unterschiedlicher Implementierungen

23.10.2019 - #4

Plan

Ergebnis

Themen

  • Testreihenfolge
  • Testnamen
  • Vergleich JUnit / AssertJ assertions
  • Java Stream API
  • Refactorings, wann?

16.10.2019 - #3

Plan

Ergebnis

Themen

  • automatische IDE Refactorings
  • JUnit 5 (assertThrows(), @BeforeEach)
  • Richtung OOP refaktorieren
  • Mockito: Mock-Initialisierung für Klassen mit parametrisiertem Konstruktor
  • Methodenlänge

09.10.2019 - #2

Plan

Wir könnten uns hier eine Kata heraussuchen, z.B.:

Themen

  • Recap: Kata, Dojo, TDD
  • Rollen im Pair Programming / Mob Programming
    • an der Tastatur: Driver vs. Typist
    • Partner: Backseat Driver vs. Navigator vs. Moderator
    • Mob: Konsens vs. Vorschläge
  • Teststruktur: Arrange-Act-Assert bzw. Given-When-Then
  • Umgang mit statischen Methoden beim Testen von Legacy Code

Trip Service Kata

02.10.2019 - #1

Themen

Fizz Buzz Kata (Mob)

Ideen

  • Beiträge, Vorschläge, Wünsche jeder Zeit gern

Kata-Vorschläge

Mögliche Spezialthemen

  • property-based testing (PBT)
  • test && commit || revert (TCR)
  • docker
  • git
  • triple stores

Zugang Webkonferenz

  • beim DFN sind drei Räume eingerichtet
  • Veranstalter-PIN auf Anfrage

Meetingraum "Coding Dojo 1" (Nr. 97979820)

Um an dem Meeting teilzunehmen, haben Sie folgende Möglichkeiten:

  1. Mit Ihrem Browser unter Windows, MacOS, GNU/Linux: https://conf.dfn.de/webapp/conference/97979820

  2. Mit einem SIP/H.323-Raumsystem oder SIP/H.323-Client:

    H.323: 004910097979820 SIP: 97979820@conf.dfn.de

  3. Mit einem Telefon (nur Audio): Wählen Sie 0049 30 200 97979820

  4. Über Skype for Business: 97979820@vc.dfn.de

  5. Mobil mit Smartphone: Voraussetzung ist die vorinstallierte Pexip App unter

    Geben Sie ein: 97979820@conf.dfn.de

Meetingraum "Coding Dojo 2" (Nr. 97979821)

Um an dem Meeting teilzunehmen, haben Sie folgende Möglichkeiten:

  1. Mit Ihrem Browser unter Windows, MacOS, GNU/Linux: https://conf.dfn.de/webapp/conference/97979821

  2. Mit einem SIP/H.323-Raumsystem oder SIP/H.323-Client:

    H.323: 004910097979821 SIP: 97979821@conf.dfn.de

  3. Mit einem Telefon (nur Audio): Wählen Sie 0049 30 200 97979821

  4. Über Skype for Business: 97979821@vc.dfn.de

  5. Mobil mit Smartphone: Voraussetzung ist die vorinstallierte Pexip App unter

    Geben Sie ein: 97979821@conf.dfn.de


Warten Sie, bis Ihr Veranstalter den Meetingraum betreten hat.

Für einen Verbindungstest rufen Sie bitte folgende Webseite auf: https://www.conf.dfn.de/beschreibung-des-dienstes/zugangswege/testcall-service/

Bitte beachten Sie auch die Hinweise zum Datenschutz unter https://www.conf.dfn.de/datenschutz

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages