simple design
DESCRIPTION
A workshop on the Agile practice of Simple Design.TRANSCRIPT
![Page 1: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/1.jpg)
The First 100 Hours:Simple Design
Jason Cheong-Kee-You @jpcky www.mightyjupiter.com
Alistair McKinnell
@amckinnell www.valuablecode.com
![Page 2: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/2.jpg)
The First 100 Hours
![Page 3: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/3.jpg)
The First 100 Hours
1. Learning
2. Test-Driven Development
3. Design
![Page 4: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/4.jpg)
Pair Programming
![Page 5: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/5.jpg)
44 A Rhythm for Success: TheTDD Cycle
R
ed
Gre
en
Refac
tor
Prepared exclusively for Alistair McKinnell Copyright ©2011 Pragmatic Programmers
![Page 6: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/6.jpg)
![Page 7: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/7.jpg)
Where DoYou Stand?
![Page 8: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/8.jpg)
Simple Design
![Page 9: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/9.jpg)
Simple Design
1. All tests must pass
2. No code is duplicated
3. Code is self-explanatory
4. No superfluous parts exist
![Page 10: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/10.jpg)
Exercise
![Page 11: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/11.jpg)
Exercise
Why are the four rules of simple design important?
![Page 12: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/12.jpg)
![Page 13: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/13.jpg)
1. All tests must pass
2. No code is duplicated
3. Code is self-explanatory
4. No superfluous parts exist
Simple Design
![Page 14: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/14.jpg)
1. Passes its tests
2. No code is duplicated
3. Code is self-explanatory
4. No superfluous parts exist
Simple Design
![Page 15: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/15.jpg)
1. Passes its tests
2. Minimizes duplication
3. Code is self-explanatory
4. No superfluous parts exist
Simple Design
![Page 16: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/16.jpg)
1. Passes its tests
2. Minimizes duplication
3. Maximizes clarity
4. No superfluous parts exist
Simple Design
![Page 17: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/17.jpg)
1. Passes its tests
2. Minimizes duplication
3. Maximizes clarity
4. Has fewer elements
Simple Design
![Page 18: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/18.jpg)
1. Passes its tests (given TDD)
2. Minimizes duplication
3. Maximizes clarity
4. Has fewer elements
Simple Design
![Page 19: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/19.jpg)
1. Passes its tests (given TDD)
2. Minimizes duplication
3. Maximizes clarity (fix names)
4. Has fewer elements
Simple Design
![Page 20: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/20.jpg)
1. Passes its tests (given TDD)
2. Minimizes duplication
3. Maximizes clarity (fix names)
4. Has fewer elements
Simple Design
![Page 21: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/21.jpg)
That leaves me with two key elementsof simple design: remove duplication and fix bad names.
When I remove duplication, I tend to seean appropriate structure emerge, and whenI fix bad names, I tend to see responsibilities slide into appropriate parts of the design.
J. B. Rainsberger
![Page 22: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/22.jpg)
• Remove duplication
• Fix bad names
Simple Design
![Page 23: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/23.jpg)
Exercise
![Page 24: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/24.jpg)
Exercise
How to choose good names?
Build a checklist
![Page 25: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/25.jpg)
Choosing Good Names
![Page 26: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/26.jpg)
Choosing Good Names
Pronounceable Names
Avoid Encodings
![Page 27: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/27.jpg)
Choosing Good Names
Intention-Revealing Name
Role-Suggesting Name
![Page 28: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/28.jpg)
Choosing Good Names
Ubiquitous Language
![Page 29: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/29.jpg)
Simple Design
1. All tests must pass
2. No code is duplicated
3. Code is self-explanatory
4. No superfluous parts exist
![Page 30: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/30.jpg)
• Remove duplication
• Fix bad names
Simple Design
![Page 31: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/31.jpg)
![Page 32: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/32.jpg)
“The prime directive that was unanimously agree upon by allpresent was that in the nexttens years Agile leaders mustDemand Technical Excellence”
Jeff Sutherland
![Page 33: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/33.jpg)
“Failure to do that meansyou are not an Agile leader”
Jeff Sutherland
![Page 34: Simple Design](https://reader033.vdocuments.net/reader033/viewer/2022042713/547e3978b4af9f502d8b46b9/html5/thumbnails/34.jpg)
Photo Credits
http://www.flickr.com/photos/54087404@N00/4638056301/
http://www.flickr.com/photos/49016492@N08/4534101229/
http://www.flickr.com/photos/27558040@N00/4151899795/
http://www.flickr.com/photos/21561428@N03/5520629205/
http://www.flickr.com/photos/flatcat/3555774083/