SlideShare une entreprise Scribd logo
1  sur  47
Documentation
for
Developers
by
Michael E. Marotta
mike49mercury@gmail.com
Presented to “Austin on Rails”
May 28, 2013
As a contractor, I have
worked for many
companies, on many
platforms over the years.
I wrote my first user
manual for Oldsmobile in
January 1984.
What I bring to you came
from insight, learning,
correcting mistakes,
testing theories, and
developing a consistent
and proven set of
guidelines for success.
Rule #1
These tools work
if you use them.
Rule #0
To do it right,
you must
love
the doing.
This is from The Fountainhead by Ayn Rand. “To do things for other people,
you must be the kind of man who can get things done. But to get things done,
you must love the doing.” (If you do not love writing documentation, find
someone who does.)
Definition
Luck
is the combination of
hard work
and
planning.
This is usually attributed to the Marine Corps. You cannot just throw it together
and hope for the best.
Axiom:
Documentation
is specification.
We will see that the way to begin the process is to create the final output first.
To create a complex software system and then call in the technical writer is to
build a house without plans and then call in a drafter.
Successful pilots spend as much or more time planning the flight than being in the air.
The most popular store for private pilots sells 153 different flight planning tools.
Jeppesen for commercial pilots has about the same depth of offerings.
In 1976, Joseph Weizenbaum of the
MIT Artificial Intelligence Lab compared
programmers to gamblers.
Like superstitious gamblers, programmers believe that one more patch, one more fix will solve
their problems. But their problems began with their lack of understanding of the substantive
literature of their field, whether it be crystallography, or retail sales.
“You could make a pretty good word processor with this.” -- Geoff Rarick
The tools presented here are variously adaptable. Use them as you can.
the only “don’t”
the only “thou shalt not”
Do not design in code.
Visio Software Charts
Visio Database charts
Basic Flowchart
Cause and Effect Diagram
Cross Functional Flowchart
Visio Business Processes
Entity Relationship Diagram
Cause-Effect Diagram
A conclusion is the place at which you stopped thinking.
The best way to learn something is to teach it to someone else.
Warnier-Orr Diagrams
Warnier-Orr Diagrams
Nassi-Shneiderman
Diagrams
Definition
Do While
Do Until
If-Then-Else
Nassi-Shneiderman Diagrams
Nassi-Shneiderman Diagrams
http://www.edrawsoft.com/Nassi-Schneiderman.php
Create
Account
Search
database
for
account.
Query
until
customer
name is
found
Item
in
Stock?
GOOD WRITING
• SHORT, DECLARATIVE SENTENCES
• ACTIVE VOICE
• PRESENT TENSE
• THIRD PERSON
(OR SECOND, AS NEEDED)
• INDICATIVE MOOD
READABILITY
is the only measure.
… and what you can measure, you can improve.
The examples here show the metrics of readability provided by Microsoft Word.
The Sermon on the Mount
Fifth grade reading level.
The Declaration of Independence
Grade 18 reading level: high school plus 6 years.
Grade 10.8
Grade 10.4
Peer-reviewed journal article for the British Association for the
History of Astronomy. Technical writing can be easy to read.
IT Hardware Disposal Policy Reading level 12.9
100% passive voice. Almost college level. Will these policies be followed?
IT Hardware Disposal Policy Reading level
12.9
I marked up the problems. Then, I fixed them.
One grade level lower. Active voice.
Millington’s Rule
If you are following the
manual,
then you are not using
the current version.
Bush ploy foxes pundits.
Languages change over time. English is a global language. Your local
vernacular may not be understood even by everyone in your office.
“YOU MUST COMMENT
YOUR CODE”
So, I went to Ruby repositories, looking for examples of bad documentation.
I was willing to spend an hour or more, drilling down, and digging deep
to come up with egregious examples.
It was not that hard.
The problems were not “egregious” only common, many,
and easy to fix or avoid.
Of course, I was interested in “readability.”
A Ruby method to measure it
would be a valuable addition to my own box of tools.
Same
Summary and
Description
“Extractor”
The program should be called “Extractor”
because it does not measure readability.
Rather, it gathers the text from a webpage,
based on the tags around the text.
Rdoc versus Weizenbaum
The MS-Word Grammar Checker is not the only standard.
The example below reads at an 11.8 level.
That could be improved, of course.
Among real problems are the assumption of previous knowledge
and the meaningless phrases.
At root, the program simply does not do what it implicitly claims.
Rdoc is not a code parser that creates documentation.
Rather, the program reads the source code, identifies comment tags,
and reformats the comments into HTML presentation.
If the comments are meaningless or missing entirely,
Rdoc does nothing for you.
And the documentation has a bug: an unclosed parenthesis.
Rdoc versus Weizenbaum
http://rdoc.sourceforge.net/
http://rdoc.sourceforge.net/doc/files/rdoc/parsers/parse_c_rb.html
• Rdoc is an application that produces documentation for
one or more Ruby source files. We work similarly to
JavaDoc, parsing the source, and extracting the
definition for classes, modules, and methods (along with
includes and requires). We associate with these optional
documentation contained in the immediately preceding
comment block, and then render the result using a
pluggable output formatter. (Currently, HTML is the only
supported format. Markup is a library that converts plain
text into various output formats. The Markup library is
used to interpret the comment blocks that Rdoc uses to
document methods, classes, and so on.
See Sally work.
Sally plans her
work.
Run, Sally, run.
Sallie Mae
The student loan company delivers
excellent online support.
Prompts are clear and correct.
I never found a bug.
When you hover over a field,
the pop-up tells you
what you need to know.
Three examples follow.
UNDERSTANDABLE
OUTSELLS
INCOMPREHENSIBLE
CONSEQUENCES
Contact Information
• mike49mercury@gmail.com
• NecessaryFacts.blogspot.com
The End

Contenu connexe

Tendances

Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteChristian Heilmann
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteChristian Heilmann
 
8 Benefits of Coding
8 Benefits of Coding8 Benefits of Coding
8 Benefits of CodingRoboGarden
 
On Readability of Code
On Readability of CodeOn Readability of Code
On Readability of CodeArun Saha
 
From legacy to mobile app developer
From legacy to mobile app developerFrom legacy to mobile app developer
From legacy to mobile app developerJoey Rigor
 
How to contribute back to Open Source
How to contribute back to Open SourceHow to contribute back to Open Source
How to contribute back to Open SourceWojciech Koszek
 
Start learning code with an idea
Start learning code with an ideaStart learning code with an idea
Start learning code with an ideaJoey Rigor
 
proper care and feeding for your junior developer
proper care and feeding for your junior developerproper care and feeding for your junior developer
proper care and feeding for your junior developerEric St
 
A living hell - lessons learned in eight years of parsing real estate data
A living hell - lessons learned in eight years of parsing real estate data  A living hell - lessons learned in eight years of parsing real estate data
A living hell - lessons learned in eight years of parsing real estate data lokku
 
Lessons learned in doing lots with few people
Lessons learned in  doing lots with few peopleLessons learned in  doing lots with few people
Lessons learned in doing lots with few peoplelokku
 
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerFrom TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerAlexandro Colorado
 
Cracking The Technical Interview
Cracking The Technical InterviewCracking The Technical Interview
Cracking The Technical Interviewcareercup
 

Tendances (14)

Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynote
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynote
 
8 Benefits of Coding
8 Benefits of Coding8 Benefits of Coding
8 Benefits of Coding
 
On Readability of Code
On Readability of CodeOn Readability of Code
On Readability of Code
 
From legacy to mobile app developer
From legacy to mobile app developerFrom legacy to mobile app developer
From legacy to mobile app developer
 
The journey to become a solid developer
The journey to become a solid developer The journey to become a solid developer
The journey to become a solid developer
 
How to contribute back to Open Source
How to contribute back to Open SourceHow to contribute back to Open Source
How to contribute back to Open Source
 
Start learning code with an idea
Start learning code with an ideaStart learning code with an idea
Start learning code with an idea
 
proper care and feeding for your junior developer
proper care and feeding for your junior developerproper care and feeding for your junior developer
proper care and feeding for your junior developer
 
A living hell - lessons learned in eight years of parsing real estate data
A living hell - lessons learned in eight years of parsing real estate data  A living hell - lessons learned in eight years of parsing real estate data
A living hell - lessons learned in eight years of parsing real estate data
 
Lessons learned in doing lots with few people
Lessons learned in  doing lots with few peopleLessons learned in  doing lots with few people
Lessons learned in doing lots with few people
 
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developerFrom TrainedMonkey to Google SoC mentor – How to become an OOo developer
From TrainedMonkey to Google SoC mentor – How to become an OOo developer
 
Cracking The Technical Interview
Cracking The Technical InterviewCracking The Technical Interview
Cracking The Technical Interview
 
12 advices to 20 y.o. me
12 advices to 20 y.o. me12 advices to 20 y.o. me
12 advices to 20 y.o. me
 

En vedette

modelingtools
modelingtoolsmodelingtools
modelingtoolslearnt
 
Psd - Programma Structuur Diagram
Psd - Programma Structuur DiagramPsd - Programma Structuur Diagram
Psd - Programma Structuur Diagramiahpostmes
 
Nassi shneiderman diagrams
Nassi shneiderman diagramsNassi shneiderman diagrams
Nassi shneiderman diagramshccit
 
Building a developer documentation wiki
Building a developer documentation wikiBuilding a developer documentation wiki
Building a developer documentation wikiSarah Maddox
 
Topologos
TopologosTopologos
TopologosESUG
 
Understanding operating systems 5th ed ch11
Understanding operating systems 5th ed ch11Understanding operating systems 5th ed ch11
Understanding operating systems 5th ed ch11BarrBoy
 
Computer security design principles
Computer security design principlesComputer security design principles
Computer security design principlesShaishav Dahal
 
Ch 6 Logical D B Design
Ch 6  Logical D B  DesignCh 6  Logical D B  Design
Ch 6 Logical D B Designguest8fdbdd
 
MN691 Assignment 3 - Final Report 2
MN691 Assignment 3 - Final Report 2MN691 Assignment 3 - Final Report 2
MN691 Assignment 3 - Final Report 2Abi Reddy
 
Database Modeling Using Entity.. Weak And Strong Entity Types
Database Modeling Using Entity.. Weak And Strong Entity TypesDatabase Modeling Using Entity.. Weak And Strong Entity Types
Database Modeling Using Entity.. Weak And Strong Entity Typesaakanksha s
 
Physical database design(database)
Physical database design(database)Physical database design(database)
Physical database design(database)welcometofacebook
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical WritingSarah Maddox
 
Op Sy 03 Ch 61a
Op Sy 03 Ch 61aOp Sy 03 Ch 61a
Op Sy 03 Ch 61a Google
 

En vedette (20)

modelingtools
modelingtoolsmodelingtools
modelingtools
 
Psd - Programma Structuur Diagram
Psd - Programma Structuur DiagramPsd - Programma Structuur Diagram
Psd - Programma Structuur Diagram
 
Nassi shneiderman diagrams
Nassi shneiderman diagramsNassi shneiderman diagrams
Nassi shneiderman diagrams
 
Building a developer documentation wiki
Building a developer documentation wikiBuilding a developer documentation wiki
Building a developer documentation wiki
 
Topologos
TopologosTopologos
Topologos
 
01 diagramas nassi-schneiderman
01 diagramas nassi-schneiderman01 diagramas nassi-schneiderman
01 diagramas nassi-schneiderman
 
Understanding operating systems 5th ed ch11
Understanding operating systems 5th ed ch11Understanding operating systems 5th ed ch11
Understanding operating systems 5th ed ch11
 
Computer security design principles
Computer security design principlesComputer security design principles
Computer security design principles
 
Deadlocks
 Deadlocks Deadlocks
Deadlocks
 
Ch 6 Logical D B Design
Ch 6  Logical D B  DesignCh 6  Logical D B  Design
Ch 6 Logical D B Design
 
MN691 Assignment 3 - Final Report 2
MN691 Assignment 3 - Final Report 2MN691 Assignment 3 - Final Report 2
MN691 Assignment 3 - Final Report 2
 
Chapter 15 - Security
Chapter 15 - SecurityChapter 15 - Security
Chapter 15 - Security
 
Database Modeling Using Entity.. Weak And Strong Entity Types
Database Modeling Using Entity.. Weak And Strong Entity TypesDatabase Modeling Using Entity.. Weak And Strong Entity Types
Database Modeling Using Entity.. Weak And Strong Entity Types
 
Sad
SadSad
Sad
 
Lecture 4
Lecture 4Lecture 4
Lecture 4
 
Physical database design(database)
Physical database design(database)Physical database design(database)
Physical database design(database)
 
Chapter 14 - Protection
Chapter 14 - ProtectionChapter 14 - Protection
Chapter 14 - Protection
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical Writing
 
Input and output design
Input and output designInput and output design
Input and output design
 
Op Sy 03 Ch 61a
Op Sy 03 Ch 61aOp Sy 03 Ch 61a
Op Sy 03 Ch 61a
 

Similaire à Documentation for developers

Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic RevisitedAdam Keys
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Jorge López-Lago
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsSteven Smith
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsChristian Heilmann
 
Clean Code Software Engineering
Clean Code Software Engineering Clean Code Software Engineering
Clean Code Software Engineering Inocentshuja Ahmad
 
Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming LanguageRichard Green
 
On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)Zoe Landon
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature CreatureChristian Heilmann
 
