SlideShare a Scribd company logo
Matthias Noback
@matthiasnoback
Living Documentation
training.matthiasnoback.nl
Documentation:
Quite an emotional matter
Untrustworthy
Boring
Ugly
Failure
Loser
Greek Tragedy
Horrible stuff
Greek Tragedy
The Chorus
Masks for the
Chorus
Exaggerated, non-
individualised emotions
Catharsis
Aristotle
Living Documentation (presentation)
#NoDocumentation
A SINGLE MAN
ReST & Sphinx
Living Documentation (presentation)
Living Documentation (presentation)
Living Documentation (presentation)
Commit rights for the PM
The Dreaded
Definition of Done
$ git commit --no-verify
Living Documentation (presentation)
Emotional stuff!
Clean
Reliable
Fun
Good-looking
What's the problem?
To write code
We love it
Process
1. Write code
2. Write docs
Process
1. Write code
2. Write tests
Provide separate
estimations
Skip if deadline is
near
Process
1. Write tests
2. Write code
TDD!
TDD!
TDD!
Process
1. Write docs
2. Write code
DDD!
DDD!
DDD!
Awesome locations
Wiki
Confluence
Balsamiq
Gliffy
Word file
PDF file
Living Documentation (presentation)
Living Documentation (presentation)
Living Documentation (presentation)
You're
doing it
wrong
Living Documentation (presentation)
Living Documentation (presentation)
Why bad?
• Requires manual transcription
• No reconciliation mechanism
• Hard to refactor
• Impossible to diff
• (Hard to copy-paste)
The only proper location
Inside your project's source code repository
Code changes /w
documentation changes
History & versioning
No rights mgmt
Wait a minute
Code changes /w
documentation changes
Living Documentation (presentation)
Living Documentation (presentation)
Self-documenting code
Code that doesn't need comments documentation
Living Documentation (presentation)
Meaningful names
Standards &
Conventions
Ubiquitous Language
Specifications
(for units of code)
Specifications
(for the application as a whole)
Architecture & 

design choices
Reflected in artefacts
Living Documentation (presentation)
Living Documentation (presentation)
HOUSE!!!!
Code Tests
Documentation
Acceptance criteria
CodeTestsDocumentation
Acceptance criteria
What if we...
1. Write code, guided by tests
2. Reflect design and architecture choices in the code
3. Let code and tests be docs themselves
https://leanpub.com/livingdocumentation
Cyrille Martraire
Vocabulary and pattern
language
Separate Activities
Manual Transcription
Redundant Knowledge
Information Graveyard
Misleading Help
...
Knowledge
Store &
Transfer
Knowledge
Generic
Specific
Learn generic
knowledge
Document specific
knowledge
Default: no
documentation
What needs to be documented?
• Knowledge that is of interest for a long period.
• Knowledge that is of interest to a large number
of people.
• Knowledge that is valuable or critical.
"Each instruction typed in a programming
language is a decision."
"In a software project most of the knowledge is
present in some form somewhere in the
artefacts."
"The best place to store documentation is on
the documented thing itself."
Locations... revisited
Wiki
Confluence
Balsamiq
Word file
PDF file
The Ultimate Location
Stakeholder-
oriented 

auto-built
documentation
website
Read-only
Always up-to-date Windows XP-friendly
Complete
Good-looking External
Ideas
Readable specifications
testCollect()
becomes
it_collects_directories_directly_under_source_roots()
Specifications
Feature:
In order to ...
As a ...
I want to be able to ...
Scenario:
Given ...
When ...
Then ...
Documentation!
Reconciliation
mechanism!
Annotations
@Get
@Post
@Route
Annotations
@Adapter
@Proxy
Annotations
@DataTransferObject
@Entity
@ValueObject
@Immutable
Annotations
@BoundedContext
@CoreConcept
@Landmark
Highlight
Living Documentation (presentation)
Directory/namespace structure
src
Meetup.com
Membership
...
Organizing
Domain
Application
Infrastructure
Persistence
MySQL
Redis
Applications
Bounded contexts
Layers
Ports
Adapters
Living Documentation (presentation)
Refactorable
The documentation is (near) the code
Up-to-date
No manual transcription or reconciliation needed
Fun factor
Automated, good-looking
"If it’s not fun, you’ll not want to do it so often
and the practice will progressively disappear."
Insightful
Feedback on design, UL, etc.
Principles of Living
Documentation
1. Reliable
2. Low-Effort
3. ...
3. Collaborative
4. Insightful
Clean
Reliable
Fun
Good-looking
Thanks for attending!
Exciting

More Related Content

Living Documentation (presentation)