63
Trisha Gee, Java Driver Developer #JAXLondon Design is a Process, not a Document @trisha_gee Tuesday, 29 October 13

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

Embed Size (px)

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?

Citation preview

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

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)

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)

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)

Agile Design

<This Page Left Intentionally Blank>

Tuesday, 29 October 13

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

Design is a Process, not a Document

Tuesday, 29 October 13

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

The Problem

Tuesday, 29 October 13

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

Tuesday, 29 October 13

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

Tuesday, 29 October 13

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

Tuesday, 29 October 13

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

Tuesday, 29 October 13

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

Constraints:

Tuesday, 29 October 13

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

Backwards Compatibility

Tuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

Design is a Process, not a Document

Tuesday, 29 October 13

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

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)

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)

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)

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)

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)

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)

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)

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)

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)

Where do I start?

Tuesday, 29 October 13

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

> 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)

Consiste

ncy

Readability

Consistency

Maintainability

Immutability

Testability

Speed

Tuesday, 29 October 13

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

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)

In The North Tower...

Tuesday, 29 October 13

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

Lack of consistencyTuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

Why bother?

Tuesday, 29 October 13

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

Our Solution

• Static analysis

• Build tools

• Discipline

Tuesday, 29 October 13

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

Win!Tuesday, 29 October 13

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

Meanwhile, in the East...

Tuesday, 29 October 13

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

Other adventurers!Tuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

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)

Lurking All Around...

Tuesday, 29 October 13

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

Backward CompatibilityTuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

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)

On the Southern Front

Tuesday, 29 October 13

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

The Public APITuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

>

>

What do you want to do?_

Tuesday, 29 October 13

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

Our Solution

Tuesday, 29 October 13

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

Our Solution

• Committees

• Documents / Spreadsheets

• Meetings

• Research

Tuesday, 29 October 13

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

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)

Retrospective

Tuesday, 29 October 13

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

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)

Conclusion

Tuesday, 29 October 13

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

Tuesday, 29 October 13

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

Tools

Tuesday, 29 October 13

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

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)

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)

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)

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)

Design is a Process, not a Document

Tuesday, 29 October 13

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

http://is.gd/java3mongodb

#JAXLondon

Questions

@trisha_gee

Tuesday, 29 October 13