Design is a process, not a Document
-
Upload
trisha-gee -
Category
Technology
-
view
4.257 -
download
3
description
Transcript of Design is a process, not a Document
![Page 1: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/1.jpg)
Trisha Gee, Java Driver Developer
#vJUG
Design is a Process, not a Document
@trisha_gee
![Page 2: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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.html
![Page 3: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
![Page 4: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/4.jpg)
Agile Design
<This Page Left Intentionally Blank>
![Page 5: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/5.jpg)
Design is a Process, not a Document
![Page 6: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/6.jpg)
The Problem
![Page 7: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/7.jpg)
![Page 8: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/8.jpg)
![Page 9: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/9.jpg)
![Page 10: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/10.jpg)
![Page 11: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/11.jpg)
Constraints:
![Page 12: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/12.jpg)
Backwards Compatibility
![Page 13: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/13.jpg)
>
>
What do you want to do?_
![Page 14: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/14.jpg)
Design is a Process, not a Document
![Page 15: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/15.jpg)
Unknown Architecture
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
![Page 16: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/16.jpg)
Unknown Architecture
You Are Here
On Time and Under Budget
Lack of Experience
Inconsistencies
New Features
Bugs and Defects
Unclear Objectives
![Page 17: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
![Page 18: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
...and here
...and here
...and here
...and here
...and here
![Page 19: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
![Page 20: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
![Page 21: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
![Page 22: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
![Page 23: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/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
![Page 24: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/24.jpg)
Where do I start?
![Page 25: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/25.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?
> _
![Page 26: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/26.jpg)
Consiste
ncy
Readability
Consistency
Maintainability
Immutability
Testability
Speed
![Page 27: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/27.jpg)
Design Goals
• Consistency
• Cleaner design
• Intuitive API
• Understandable Exceptions
• Test friendly
• Backwards compatible
![Page 28: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/28.jpg)
In The North Tower...
![Page 29: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/29.jpg)
Lack of consistency
![Page 30: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/30.jpg)
>
>
What do you want to do?_
![Page 31: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/31.jpg)
Why bother?
![Page 32: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/32.jpg)
Our Solution
• Static analysis
• Build tools
• Discipline
![Page 33: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/33.jpg)
Win!
![Page 34: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/34.jpg)
Meanwhile, in the East...
![Page 35: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/35.jpg)
Other adventurers!
![Page 36: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/36.jpg)
>
>
What do you want to do?_
![Page 37: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/37.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
![Page 38: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/38.jpg)
Lurking All Around...
![Page 39: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/39.jpg)
Backward Compatibility
![Page 40: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/40.jpg)
>
>
What do you want to do?_
![Page 41: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/41.jpg)
Our Solution
• An architecture
• Supports both APIs
• ...bonus of supporting other APIs too
• Tests tell us if we’ve done it right
![Page 42: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/42.jpg)
On the Southern Front
![Page 43: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/43.jpg)
The Public API
![Page 44: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/44.jpg)
>
>
What do you want to do?_
![Page 45: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/45.jpg)
Our Solution
![Page 46: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/46.jpg)
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
![Page 47: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/47.jpg)
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
• Hack Days
• Conferences
• Early Access
![Page 48: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/48.jpg)
Retrospective
![Page 49: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/49.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
![Page 50: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/50.jpg)
Conclusion
![Page 51: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/51.jpg)
![Page 52: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/52.jpg)
Tools
![Page 53: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/53.jpg)
Your Inventory
• Your Technical Skills
• Your Domain Knowledge
• Your Life Experience
• Your Questions
![Page 54: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/54.jpg)
Environmental Inventory
• The Domain
• The People
• The Hardware
• Chosen Technology
• Existing Code / Application / Platform
![Page 55: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/55.jpg)
Your Inventory Grows
• Skills you learn
• Tools you research
• Team changes
![Page 56: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/56.jpg)
Some Examples
• Tests. Always a Good Thing
• Static Analysis
• An automated build
• Bug/feature tracker
• Visibility of WIP
![Page 57: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/57.jpg)
Design is a Process, not a Document
![Page 58: Design is a process, not a Document](https://reader034.fdocuments.in/reader034/viewer/2022052410/5486eb0cb4af9f780d8b528a/html5/thumbnails/58.jpg)
http://is.gd/java3mongodb
#vJUG
Questions
@trisha_gee