This document discusses code documentation and project documentation. It addresses the needs, tools, and challenges for both coding and documenting. Some key points made are:
- Code and documentation have different needs for writing, reading, reviewing, etc.
- Tools used for code like Git differ from those for documentation like Confluence.
- Documentation is important but often neglected; it needs to be organized, standardized, discoverable, and maintained over time.
- Different types of documentation are needed for specifications, deployments, runtimes, implementations, architectures and more.
- Documentation needs to be tailored for different audiences like end users, developers, and contributors.
15. $ Code is a type of documentation
“Code is self documenting”
16. $ Code is not sufficient
Code is not sufficient to document a project:
• Implicit relation with the infrastructure (ex: at runtime)
• Don’t offer a high-level view (ex: brainstorm)
• Cannot describe its own expected behavior (ex: bug)
17. $ Documentation for a project
Deployment
Specification
Runtime
Implementation documentation
code, dependency, test …
architecture, behavior, usage, API, SLA …
dependency, monitoring, resources, data
CI/CD, artifact, config
22. $ Criteo documentation
The Criteo documentation could better organized:
• Raise awareness and train the Criteo employees
• Maintain and clean our documentations
• Standardize our documentationswith a common culture
• Value the people that documents
• Develop/use tools to reduce the manual documentation
23. $ A lot of tools for documentation @Criteo
Perpetuo
Jenkins/Gradle
Datadoc
Evergreen
SwaggerCatalog
Grafana
Confluence JIRA
IntelliJ
Gerrit
24. # Documentation is missing
“Everyone wants to have documentation,
but nobody wants to produce it”
25.
26. # What is documentation paradigm?
“It is harder to read code than to write it”
“It is harder to write doc than to read it”
27. # Find the right cursor
Under-documenting
vs
Over-documenting
28. # Segment your documentation
Human organization
Contributors
Developers
End-Users