Design is a process, not a Document

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

description

Presentation given at the Virtual JUG 21st Nov 2013. Video here: http://www.youtube.com/watch?v=GixwXNlZ7dI

Transcript of Design is a process, not a Document

Page 1: Design is a process, not a Document

Trisha Gee, Java Driver Developer

#vJUG

Design is a Process, not a Document

@trisha_gee

Page 2: Design is a process, not a Document

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

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

Agile Design

<This Page Left Intentionally Blank>

Page 5: Design is a process, not a Document

Design is a Process, not a Document

Page 6: Design is a process, not a Document

The Problem

Page 7: Design is a process, not a Document
Page 8: Design is a process, not a Document
Page 9: Design is a process, not a Document
Page 10: Design is a process, not a Document
Page 11: Design is a process, not a Document

Constraints:

Page 12: Design is a process, not a Document

Backwards Compatibility

Page 13: Design is a process, not a Document

>

>

What do you want to do?_

Page 14: Design is a process, not a Document

Design is a Process, not a Document

Page 15: Design is a process, not a Document

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

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

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

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

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

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

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

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

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

Where do I start?

Page 25: Design is a process, not a Document

> 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

Consiste

ncy

Readability

Consistency

Maintainability

Immutability

Testability

Speed

Page 27: Design is a process, not a Document

Design Goals

• Consistency

• Cleaner design

• Intuitive API

• Understandable Exceptions

• Test friendly

• Backwards compatible

Page 28: Design is a process, not a Document

In The North Tower...

Page 29: Design is a process, not a Document

Lack of consistency

Page 30: Design is a process, not a Document

>

>

What do you want to do?_

Page 31: Design is a process, not a Document

Why bother?

Page 32: Design is a process, not a Document

Our Solution

• Static analysis

• Build tools

• Discipline

Page 33: Design is a process, not a Document

Win!

Page 34: Design is a process, not a Document

Meanwhile, in the East...

Page 35: Design is a process, not a Document

Other adventurers!

Page 36: Design is a process, not a Document

>

>

What do you want to do?_

Page 37: Design is a process, not a Document

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

Lurking All Around...

Page 39: Design is a process, not a Document

Backward Compatibility

Page 40: Design is a process, not a Document

>

>

What do you want to do?_

Page 41: Design is a process, not a Document

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

On the Southern Front

Page 43: Design is a process, not a Document

The Public API

Page 44: Design is a process, not a Document

>

>

What do you want to do?_

Page 45: Design is a process, not a Document

Our Solution

Page 46: Design is a process, not a Document

Our Solution

• Committees

• Documents / Spreadsheets

• Meetings

• Research

Page 47: Design is a process, not a Document

Our Solution

• Committees

• Documents / Spreadsheets

• Meetings

• Research

• Hack Days

• Conferences

• Early Access

Page 48: Design is a process, not a Document

Retrospective

Page 49: Design is a process, not a Document

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

Conclusion

Page 51: Design is a process, not a Document
Page 52: Design is a process, not a Document

Tools

Page 53: Design is a process, not a Document

Your Inventory

• Your Technical Skills

• Your Domain Knowledge

• Your Life Experience

• Your Questions

Page 54: Design is a process, not a Document

Environmental Inventory

• The Domain

• The People

• The Hardware

• Chosen Technology

• Existing Code / Application / Platform

Page 55: Design is a process, not a Document

Your Inventory Grows

• Skills you learn

• Tools you research

• Team changes

Page 56: Design is a process, not a Document

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

Design is a Process, not a Document

Page 58: Design is a process, not a Document

http://is.gd/java3mongodb

#vJUG

Questions

@trisha_gee