132
Living Documentation Jumpstart Workshop cyrille martraire @cyriux

Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Embed Size (px)

Citation preview

Page 1: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Living Documentation!Jumpstart Workshop

cyrille martraire!@cyriux

Page 2: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

What do you expect?

Page 3: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 4: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

And could improve your code too?

Page 5: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

a source of frustration

Page 6: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

not enough outdated

CONSUMING DOC

Page 7: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

boring task prefer coding

PRODUCING DOC

Page 8: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

we can do better…

Page 9: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

much betterGood Documentation also

leads to better Design

Page 10: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Workshop

Page 11: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

An existing Java project (from the USB drive)

!

☞ Explore, Change, Learn

Page 12: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 13: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Passionate developer

PARIS Since 1999

!

@cyriux

Cyrille Martraire

Page 14: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Paris Software Craftsmanship Community

http://www.meetup.com/paris-software-craftsmanship/

Page 15: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

TDDBDDDDDLegacy

Page 16: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Documentation

Page 17: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Documentation(sorry)

Page 18: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 19: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

USING MS OFFICE

Page 20: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

*NOT* CODING

Page 21: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

We love executable stuff

Page 22: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Documentation, usually.

Page 23: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Obsolete & Misleading

Page 24: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Documentation Sucks

Page 25: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

I don’t want to maintain

documentation !

Page 26: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 27: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

If we adopt a new mindset

Page 28: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

What is documentation?

Question:

Page 29: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

What is documentation?

Page 30: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

What is documentation?the purpose of

Page 31: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Passing Knowledge

to other peopleTransmission

Page 32: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Passing Knowledge

to other peopleMaking Accessible

Page 33: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Passing Knowledge

for the futureMemory

Page 34: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Passing Knowledge

for the futureCompliance

Page 35: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

KNOWLEDGE KNOWLEDGE KNOWLEDGE KNOWLEDGE

Page 36: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

DOCUMENTATION NEEDED

Long-run

Critical

Large Audience

Page 37: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

DOCUMENTATION NEEDED

No Waste

Page 38: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

DOCUMENTATIONBecause we can often do better than

documentation

NO

Page 39: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

MOST KNOWLEDGE IS

ALREADY THERE

Where?

ObfuscatedNon-Accessible

Fragmented

Page 40: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 41: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

DOCUMENTATIONCapitalize on the knowledge that’s already there + a little bit more

NO

Page 42: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

CONVERSATIONS OVER

DOCUMENTATION

Page 43: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

!

!

Working Collectively

Page 44: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Workshop Now!

Page 45: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

EVERGREEN DOCUMENT

1

Page 46: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

README.md What’s wrong?

Page 47: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

