design is a process, not an artefact - trisha gee (mongodb)
DESCRIPTION
Presented at JAX London 2013 Agile methodologies have had us moving away from Big Up Front Design to evolutionary, emergent design. But how does that work in the real world? Using experiences gained when creating the new Java driver for MongoDB, Trisha takes us on a design journey, where the answer to every question is "It Depends", the users of the system and their use cases are unknown, and lurking at the back of every decision is the question “but will it be backwards compatible?” We’ve all been there, trying to work out how to implement requirements, but have we really thought about the process of design?TRANSCRIPT
![Page 1: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/1.jpg)
Trisha Gee, Java Driver Developer
#JAXLondon
Design is a Process, not a Document
@trisha_gee
Tuesday, 29 October 13
![Page 2: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/2.jpg)
Design: translate the requirements in a specification that describes the global architecture and the functionality of the system.
http://homepages.cwi.nl/~paulk/patents/isnot/node4.htmlTuesday, 29 October 13
![Page 3: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/3.jpg)
Managing the Development of Large Software Systems - Dr Winston Royce
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf
Tuesday, 29 October 13
![Page 4: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/4.jpg)
Agile Design
<This Page Left Intentionally Blank>
Tuesday, 29 October 13
![Page 5: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/5.jpg)
Design is a Process, not a Document
Tuesday, 29 October 13
![Page 6: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/6.jpg)
The Problem
Tuesday, 29 October 13
![Page 7: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/7.jpg)
Tuesday, 29 October 13
![Page 8: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/8.jpg)
Tuesday, 29 October 13
![Page 9: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/9.jpg)
Tuesday, 29 October 13
![Page 10: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/10.jpg)
Tuesday, 29 October 13
![Page 11: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/11.jpg)
Constraints:
Tuesday, 29 October 13
![Page 12: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/12.jpg)
Backwards Compatibility
Tuesday, 29 October 13
![Page 13: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/13.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 14: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/14.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 15: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/15.jpg)
Design is a Process, not a Document
Tuesday, 29 October 13
![Page 16: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/16.jpg)
Unknown Architecture
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Tuesday, 29 October 13
![Page 17: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/17.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Tuesday, 29 October 13
![Page 18: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/18.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
Tuesday, 29 October 13
![Page 19: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/19.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
![Page 20: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/20.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
![Page 21: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/21.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
![Page 22: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/22.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
![Page 23: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/23.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
![Page 24: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/24.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
...and here
...and here
...and here
...and here
...and here
Tuesday, 29 October 13
![Page 25: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/25.jpg)
Where do I start?
Tuesday, 29 October 13
![Page 26: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/26.jpg)
> You are in a cluttered code base. Everywhere you turn you see different people’s styles.
> There are bugs to be fixed, and new features that must be implemented.
> Some users suggest improvements to your product, others will kill you if you change a thing.
> What do you want to do?
> _
Tuesday, 29 October 13
![Page 27: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/27.jpg)
Consiste
ncy
Readability
Consistency
Maintainability
Immutability
Testability
Speed
Tuesday, 29 October 13
![Page 28: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/28.jpg)
Design Goals
• Consistency
• Cleaner design
• Intuitive API
• Understandable Exceptions
• Test friendly
• Backwards compatible
Tuesday, 29 October 13
![Page 29: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/29.jpg)
In The North Tower...
Tuesday, 29 October 13
![Page 30: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/30.jpg)
Lack of consistencyTuesday, 29 October 13
![Page 31: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/31.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 32: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/32.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 33: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/33.jpg)
Why bother?
Tuesday, 29 October 13
![Page 34: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/34.jpg)
Our Solution
• Static analysis
• Build tools
• Discipline
Tuesday, 29 October 13
![Page 35: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/35.jpg)
Win!Tuesday, 29 October 13
![Page 36: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/36.jpg)
Meanwhile, in the East...
Tuesday, 29 October 13
![Page 37: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/37.jpg)
Other adventurers!Tuesday, 29 October 13
![Page 38: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/38.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 39: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/39.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 40: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/40.jpg)
Our Solution
• Get them onboard
• Use the Scala driver as the guinea pig
• Give Morphia some love
• Talk to Spring
• Tests are your friends
Tuesday, 29 October 13
![Page 41: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/41.jpg)
Lurking All Around...
Tuesday, 29 October 13
![Page 42: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/42.jpg)
Backward CompatibilityTuesday, 29 October 13
![Page 43: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/43.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 44: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/44.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 45: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/45.jpg)
Our Solution
• An architecture
• Supports both APIs
• ...bonus of supporting other APIs too
• Tests tell us if we’ve done it right
Tuesday, 29 October 13
![Page 46: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/46.jpg)
On the Southern Front
Tuesday, 29 October 13
![Page 47: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/47.jpg)
The Public APITuesday, 29 October 13
![Page 48: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/48.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 49: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/49.jpg)
>
>
What do you want to do?_
Tuesday, 29 October 13
![Page 50: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/50.jpg)
Our Solution
Tuesday, 29 October 13
![Page 51: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/51.jpg)
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
Tuesday, 29 October 13
![Page 52: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/52.jpg)
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
• Hack Days
• Conferences
• Early Access
Tuesday, 29 October 13
![Page 53: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/53.jpg)
Retrospective
Tuesday, 29 October 13
![Page 54: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/54.jpg)
I wish...
• I had asked more questions.
• Particularly “why”
• I better understood my priorities
• We could use the whiteboard more
• I had focussed on tests even more
Tuesday, 29 October 13
![Page 55: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/55.jpg)
Conclusion
Tuesday, 29 October 13
![Page 56: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/56.jpg)
Tuesday, 29 October 13
![Page 57: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/57.jpg)
Tools
Tuesday, 29 October 13
![Page 58: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/58.jpg)
Your Inventory
• Your Technical Skills
• Your Domain Knowledge
• Your Life Experience
• Your Questions
Tuesday, 29 October 13
![Page 59: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/59.jpg)
Environmental Inventory
• The Domain
• The People
• The Hardware
• Chosen Technology
• Existing Code / Application / Platform
Tuesday, 29 October 13
![Page 60: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/60.jpg)
Your Inventory Grows
• Skills you learn
• Tools you research
• Team changes
Tuesday, 29 October 13
![Page 61: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/61.jpg)
Some Examples
• Tests. Always a Good Thing
• Static Analysis
• An automated build
• Bug/feature tracker
• Visibility of WIP
Tuesday, 29 October 13
![Page 62: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/62.jpg)
Design is a Process, not a Document
Tuesday, 29 October 13
![Page 63: Design is a Process, not an Artefact - Trisha Gee (MongoDB)](https://reader035.vdocuments.site/reader035/viewer/2022081403/5551260fb4c905325d8b45cf/html5/thumbnails/63.jpg)
http://is.gd/java3mongodb
#JAXLondon
Questions
@trisha_gee
Tuesday, 29 October 13