SlideShare a Scribd company logo
#JAXLondon

Design is a Process, not a
Document
Trisha Gee, Java Driver Developer
@trisha_gee

Tuesday, 29 October 13
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
Tuesday, 29 October 13
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
<This Page Left Intentionally Blank>

Agile Design
Tuesday, 29 October 13
Design is a Process, not
a Document

Tuesday, 29 October 13
The Problem

Tuesday, 29 October 13
Tuesday, 29 October 13
Tuesday, 29 October 13
Tuesday, 29 October 13
Tuesday, 29 October 13
Constraints:

Tuesday, 29 October 13
Backwards
Compatibility

Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
Design is a Process, not
a Document

Tuesday, 29 October 13
Bugs and
Defects
Unknown
Architecture
On Time and
Under Budget

New Features
Inconsistencies

Lack of
Experience

Tuesday, 29 October 13

Unclear
Objectives
Bugs and
Defects
Unknown
Architecture
On Time and
Under Budget

New Features
Inconsistencies

You Are Here
Lack of
Experience

Tuesday, 29 October 13

Unclear
Objectives
Bugs and
Defects
Unknown
Architecture
On Time and
Under Budget

New Features
Inconsistencies

You Are Here
Lack of
Experience

Tuesday, 29 October 13

Unclear
Objectives
Bugs and
Defects

...and here

New Features

Unknown
Architecture

...and here

On Time and
Under Budget

...and here
Inconsistencies

You Are Here
...and here

Unclear
Objectives

Lack of
Experience

...and here
Tuesday, 29 October 13
Bugs and
Defects

...and here

New Features

Unknown
Architecture

...and here

On Time and
Under Budget

...and here
Inconsistencies

You Are Here
...and here

Unclear
Objectives

Lack of
Experience

...and here
Tuesday, 29 October 13
Bugs and
Defects

...and here

New Features

Unknown
Architecture

...and here

On Time and
Under Budget

...and here
Inconsistencies

You Are Here
...and here

Unclear
Objectives

Lack of
Experience

...and here
Tuesday, 29 October 13
Bugs and
Defects

...and here

New Features

Unknown
Architecture

...and here

On Time and
Under Budget

...and here
Inconsistencies

You Are Here
...and here

Unclear
Objectives

Lack of
Experience

...and here
Tuesday, 29 October 13
Bugs and
Defects

...and here

New Features

Unknown
Architecture

...and here

On Time and
Under Budget

...and here
Inconsistencies

You Are Here
...and here

Unclear
Objectives

Lack of
Experience

...and here
Tuesday, 29 October 13
Bugs and
Defects

...and here

New Features

Unknown
Architecture

...and here

On Time and
Under Budget

...and here
Inconsistencies

You Are Here
...and here

Unclear
Objectives

Lack of
Experience

...and here
Tuesday, 29 October 13
Where do I start?

Tuesday, 29 October 13
> 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
Maintainability

Spe

ed

Tes
tabi
lity
onsistency
C

Tuesday, 29 October 13

si
on
C

cy
ten
s

ability
Read

Im

mu
t

ab
il

ity
Design Goals
• Consistency
• Cleaner design
• Intuitive API
• Understandable Exceptions
• Test friendly
• Backwards compatible

Tuesday, 29 October 13
In The North Tower...

Tuesday, 29 October 13
Lack of consistency
Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
Why bother?

Tuesday, 29 October 13
Our Solution
• Static analysis
• Build tools
• Discipline

Tuesday, 29 October 13
Win!
Tuesday, 29 October 13
Meanwhile, in the East...

Tuesday, 29 October 13
Other adventurers!
Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
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
Lurking All Around...

Tuesday, 29 October 13
Backward Compatibility
Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
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
On the Southern Front

Tuesday, 29 October 13
The Public API
Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
> What do you want
to do?
>_

Tuesday, 29 October 13
Our Solution

Tuesday, 29 October 13
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research

Tuesday, 29 October 13
Our Solution
• Committees
• Documents / Spreadsheets
• Meetings
• Research
• Hack Days
• Conferences
• Early Access
Tuesday, 29 October 13
Retrospective

Tuesday, 29 October 13
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
Conclusion

Tuesday, 29 October 13
Tuesday, 29 October 13
Tools

Tuesday, 29 October 13
Your Inventory
• Your Technical Skills
• Your Domain Knowledge
• Your Life Experience
• Your Questions

Tuesday, 29 October 13
Environmental Inventory
• The Domain
• The People
• The Hardware
• Chosen Technology
• Existing Code / Application / Platform

Tuesday, 29 October 13
Your Inventory Grows
• Skills you learn
• Tools you research
• Team changes

Tuesday, 29 October 13
Some Examples
• Tests. Always a Good Thing
• Static Analysis
• An automated build
• Bug/feature tracker
• Visibility of WIP

Tuesday, 29 October 13
Design is a Process, not
a Document

Tuesday, 29 October 13
#JAXLondon
@trisha_gee

Questions
http://is.gd/java3mongodb

Tuesday, 29 October 13

More Related Content

PPT
How Java got its Mojo Back - James Governor (Redmonk)
PPTX
Interactive media applications
PDF
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
PDF
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
PDF
The state of the art biorepository at ILRI
PDF
Are you better than a coin toss? - Richard Warbuton & John Oliver (jClarity)
PDF
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
PPTX
Bringing your app to the web with Dart - Chris Buckett (Entity Group)
How Java got its Mojo Back - James Governor (Redmonk)
Interactive media applications
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)
The state of the art biorepository at ILRI
Are you better than a coin toss? - Richard Warbuton & John Oliver (jClarity)
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...
Bringing your app to the web with Dart - Chris Buckett (Entity Group)