*Shamelessly stolen from the nicely presented competitor Fleetio Fleet Management solution*[Fleetio](https://www.fleetio.com/fuel-cards)!# Project Phenix(Fuel Card Integration)!Project Manager: Andrea Willeave!## Syncs dailyTransaction data from the pump is automatically sent to Fleetio. No more manual entry of fuel receipts or downloading and importing fuel transactions across systems.!## Fuel Card Transaction MonitoringTransaction data from the pump are verified automatically against various rules to detect potential frauds: gas leakage, transactions too far from the vehicle etc.!*The class responsible for that is called FuelCardMonitoring. Anomalies are detected if the vehicle is further than 300m away from the gas station, of if the transaction quantity exceeds the vehicle tank size by more than 5%* !## Odometer readingsWhen drivers enter mileage at the pump, Fleetio uses that information to trigger service reminders. This time-saving approach helps you stay on top of maintenance and keeps your vehicles performing their best.!*This module is to be launched in February 2015. Please contact us for more details.*!## Smart fuel managementMPG and cost-per-mile are automatically calculated. Analyze your fuel spend from all angles - by vehicle, location, vehicle type, time frame.!!## Customers Words

Page 48: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Stable knowledge? Easy.

Page 49: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

*Shamelessly stolen from the nicely presented competitor Fleetio Fleet Management solution*[Fleetio](https://www.fleetio.com/fuel-cards)!# Project Phenix(Fuel Card Integration)!Project Manager: Andrea Willeave!## Syncs dailyTransaction data from the pump is automatically sent to Fleetio. No more manual entry of fuel receipts or downloading and importing fuel transactions across systems.!## Fuel Card Transaction MonitoringTransaction data from the pump are verified automatically against various rules to detect potential frauds: gas leakage, transactions too far from the vehicle etc.!*The class responsible for that is called FuelCardMonitoring. Anomalies are detected if the vehicle is further than 300m away from the gas station, of if the transaction quantity exceeds the vehicle tank size by more than 5%* !## Odometer readingsWhen drivers enter mileage at the pump, Fleetio uses that information to trigger service reminders. This time-saving approach helps you stay on top of maintenance and keeps your vehicles performing their best.!*This module is to be launched in February 2015. Please contact us for more details.*!## Smart fuel managementMPG and cost-per-mile are automatically calculated. Analyze your fuel spend from all angles - by vehicle, location, vehicle type, time frame.!!## Customers Words

Page 50: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 51: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Any Shameful Comments? Refactor!

Page 52: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

!

!

DOCUMENTATION

CODEis

2

Page 53: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 54: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Word Cloud3

Page 55: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 56: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

56

What  is  this  app  about?

Page 57: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

You  do  it  wrong!

Page 58: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Word Cloud: dispatching + Discuss

Page 59: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 60: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Word Cloud: fuel card monitoring

+ Compare

Page 61: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 62: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

LIVING GLOSSARY

4

Page 63: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

How do I representthe Ubiquitous Language

in practice?

Page 64: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Annotate domain-relevant classesSource code as reference

Page 65: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Living Glossary

Living Glossary Processor

Source Code & Annotations

Living Glossary always up-to-date

Page 66: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Run the Living Glossary

Page 67: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Custom Doclet to export Living Glossary

Page 68: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Bounded Context comment

Page 69: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Core Concepts

Page 70: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Class comment

Page 71: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

ANOTHER EXAMPLESent directly to end customers every week

Page 72: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Run the Living Glossary Make changes to the code

rename move to /infra

remove annotations change comments

Page 73: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

KNOWLEDGE AUGMENTATION

Page 74: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Code

Page 75: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Bounded Contexts are there

Page 76: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Bounded Contexts are there

Implicitly

Page 77: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Annotations

Page 78: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Bounded Contexts

Page 79: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Embedded Learning

Page 80: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Embedded Learning

Page 81: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Embedded Learning

Page 82: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Embedded Learning

Page 83: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Embedded LearningLearn on the job

Page 84: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

LIVING DIAGRAM

4

Page 85: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Run the Living Diagram

Page 86: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Living Diagram

Living Diagram

Processor

Source Code

Living Diagram always up-to-date

Page 87: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Run the Living Diagram Make changes to the code Run the Living Diagram

Page 88: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Example: Hexagonal Architecture

Page 89: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Domain Model inside Infrastructure Outside

Page 90: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Design is already there

Page 91: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Design is already thereImplicitly

Page 92: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Just rely on documented naming conventions

Page 93: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

*.domain!*.infra!NOT *Test

Page 94: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Living Diagram

Living Diagram

Processor

Source Code

Living Diagram always up-to-date

Page 95: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

95

tada!

Page 96: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 97: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

CONTENT FILTERING (CURATION)

is KEY

Page 98: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 99: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

No Value

Page 100: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 101: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

1 Diagram 1 Purpose

Page 102: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Example: Hexagonal Architecture

Page 103: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 104: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Fix the code Run the Living Diagram

Page 105: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 106: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

OOPS!

Page 107: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Reality Check

Page 108: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

https://www.structurizr.com/ by Simon Brown

Page 109: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

https://www.structurizr.com/

Page 110: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

LISTEN TO THE DOCUMENTATION

FRUSTRATIONS

Page 111: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Hard to do the Living Glossary?

A signal!

Page 112: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Hard to do the Living Diagrams?

A signal!

Page 113: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Programming by

Coincidence

Page 114: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 115: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Know what you’re doing ->

Already half-documented

Page 116: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

ANYBODY CAN !APPRECIATE!IT’S A MESS

Page 117: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

PRESSURE TO !IMPROVE DESIGN

Page 118: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Simpler Design Less documentation needed

Page 119: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

More standard Less documentation needed

!fogus

@fogus

Page 120: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Fix your workflow

Write code Write tests Write doc

Write tests = write doc Write code = write doc

From Mikko Ohtamaa

Page 121: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

COOL!

Page 122: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

In Closing

Page 123: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

https://leanpub.com/livingdocumentation

BUY MY BOOK!

Page 124: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 125: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 126: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Boring Documentation is dead

Long Live Living Documentation!

Page 127: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Not about particular techniques

!

Reconsider dealing with the knowledge

Page 128: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Share Your Ideas & Experiments

Page 129: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015
Page 130: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Questions? Did you try similar things too?

Let’s discuss!@cyriux

Page 131: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Follow me @cyriux !

Slides: slideshare.net/cyriux Blog: cyrille.martraire.com

!

In Paris? Join !

Page 132: Cyrille Martraire: Living Documentation Jumpstart at I T.A.K.E. Unconference 2015

Merci