desing principles: tensions and synergies v3.0
DESCRIPTION
Version presented at Agile Day 2014 We created a workshop to help developers to start learning and questioning design principles. The basic idea is to put them one against the other and realise how they are applied differently based on context and that design is based on trade-off choices. People will be splitted into pairs working on a small code exercise. Starting from a small codebase you’ll be asked to implement a new feature following one principle. After 20/30min we’ll share our code in a facilitated conversation Check the code and all the support material to repeat the dojo at: https://github.com/iliasbartolini/design_principles_dojo_facilitator_guide https://github.com/iliasbartolini/design_principles_dojoTRANSCRIPT
Design Principles Tensions & Synergies
Ilias Bartolini
v 3 . 0
2
HOW IT WORKS
● Divide into pairs ● Start setup development environment● Explain the tensions & synergies● Choose a design principle or rule● Game of life● Implement a new user story (45min)
Showcase changes How did it affect other principles? Post-it!!Repeat
● Conclusions● Feedback
BREAK
3
Introductions
5
A SIMPLE EXAMPLE
6
Encapsulation
Single Responsibility
A SIMPLE EXAMPLE
7
A SIMPLE EXAMPLE
8
Encapsulation
Single Responsibility
A SIMPLE EXAMPLE
9
Single Responsibility vs Encapsulation
10
SOME PRINCIPLES AND RULES...
11
USING PRINCIPLES AND RULES...
Patrick Kua - http://www.slideshare.net/thekua/learning-about-learning-with-dreyfus-7924019
12
Conway's Game of Life 1. Any live cell with fewer than two live neighbours dies,
as if caused by under-population.2. Any live cell with two or three live neighbours lives on to the next
generation.3. Any live cell with more than three live neighbours dies,
as if by overcrowding.4. Any dead cell with exactly three live neighbours becomes a live cell,
as if by reproduction.
http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
13
As the supreme product ownerI want any cell with >= 4 alive
neighbours to become a zombieso that apocalypse can begin..
#5
14
As the supreme product ownerI want any cell with >= 4 alive
neighbours to become a zombieso that apocalypse can begin..(ps. Zombies will be forever
zombie, cannot die or become alive
again)
#5
15
Code showcase
Don't worry,
be crappy :-)
16
Encapsulation
SingleResponsibility
DRYHigh
Cohesion
Composition over inheritanceNo code
duplication
LowCoupling
Demeter
Tell, don't ask
DependencyInversion
InterfaceSegregation
Express Intent
Open-Close
LiskovSubstitution
https://docs.google.com/spreadsheets/d/1jiqS5soI0PCo8Rm4M6LFJ20L3I6yJeyuOjLAK23RDWY/edit
TENSIONS AND SYNERGIES (v3.0)WHAT WE LEARNED SO FAR... ??
DependencyInjection
?
17
Design decisions are trade-offs
18
Recap
19
Questions?
20
DO YOU WANT TO REPEAT THIS EXERCISE?
http://bit.ly/oo_dojo_facilitator
21
Feedback
22
THANKSModify and reuse CC-BY-SA
https://github.com/iliasbartolini/design_principles_dojo_facilitator_guide
Contributions from:Luca Minudel
Matteo Vaccari
CC photo credits:
https://www.flickr.com/photos/torek/4444673930