Slide 1

Slide 1 text

Documentation is King Kenneth Reitz

Slide 2

Slide 2 text

Hi.

Slide 3

Slide 3 text

@kennethreitz

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

github.com/kennethreitz • ~18 serious projects. • 100+ experiments. • OSX-GCC-Installer: 56TB of downloads. • Requests: 3+ million downloads.

Slide 6

Slide 6 text

Other Interests... • Street Photography • Synthesizers and Music Production • World Travel (~140,000 miles last year) • Public Speaker (29 events last year) • Classic Video Games!

Slide 7

Slide 7 text

The Best Things Prime Lenses, Monophonic Synths, Handheld Games... Pen and paper. Mechanical watch. A single carry-on.

Slide 8

Slide 8 text

CONSTRAINTS FOSTER CREATIVITY

Slide 9

Slide 9 text

The Simple Things Prime Lenses, Monophonic Synths, Handheld Games... Pen and paper. Mechanical watch. A single carry-on. Simple! Simple! Simple! Simple! Simple! Simple!

Slide 10

Slide 10 text

pra•gmat•ic |pragˈmatik|, adj: Dealing with things sensibly and realistically in a way that is based on practical rather than theoretical considerations

Slide 11

Slide 11 text

Requests HTTP for Humans

Slide 12

Slide 12 text

The API is all that matters. Everything else is secondary.

Slide 13

Slide 13 text

— Steve Jobs, 1983 People are going to be spending two or three hours a day with these machines — more than they spend with a car.

Slide 14

Slide 14 text

— Steve Jobs, 1983 Software design must be given at least as much consideration as we give automobiles today — if not a lot more.

Slide 15

Slide 15 text

That worked for Apple.

Slide 16

Slide 16 text

Developers spend 8+ hours a day with APIs. Why are they treated di erently?

Slide 17

Slide 17 text

Requests Success • Python is a language built for Humans. • Why should HTTP be non-trivial? • I explored and discovered what I really needed, and built it. • I had a real problem that I solved for myself.

Slide 18

Slide 18 text

Requests Success • At rst, Requests was far from powerful. • But, it deeply resonated with people. • Features grew over time, but the API was never compromised.

Slide 19

Slide 19 text

Developers spend 8+ hours a day with APIs. Build for yourself—a developer.

Slide 20

Slide 20 text

How?

Slide 21

Slide 21 text

Write the Docs.

Slide 22

Slide 22 text

• Before any code is written, write the README — show some examples. • Write some code with the theoretical code that you’ve documented.

Slide 23

Slide 23 text

Paradigm Shift • Instead of engineering something to get the job done, you interact with the problem itself and build an interface that reacts to it. • You discover it. You respond to it.

Slide 24

Slide 24 text

• Great sculptures aren’t engineered or manufactured—they’re discovered. • The sculptor studies and listens to the marble. He identi es with it. • Then, he responds. • Setting free something hidden that inside all along. Sculptures, Etc.

Slide 25

Slide 25 text

• It’s not about a design that will “work” on a phone, tablet, and desktop. • It’s about making something that identi es itself enough to respond to the environment it’s placed in. • Free of arbitrary constraints. Responsive Design

Slide 26

Slide 26 text

Readme-Driven Development? Responsive API Design.

Slide 27

Slide 27 text

Complex Code is Bad • Tight coupling, monolithic codebases. • Lurking, growing technical debt. • Maintenance burden is high. • Self-serving instead of problem-solving.

Slide 28

Slide 28 text

Simple Code is Good • Code solves problems created by humans. • The less code, the less to maintain. • Negative di s are the best di s. • Small, sharp, distributed services.

Slide 29

Slide 29 text

— Pieter Hintjens Simplicity is always better than functionality.

Slide 30

Slide 30 text

What is Open Source? • Transparent groups of distributed developers working together to make software and projects that make the world a better place.

Slide 31

Slide 31 text

Open Source is Epic • We have a unique opportunity to take part in a powerful social movement, creating the tools that are fundamentally changing the world around us. • Social Media, Elections, Journalism, Wikileaks, etc...

Slide 32

Slide 32 text

Documentation is the glue that makes open source possible.

Slide 33

Slide 33 text

Bad Open Source • Appears unmaintained (20+ pull requests). • Fails to solve a clear problem. • Has unclear expectations. (GitX, Facebook SDK, httplib2, hubcap, oauth2, &c)

Slide 34

Slide 34 text

Great Open Source • Solves a clear problem. • Communicates well with users. • Manages expectations realistically. (Jenkins, Python, Django, Pip, Bundler, &c)

Slide 35

Slide 35 text

Great Open Source • Solves a clear problem. • Communicates well with users. • Manages expectations realistically. (Jenkins, Python, Django, Pip, Bundler, &c) Documentation!

Slide 36

Slide 36 text

Internal Codebase Patterns • Components are tightly coupled. • Broad tribal knowledge is required. • Iterative change of components di cult. • Technical debt has a tendency to spread. • Little documentation (if any).

Slide 37

Slide 37 text

Pretend it’s Open Source • Components become concise & decoupled. • Concerns separate themselves. • Best practices emerge (e.g. no creds in code). • Documentation and tests become crucial. • Code can be released at any time.

Slide 38

Slide 38 text

Document All The Things!

Slide 39

Slide 39 text

Documentation = Better Code • Documentation is more important than tests. • It changes the way we think about problems. • Speci cally, explaining concepts to users and fellow developers helps uncover asymmetry in APIs.

Slide 40

Slide 40 text

Asymmetry?

Slide 41

Slide 41 text

Python 2.5 Bytes Unicode ’42’ u’42’

Slide 42

Slide 42 text

Python 2.5 Bytes Unicode ’42’ u’42’ b’42’ ’42’ Python 3.0

Slide 43

Slide 43 text

Python 2.6 Bytes Unicode ’42’, b’42’ u’42’ b’42’ ’42’ Python 3.1

Slide 44

Slide 44 text

Python 2.7 Bytes Unicode ’42’, b’42’ u’42’ b’42’ ’42’, ? Python 3.2

Slide 45

Slide 45 text

Python 2.7 Bytes Unicode ’42’, b’42’ u’42’ b’42’ ’42’, u’42’ Python 3.3 Symmetrical.

Slide 46

Slide 46 text

Just as writing tests helps encourage composable code, writing documentation encourages consistent code.

Slide 47

Slide 47 text

Documentation = Better Workplace • Every design decision should be documented. • Reduces process locks and sync points. • Automates the onboarding process. • Employees can hop from project to project. • Deploy to production without worry. • First step towards automation.

Slide 48

Slide 48 text

Imagine never having to tap on a coworker’s shoulder again.

Slide 49

Slide 49 text

Imagine never getting interrupted by a coworker again.

Slide 50

Slide 50 text

Documentation = Better Lifestyle • Documentation enables asynchronous work ows. • Increased autonomy leads to a happier life. • Fewer interruptions, fewer misunderstandings.

Slide 51

Slide 51 text

Documentation makes the world a better place.

Slide 52

Slide 52 text

Write the Docs ...or the sloth will nd you.

Slide 53

Slide 53 text

github.com/kennethreitz Questions?