15 Experts on the Art of JavaScript Programming
15 Experts on the Art of JavaScript Programming15 Experts on the Art of JavaScript Programming
15 Experts on the Art of JavaScript ProgrammingFusionCharts
 
Open source and then some: An Introduction
Open source and then some: An IntroductionOpen source and then some: An Introduction
Open source and then some: An IntroductionAkash Tandon
 
Patterns of enterprise application architecture
Patterns of enterprise application architecturePatterns of enterprise application architecture
Patterns of enterprise application architecturethlias
 
FME UC 2014: Keynote from Boundless
FME UC 2014: Keynote from BoundlessFME UC 2014: Keynote from Boundless
FME UC 2014: Keynote from BoundlessSafe Software
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseKevlin Henney
 
Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014michaelag1971
 
How to learn programming for begineers!
How to learn programming for begineers!How to learn programming for begineers!
How to learn programming for begineers!Aman Kumar
 
Konstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asideKonstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asidePVS-Studio
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to CodeMattan Griffel
 
Recipe of a rockstar developer
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developerTopu Newaj
 
Software Carpentry and the Hydrological Sciences @ AGU 2013
Software Carpentry and the Hydrological Sciences @ AGU 2013Software Carpentry and the Hydrological Sciences @ AGU 2013
Software Carpentry and the Hydrological Sciences @ AGU 2013Aron Ahmadia
 

