desing principles: tensions and synergies v3.0

22
Design Principles Tensions & Synergies Ilias Bartolini v3.0

Upload: ilias-bartolini

Post on 02-Jul-2015

342 views

Category:

Software


0 download

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_dojo

TRANSCRIPT

Page 1: Desing principles: tensions and synergies v3.0

Design Principles Tensions & Synergies

Ilias Bartolini

v 3 . 0

Page 2: Desing principles: tensions and synergies v3.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

Page 3: Desing principles: tensions and synergies v3.0

3

Introductions

Page 4: Desing principles: tensions and synergies v3.0

4

http://bit.ly/oo_dojo

Fork me!Follow README to build & test

Page 5: Desing principles: tensions and synergies v3.0

5

A SIMPLE EXAMPLE

Page 6: Desing principles: tensions and synergies v3.0

6

Encapsulation

Single Responsibility

A SIMPLE EXAMPLE

Page 7: Desing principles: tensions and synergies v3.0

7

A SIMPLE EXAMPLE

Page 8: Desing principles: tensions and synergies v3.0

8

Encapsulation

Single Responsibility

A SIMPLE EXAMPLE

Page 9: Desing principles: tensions and synergies v3.0

9

Single Responsibility vs Encapsulation

Page 10: Desing principles: tensions and synergies v3.0

10

SOME PRINCIPLES AND RULES...

Page 11: Desing principles: tensions and synergies v3.0

11

USING PRINCIPLES AND RULES...

Patrick Kua - http://www.slideshare.net/thekua/learning-about-learning-with-dreyfus-7924019

Page 12: Desing principles: tensions and synergies v3.0

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

Page 13: Desing principles: tensions and synergies v3.0

13

As the supreme product ownerI want any cell with >= 4 alive

neighbours to become a zombieso that apocalypse can begin..

#5

Page 14: Desing principles: tensions and synergies v3.0

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

Page 15: Desing principles: tensions and synergies v3.0

15

Code showcase

Don't worry,

be crappy :-)

Page 16: Desing principles: tensions and synergies v3.0

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

?

Page 17: Desing principles: tensions and synergies v3.0

17

Design decisions are trade-offs

Page 18: Desing principles: tensions and synergies v3.0

18

Recap

Page 19: Desing principles: tensions and synergies v3.0

19

Questions?

Page 20: Desing principles: tensions and synergies v3.0

20

DO YOU WANT TO REPEAT THIS EXERCISE?

http://bit.ly/oo_dojo_facilitator

Page 21: Desing principles: tensions and synergies v3.0

21

Feedback

Page 22: Desing principles: tensions and synergies v3.0

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