48
Crowd Documentation How Programmer Social Communities are Flipping Software Development Chris Parnin, PhD Candidate @ GT @chrisparnin ninlabs.com checkbox.io

Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Embed Size (px)

DESCRIPTION

How do software developers learn about APIs?

Citation preview

Page 1: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Crowd Documentation How Programmer Social

Communities are Flipping Software Development

Chris Parnin, PhD Candidate @ GT@chrisparnin ninlabs.com checkbox.io

Page 2: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

About MeMy “other thesis”

Page 3: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Types of Documentation

Page 4: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Types of Documentation

Software documentation is created by a few and read by few.

Page 5: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Types of Documentation

Software documentation is created by a few and read by few.

API documentation is created by a few and read by many.

Page 6: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

API Documentation is Big Business

Page 8: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

It sucks, the documentation sucks, the examples are ridiculous. This is part of the reason there are so many junk apps on android as well. iOS stresses interface and user experience from the first time you open the dev portal, android... do they ever even mention it? Not that I have seen. Its all obscure code stuff and external libraries created by who knows who etc.

http://forum.unity3d.com/threads/104567-iOS-vs-Android-from-a-dev-perspective/page2

Help win platform wars

Page 9: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

APIs as the new business model

• Twilio

• Stripe

• Coinbase

//require the Twilio module and create a REST clientvar client = require('twilio')('ACCOUNT_SID', 'AUTH_TOKEN');client.makeCall({ to:'+16515556677', from: '+14506667788', url: 'http://www.example.com/twiml.php'}, function(err, responseData) { console.log(responseData.from); // outputs "+14506667788"});

Page 10: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

4000 pages of documentation

Traditional Forms

Page 11: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

4000 pages of documentation

Traditional Forms

Page 12: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

What are the sources of dev knowledge now?

Page 13: Crowd Documentation - How Programmer Social Communities are Flipping Software Development
Page 14: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Unofficial Microsoft SurveyWhen learning about API documentation % of

following resource is used “Often”

Page 15: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Unofficial Microsoft Survey

73.5% (2,224)

When learning about API documentation % of following resource is used “Often”

Page 16: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Unofficial Microsoft Survey

73.5% (2,224)

42.5% (1,289)Code completion (IntelliSense)

When learning about API documentation % of following resource is used “Often”

Page 17: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Unofficial Microsoft Survey

40.1% (1,212)Microsoft’s Official Documentation

73.5% (2,224)

42.5% (1,289)Code completion (IntelliSense)

When learning about API documentation % of following resource is used “Often”

Page 18: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Searching for Documentation

Page 19: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Examine search results of jQuery

Page 20: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

blog >

StackOverflow >

unofficialdoc >

Page 21: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

... 1730 search results

Page 22: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

>

Page 23: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Crowd Documentation

Knowledge is created and curated by a mostly uncoordinated collective.

Page 24: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

What sources do devs actually use?

Page 25: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

A day of a dev

Page 26: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

...1,316 days of developer browser history

Page 27: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Typical dev >

Page 28: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Typical dev >

DirectDirect

Typical Flow: C-Q Monitor Flow: A-B

64%22% 2%

48%28% 38%39%

22% 1% 26%

56%18%

18%

18%

Page 29: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Consistent with self-reported surveys.

Page 30: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

What makes it different?

Page 31: Crowd Documentation - How Programmer Social Communities are Flipping Software Development
Page 32: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Twice as many examples can be found on Stack Overflow than the official documentation guide.

Page 33: Crowd Documentation - How Programmer Social Communities are Flipping Software Development
Page 34: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

• Developers may be getting as much as 50% of their documentation from Stack Overflow.

• More examples can be found on Stack Overflow than the official documentation guide.

• In web searches, Stack Overflow questions are visited 2x-10x more often than official documentation.

Page 35: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

User participation

Page 36: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

0%

20%

40%

60%

80%

100%

0 20 40 60 80 100

Pe

rce

nt

of

Co

ntr

ibu

tio

ns

User Percentile

0%

20%

40%

60%

80%

100%

0 20 40 60 80 100

Pe

rce

nt

of

Co

ntr

ibu

tio

ns

User Percentile

Android

0%

20%

40%

60%

80%

100%

0 20 40 60 80 100 Pe

rce

nt

of

Co

ntr

ibu

tio

ns

User Percentile

Askers

Advisors

GWT Java

User participation

Page 37: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

60% of questions answered by 5% of users.

Diminishing game mechanisms

2 years to reach 80% coverage

Failure of online communities

Encouraging User Behaviour with Achievements: An Empirical Study Scott Grant and Buddy Betts

http://michael.richter.name/blogs/why-i-no-longer-contribute-to-stackoverflow/

Page 38: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

What did developer’s think?

Page 39: Crowd Documentation - How Programmer Social Communities are Flipping Software Development
Page 40: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

But then...everything you thought you knew

was wrong

Page 41: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

“DLLs are tossed over the fence to English majors”

“We sometimes take a break from documentation and try building something for a month or two. Then we realize how bad it is”

“We contact the top 100 Stack Overflow contributors”

“Documentation isn’t meant to be read by everyone, it’s meant to be authoritative”

“You don’t understand how much this has impacted us. No, really you don’t.”

Page 42: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Stakeholders Concerns

• Will we have a job in 5 years?

• What should our voice be?

• How can we "regain" authority over the crowd (e.g. people suggesting unsupported/non-public API methods in android development). [*]

• Getting feedback from the crowd: sentiment analytics over the frustrating parts, frequent questions, confusing topics, etc.

* https://code.google.com/p/android/issues/detail?id=62220

Page 43: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Why not participating?

Page 44: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Bar/coffee interviews

Page 45: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

“I don’t blog because I fear being wrong on the internet... I share gists, or fix documentation and then tweet about it.

Blogs are disconnected from official sources, like project documentation. I can't imagine someone reading what I write. I would rather associate the content with the documentation.”

Page 46: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

“About 2 years ago, I used to answer a lot more. But now, it feels like most questions have already been

answered -- it is saturated. That might change when something new comes out, some of the newer stuff we

started working on, I might have a chance to answer questions on it.”

Page 47: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Massively distributed software engineering

At our current place, imagine how these would fare if needed in a few years:• A government api to calculate taxes on all online purchases for any location?• A distributed traffic regulation system for a network of self-driving cars and

drones.• ...

In the next 50 years, as governments increasingly turn legal policy and services into source code and public APIs, often created in the timespan of a president’s term, we must be prepared to build massively-sized software systems on a regular basis. This will often require cooperation of many diverse stakeholders.

health care insurance marketplace

two decades

Page 48: Crowd Documentation - How Programmer Social Communities are Flipping Software Development

Crowd Programming

• We have seen “crowd documentation” how might the other pieces look like?

Rather than having a rich standard API, Javascript essentially has a “crowd API” assembled from Stack Overflow snippets and Github repositories.