Similaire à Documentation for developers (20)

Culture And Aesthetic Revisited
Culture And Aesthetic RevisitedCulture And Aesthetic Revisited
Culture And Aesthetic Revisited
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Clean Code Software Engineering
Clean Code Software Engineering Clean Code Software Engineering
Clean Code Software Engineering
 
Inventing The Next Business Programming Language
Inventing The Next Business Programming LanguageInventing The Next Business Programming Language
Inventing The Next Business Programming Language
 
On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)On Selecting JavaScript Frameworks (Women Who Code 10/15)
On Selecting JavaScript Frameworks (Women Who Code 10/15)
 
Resisting The Feature Creature
Resisting The Feature CreatureResisting The Feature Creature
Resisting The Feature Creature
 
15 Experts on the Art of JavaScript Programming
15 Experts on the Art of JavaScript Programming15 Experts on the Art of JavaScript Programming
15 Experts on the Art of JavaScript Programming
 
How to code
How to codeHow to code
How to code
 
Open source and then some: An Introduction
Open source and then some: An IntroductionOpen source and then some: An Introduction
Open source and then some: An Introduction
 
Patterns of enterprise application architecture
Patterns of enterprise application architecturePatterns of enterprise application architecture
Patterns of enterprise application architecture
 
FME UC 2014: Keynote from Boundless
FME UC 2014: Keynote from BoundlessFME UC 2014: Keynote from Boundless
FME UC 2014: Keynote from Boundless
 
