Welcome to a day of deliberate practice and learning!
Spricht jemand nur Deutsch? Bitte melden.
Does anyone speak only English? Please report.
Thank you very much for hosting us!
Who wants to join dinner?
Please raise your hand.
Please raise your hand.
A day of deliberate practice and learning.
Practice - reflect - improve! π₯³
Time | Topic |
---|---|
08:20 | Arrival & Breakfast |
09:00 | Welcome at Nagarro |
09:10 | Intro Coderetreat π |
10:00 | Session 1 by Claus Aichinger |
10:50 | Session 2 by Rea Sutter |
12:20 | Session 3 by Gregor Riegler |
13:30 | Lunch Break |
14:20 | Session 4 by Adam Zielinski |
15:30 | Session 5 by Roland Germ |
16:40 | Final Retrospective |
17:00 | Closing |
Facilitators in order of appearance.
Letβs get to know each other:
Form groups of three (with people you donβt know).
This code of conduct outlines our expectations for participants within our community:
βPair programming is a conversation between people, where the byproduct is code.β
Roles:
Procedure:
If you write new code, write a test first
If you change code, is it covered by tests?
Revisit same problem repeatedly
Try different strategies to improve your know-how and experience
Focus: Familiarize yourself with the problem
Facilitator: Claus Aichinger
Before we start coding, letβs think:
How would you implement Tetris?
Inside-Out:
Outside-In:
And be back in time.
Focus: Warm up your TDD and pairing muscles
Facilitator: Rea Sutter
Classical TDD / Detroit School
Work inside out
Start with a simple test
Switch roles ping-pong style
π₯ RED - write a test and see it fail
π© GREEN - write minimal amount of code to pass the test
π¨ REFACTOR - donβt add/change functionality!
π REPEAT
π₯ π °οΈ writes a test, sees it fail
π© π§ writes the code, sees test(s) succeed
π¨ π °οΈ and/or π§ refactors, test(s) still green
π₯ π§ writes the next test, sees it fail
π© π °οΈ writes the code, sees tests succeed
π¨ π₯ π© π¨ etc.
And be back in time.
Focus: Ignore the inside and avoid mocks by using Sociable Tests and State-Based Tests.
Facilitator: Gregor Riegler
Picture stolen from martinfowler.com
And be back in time.
Focus: separation of the system under test
and its collaborators π§¬
Facilitator: Adam Zielinski
Motivation: often the tested unit relies on other units (collaborators) to fulfill its behaviour
A pattern where you replace a production object for testing purposes
interface Bottom {
/** Check a piece has contact with bottom */
touches(piece: Piece): boolean
/** Add the piece to the bottom because it has landed */
land(piece: Piece): void
/**
* Check for full lines and remove the returned lines,
* empty when no full lines there
* count from bottom, 0 is lowest.
*/
removeFullLines(): number[]
/** Return max height of the different columns of bottom. */
maximumHeight(): number
}
And be back in time.
Focus: Constraints
Facilitator: Roland Germ @rolgerm
COUNTABLE NOUN
A constraint is something that limits or controls what you can do.
Use the same procedure for Refactoring!
Put a post-it:
π€ Briefly.
Coding dojo with Rea @ 2023-11-21
On your way out
say thank you π€
Thank you for joining! π
Global Day of Codereatreat 2023 by Softwerkskammer Wien at Nagarro