Viewers also liked (18)

PPTX
45 second video proposal
PPTX
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...
PPTX
Legal and ethical considerations redone
PDF
Big Events, Mob Scale - Darach Ennis (Push Technology)
PDF
Scaling Scala to the database - Stefan Zeiger (Typesafe)
PDF
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
PPTX
Interactive media applications
PDF
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...
PDF
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
PDF
Big data from the LHC commissioning: practical lessons from big science - Sim...
PPTX
Practical Performance: Understand the Performance of Your Application - Chris...
PPTX
Why other ppl_dont_get_it
PDF
Databases and agile development - Dwight Merriman (MongoDB)
PDF
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
PDF
Streams and Things - Darach Ennis (Ubiquiti Networks)
PDF
How Windows 10 will change the way we use devices
PDF
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
PDF
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
45 second video proposal
A real-time architecture using Hadoop & Storm - Nathan Bijnens & Geert Van La...
Legal and ethical considerations redone
Big Events, Mob Scale - Darach Ennis (Push Technology)
Scaling Scala to the database - Stefan Zeiger (Typesafe)
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)
Interactive media applications
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...
Big data from the LHC commissioning: practical lessons from big science - Sim...
Practical Performance: Understand the Performance of Your Application - Chris...
Why other ppl_dont_get_it
Databases and agile development - Dwight Merriman (MongoDB)
What makes Groovy Groovy - Guillaume Laforge (Pivotal)
Streams and Things - Darach Ennis (Ubiquiti Networks)
How Windows 10 will change the way we use devices
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)
Ad

Similar to Design is a Process, not an Artefact - Trisha Gee (MongoDB) (20)

PDF
Design is a process, not a Document
PDF
Good Code / Bad Code
PDF
Designing Object Oriented Software - lecture slides 2013
PPTX
Software Design
PPTX
Chapter 08
PPT
Pressman ch-11-component-level-design
PPT
Seii unit7 component-level-design
PDF
Designing for Tomorrow, Delivering Today
PDF
Software Engineering 2nd Edition David C. Kung
PDF
Software Engineering 2nd Edition David C. Kung
PDF
L16 Documenting Software
PPT
OOSE Unit 4 PPT.ppt
PPT
Oose unit 4 ppt
PDF
1_Introduction & Process & Development Life Cycle.pdf
PDF
Raising the Bar
PDF
Software development PROCESS
PDF
Usable Software Design
PPT
Unit4
PPTX
Lecture 3 software_engineering
PPTX
Software Design And Architecture Introduction
Design is a process, not a Document
Good Code / Bad Code
Designing Object Oriented Software - lecture slides 2013
Software Design
Chapter 08
Pressman ch-11-component-level-design
Seii unit7 component-level-design
Designing for Tomorrow, Delivering Today
Software Engineering 2nd Edition David C. Kung
Software Engineering 2nd Edition David C. Kung
L16 Documenting Software
OOSE Unit 4 PPT.ppt
Oose unit 4 ppt
1_Introduction & Process & Development Life Cycle.pdf
Raising the Bar
Software development PROCESS
Usable Software Design
Unit4
Lecture 3 software_engineering
Software Design And Architecture Introduction
Ad

More from jaxLondonConference (16)

PDF
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
PDF
JVM Support for Multitenant Applications - Steve Poole (IBM)
PDF
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
PDF
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
PDF
Java Testing With Spock - Ken Sipe (Trexin Consulting)
PDF
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
PDF
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
PPT
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
PDF
The Curious Clojurist - Neal Ford (Thoughtworks)
PPTX
TDD at scale - Mash Badar (UBS)
PDF
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
PDF
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
PPTX
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
PPTX
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
PPTX
Large scale, interactive ad-hoc queries over different datastores with Apache...
PDF
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...
JVM Support for Multitenant Applications - Steve Poole (IBM)
What You Need to Know About Lambdas - Jamie Allen (Typesafe)
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...
Java Testing With Spock - Ken Sipe (Trexin Consulting)
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...
Exploring the Talend unified Big Data toolset for sentiment analysis - Ben Br...
The Curious Clojurist - Neal Ford (Thoughtworks)
TDD at scale - Mash Badar (UBS)
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...
Large scale, interactive ad-hoc queries over different datastores with Apache...
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...

Recently uploaded (20)

PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
Big Data Technologies - Introduction.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
cuic standard and advanced reporting.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
A Presentation on Artificial Intelligence
PPT
Teaching material agriculture food technology
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Spectral efficient network and resource selection model in 5G networks
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Big Data Technologies - Introduction.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Reach Out and Touch Someone: Haptics and Empathic Computing
The AUB Centre for AI in Media Proposal.docx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
cuic standard and advanced reporting.pdf
MYSQL Presentation for SQL database connectivity
Unlocking AI with Model Context Protocol (MCP)
Understanding_Digital_Forensics_Presentation.pptx
Modernizing your data center with Dell and AMD
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
A Presentation on Artificial Intelligence
Teaching material agriculture food technology
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Encapsulation_ Review paper, used for researhc scholars
Digital-Transformation-Roadmap-for-Companies.pptx
CIFDAQ's Market Insight: SEC Turns Pro Crypto
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Spectral efficient network and resource selection model in 5G networks

Design is a Process, not an Artefact - Trisha Gee (MongoDB)