Worse Is Better, for Better or for Worse
Worse Is Better, for Better or for WorseWorse Is Better, for Better or for Worse
Worse Is Better, for Better or for Worse
 
Scottish Ruby Conference 2014
Scottish Ruby Conference  2014Scottish Ruby Conference  2014
Scottish Ruby Conference 2014
 
How to learn programming for begineers!
How to learn programming for begineers!How to learn programming for begineers!
How to learn programming for begineers!
 
Konstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from asideKonstantin Knizhnik: static analysis, a view from aside
Konstantin Knizhnik: static analysis, a view from aside
 
How to Teach Yourself to Code
How to Teach Yourself to CodeHow to Teach Yourself to Code
How to Teach Yourself to Code
 
Recipe of a rockstar developer
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developer
 
Software Carpentry and the Hydrological Sciences @ AGU 2013
Software Carpentry and the Hydrological Sciences @ AGU 2013Software Carpentry and the Hydrological Sciences @ AGU 2013
Software Carpentry and the Hydrological Sciences @ AGU 2013
 

Dernier

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Dernier (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

Documentation for developers

Notes de l'éditeur

  1. Presented to “Austin on Rails” May 28 2013, 7:00 PM at The Capital Factory.
  2. I started as a computer programmer. On a database project for General Motors, no one wanted to write the user manual. I had written two small books and published half a dozen magazine articles, so I wrote it. Over the years, I did more documentation and less programming. In the 1980s and 1990s, I used the TeX/LaTeX typesetting language. TeX was the antecedent to SGML from which came HTML.
  3. The best documentation creates an organic system of knowledge.
  4. If you do not love writing documentation, then find someone who does. The quote is from The Fountainhead by Ayn Rand. Peter Keating would like to design a large government housing, but he never developed the skill. He was always a “people person.” He has come to Howard Roark for help – as he did several times since their college days. Roark considers clients to be like steel and rock: part of the technical challenge. Roark understands Keating’s desire to help others – though he does not share it as a primary motive. Roark says, “to do things for other people, you need to be the kind of man who can get things done. But to get things done, Peter, you must love the doing.”
  5. Usually attributed to the United States Marine Corps. We all work hard. The critical difference is the planning.
  6. My own rule. Every project begins with some kind of documentation. The best projects begin with a full set of specifications. Those must include the user manuals. The user manuals define the goal. If you do not know where you are going, you never will arrive. Most often, technical specifications alone – perhaps only a statement of work – guide programmers who work intuitively. At the end of the process, they call in a technical writer to document their work. At that point, it is too late. Documenting “as built” work is like drawing blueprints for a house – or a neighborhood – after carpenters have been working as they pleased to do thei best job they know how according to their own best jjudgment. We can hope that they knew their crafts and got along well.
  7. What if computing were as consequential as flying? We call aircraft “forgiving”. What if a bug resulted in an explosion and injuryto the programmer? Pilots spend as much time in flight planning as they do in flight, often more. To love flying, you must love the planning. Sporty’s Pilot Shop sells 153 different flight planning aids, from tablets of printed sheets to software to handheld dedicated computers. Jeppesen also serves private pilots but is favored by transport and passenger airline professionals Flight planning starts the documentation. At the end of your flight, professionals and advanced private pilots formally “close the plan” with the controllers.
  8. Weizenbaum said that like gamblers, programmers have superstitions. Perhaps primary is the superstition that one more fix, one more patch will solve their problem. Weizebaum said that the real problem is that they begin writing programs without any knowledge of the substantive field in which they are working. He meant not the programming language or computer system, but the application, the supposed goal.
  9. ... bright young men of disheveled appearance, often with sunken glowing eyes, can be seen sitting at computer consoles, their arms tensed and waiting to fire their fingers, already poised to strike, at the buttons and keys on which their attention seems to be riveted as a gambler's on the rolling dice. When not so transfixed, they often sit at tables strewn with computer printouts over which they pore like possessed students of a cabbalistic text. They work until they nearly drop, twenty, thirty hours at a time. Their food, if they arrange it, is brought to them: coffee, Cokes, sandwiches. If possible, they sleep on cots near the printouts. Their rumpled clothes, their unwashed and unshaven faces, and their uncombed hair all testify that they are oblivious to their bodies and to the world in which they move. These are computer bums, compulsive programmers…Joseph Weizenbaum, Computer Power and Human Reason: From Judgment to Calculation (W. H. Freeman, 1976) quoted in Hackers: Heroes of the Computer Revolution by Steven Levy. (Nerraw Manijaime/Doubleday, 1984).
  10. Alan Turing showed that any finite state machine can model any other. Therefore, it matters not so much perhaps which tools you use, but that you have some methodology and some means of following it. The tools suggested here below all work about the same. But to work at all, you have to actually use them.
  11. These tools work. You do not begin the design of a house with a little house or a replica made of different materials. Such modeling is important. Roller coasters are tested at one-third scale. But they do not begin that way. I know a local web designer who carries a box of Crayola Crayons. Architects do model in clay. Automobile designers do model in clay and wood. But they do not model a car by building one without any plan. You need a plan.
  12. See “The Entity-Relationship Model: Toward a Unified View of Data” by Peter Pin-Shan Chen, MIT, ACM Transactions on Database Systems, vol 1 no 1. March 1976, pp 9-36.
  13. The best way to learn something is to teach it to others. If you can explain your work, you will understand it better. If you cannot, then perhaps you need to do more thinking, collecting data, talking to users and experts, and otherwise planning your work.
  14. http://en.wikipedia.org/wiki/Warnier/Orr_diagram: “Warnier/Orr diagram” See also http://www.mindapp.com/warnier-orr-basics/
  15. Warnier-Orr does allow conditional branching and other controls. However, it is designed for large databases. For processes, other tools work better.
  16. You can build the { signs yourself, or you can buy a package. This is just one out of many. They do offer a free demo download.
  17. See “Flowchart Techniques for Structured Programming” by I. Nassi and B. Shneiderman, SUNY Stony Brook, SIGPLAN Notices, 1973 August. See also “  A short history of structured flowcharts (Nassi-Shneiderman Diagrams)” by Ben Shneiderman (Draft May 27, 2003) at http://www.cs.umd.edu/hcil/members/bshneiderman/nsd/ You can draw them for yourself and make them into macros. As shown below, firms that sell flowcharting software also sell Nass-Shneiderman diagrams.
  18. And see, of course, http://en.wikipedia.org/wiki/Nassi%E2%80%93Shneiderman_diagram
  19. E pluribus unum: One out of many. Just one out of many sellers.
  20. Good technical writing is just good writing. Good technical writing is also easy to translate. I often recommend THE ELEMENTS OF STYLE by Strunk and White. It can be a bit dated, as it was addressed to a college audience in the 1920s, but the fundamental truths still apply (as time goes by). Active voice: She opens the door . versus Passive voice: The door is opened by her. Indicative mood: This will be good. versus Conditional mood: This would be good. Active voice shows who is responsible. Passive voice leaves questions : “The file is updated. ” Who updates the file? How is it updated? By what means?
  21. From http://www.biblegateway.com/passage/?search=Matthew+5-7&version=NIV Matthew 5-7 New International Version (NIV).
  22. Note that this passage actually has fewer passive voice sentences than the Sermon on the Mount. However, its long sentences- 53 words per sentence - render it difficult to grasp.
  23. This was published for numismatists (“coin collectors”) who have leisure and a desire to enjoy literature about their hobby, avocation, or profession. It is an easy read.
  24. This was published by the British Association for the History of Astronomy. It is an academic work that was peer-reviewed. It reads slightly easier than the article for coin collectors.
  25. This was from an actual user manual for a recent project with good metrics, sensible design, and good oversight. I just wanted to use it as a positive example. So, I was surprised to see how poorly it scored. A closer read revealed why.
  26. I marked up the problems; and then fixed them.
  27. I lowered the reading level almost a full year grade, from 12.9 to 12.0. It still could be improved. Sometimes, however, you have to settle for good enough. In this case, as in much technical work, the sentences are necessarily long.
  28. Language changes. However, it does not change uniformly over place. Your idea of common English may not be common. If you stick tho the manual, you might not be using the current version, but you will be more broadly understood.
  29. You must invent a system of meaningful names. Cute names are not helpful. Abstract names are useless. If you want to learn something well, teach it to someone else. In other words, can you explain your intention? If not, then your goal may not be clear. Therefore, create comments that explain your intentions, goals, methods, means, suppositions, assumptions, conclusions, etc., etc. Originally, this came to me as a cartoon of two hardhats arguing in a bar. “Dammit! You need comments,” said the one to the other. That was from a programmer I worked with, Scott Waller.
  30. So, I went looking for example of bad documentation in Ruby code. It was pretty easy to find.
  31. Of course, I am interested in readability. This held promise for real use. I just did not understand what he meant by “extracting the primary readable content of a webpage.”
  32. The Description should say something different from the Summary.
  33. After reading the documentation, I felt that the program was misnamed. It does not measure readability at all. It extracts content.
  34. Having been a customer of Sallie Mae since 2007, I never found anything to complain about on their website. They put a lot of care into their work.
  35. Too often, when registering for a website, you do not get a message like this until after it rejects your password. Sallie Mae does it right.
  36. Another good example
  37. The End … Recap …