two solitudes (splash 2013 keynote)

Download Two Solitudes (SPLASH 2013 keynote)

If you can't read please download the document

Upload: greg-wilson

Post on 16-Apr-2017

6.285 views

Category:

Education


0 download

TRANSCRIPT

Two Solitudes

Greg WilsonMozilla Foundation

SPLASH 2013October 30, 2013

You are free to:

Copy, share, adapt, or re-mix;

Photograph, film, or broadcast;

Blog, live-blog, or post video of;

this presentation, provided that:

You attribute the work to its author and respect the rights and licenses associated with its components.

https://etherpad.mozilla.org/splash2013

A Quick Quiz

Given the statement:for x in [10, 20, 30]; y in [1, 2]: print x+y

Would you expect to see:A) 'x' and 'y' move forward at the same rate:1122

B) 'y' goes through the second list once for each value of 'x':111221223132

C) an error message because the two lists are not the same length?

I Used to Be a Prof

before

after

But Before That, I Shipped Code

And These Days, I'm a Teacher

What I've Seen

academia vs. industry

What I've Seen

academia vs. industry

What I've Seen

research vs. practice

academia vs. industry

What I've Seen

research vs. practice

academia vs. industry

More Specifically

smart young people get CS degrees

More Specifically

smart young people get CS degrees

and never pay attention to CS again

More Specifically

smart young people get CS degrees

and never pay attention to CS again

most

some

More Specifically

smart young people get CS degrees

and never pay attention to CS again

most

some

Why?

Once Upon a Time...

1986:Start programming for physicists onfirst-generation parallel computers

Once Upon a Time...

1986:Start programming for physicists onfirst-generation parallel computers

1992:Realize I'm doing more harm than good

Once Upon a Time...

1986:Start programming for physicists onfirst-generation parallel computers

1992:Realize I'm doing more harm than good

Giving a scientist a supercomputeris like giving a Ferrari to a teenagerwho can barely parallel park.

See a Problem, Fix a Problem

I don't know what to teach scientistsabout how to build software.

See a Problem, Fix a Problem

I don't know what to teach scientistsabout how to build software.

I'll go learn from experts.

See a Problem, Fix a Problem

I don't know what to teach scientistsabout how to build software.

I'll go learn from experts.

See a Problem, Fix a Problem

I don't know what to teach scientistsabout how to build software.

I'll go learn from experts.

(pause for laughter)

Ninjas and Rock Stars

If big companies are doing it wrong,agile startups must be doing it right.

Ninjas and Rock Stars

(pause for further laughter)

If big companies are doing it wrong,agile startups must be doing it right.

Meanwhile...

1996:What Should Computer ScientistsTeach to Physical Scientists andEngineers? (IEEE CS&E)

Meanwhile...

1996:What Should Computer ScientistsTeach to Physical Scientists andEngineers? (IEEE CS&E)

1997:John Reynders: OK, show us

Meanwhile...

1996:What Should Computer ScientistsTeach to Physical Scientists andEngineers? (IEEE CS&E)

1997:John Reynders: OK, show us

1998:First Software Carpentry courseat Los Alamos National Laboratory

What I Learned

The problem with teaching scientists isthey expect evidence

What I Learned

The problem with being a computer scientist wasI didn't have any

The problem with teaching scientists isthey expect evidence

But Then...

But Then...

How come I didn't know we knew stuff about things?

So Ten Years Ago...

1.I had learned most of what I knew aboutbuilding software on the job

So Ten Years Ago...

1.I had learned most of what I knew aboutbuilding software on the job

2.Most of my colleagues knew nothing aboutthe hundreds of studies that had been doneof real programmers writing real programs

So Ten Years Ago...

1.I had learned most of what I knew aboutbuilding software on the job

2.Most of my colleagues knew nothing aboutthe hundreds of studies that had been doneof real programmers writing real programs

cared

So Ten Years Ago...

1.I had learned most of what I knew aboutbuilding software on the job

2.Most of my colleagues knew nothing aboutthe hundreds of studies that had been doneof real programmers writing real programs

Hands up if you think this has changedin the last decade...

cared

As Doomed as Doomed Can Be

From the people whobrought you UML...

As Doomed as Doomed Can Be

From the people whobrought you UML...

...a re-founding of software engineering...

As Doomed as Doomed Can Be

From the people whobrought you UML...

...a re-founding of software engineering...

...that doesn't cite a single empirical study

Computer Science Isn't

How many experiments did you do as an undergraduate?

Computer Science Isn't

How many experiments did you do as an undergraduate?

How much experimental data did you analyze?

Computer Science Isn't

How many experiments did you do as an undergraduate?

How much experimental data did you analyze?

How many experimental papers did you read?

Computer Science Isn't

How many experiments did you do as an undergraduate?

How much experimental data did you analyze?

How many experimental papers did you read?

Computer Science Isn't

Hands up if you think this has changedin the last decade...

Where Are Our Examples?

It's how everybody else teaches...

Where Are Our Examples?

It's how everybody else teaches...

Where Are Our Examples?

It's how everybody else teaches...

This is not a new observation

From: Greg WilsonSubject: Beautiful CodeDate: May 17, 2006

I hope you don't mind mail out of the blue, but I'm working on anew book project with O'Reilly called "Beautiful Code" and wouldlike to ask you to contribute an article-length section. Profitsfrom the book will be donated to Amnesty International.

The book will be a collection of master classes in software design.In each chapter, a well-known software developer will present oneof his or her favorite pieces of code, then explain what makes itparticularly appealing. The aim is to "think aloud" while walkingthrough its design and implementation, so that junior developerscan learn to see through more experienced developers eyes.

Thanks,Greg

I expected

From: [name withheld]Subject: re: Beautiful CodeSorry, I'm too busy. Good luck.

I expected

From: [name withheld]Subject: re: Beautiful CodeSorry, I'm too busy. Good luck.

Most people said

From: [name withheld]Subject: re: Beautiful CodeI don't think I've ever written any beautiful code,but I'd really like to read the book when it's done.

I expected

From: [name withheld]Subject: re: Beautiful CodeSorry, I'm too busy. Good luck.

Most people said

From: [name withheld]Subject: re: Beautiful CodeI don't think I've ever written any beautiful code,but I'd really like to read the book when it's done.

But quite a few said

From: [name withheld]Subject: re: Beautiful CodeSure, count me in!

Beauty Takes Many Forms

Beauty Takes Many Forms

But it's not beautifulif nobody uses it.

To: PractitionerFrom: Researcher

If At First You Don't Succeed...

2010

To: ResearcherFrom: Practitioner

To: PractitionerFrom: Researcher

If At First You Don't Succeed...

2011-13

2010

Impact

Yup, that's it,right there

Impact

Two Solitudes

Academics don't respect practitioners' timescales

Two Solitudes

Academics don't respect practitioners' timescales16 months to clear the Intellectual Property Office

Two Solitudes

Academics don't respect practitioners' timescalesAlso don't care if practitioners can't read academic work

Two Solitudes

Academics don't respect practitioners' timescalesAlso don't care if practitioners can't read academic workMore on that later

Two Solitudes

Academics don't respect practitioners' timescalesAlso don't care if practitioners can't read academic workPractitioners don't understand that research isn't about writing software

Two Solitudes

Academics don't respect practitioners' timescalesAlso don't care if practitioners can't read academic workPractitioners don't understand that research isn't about writing softwareComputer science is about the science of computing

Two Solitudes

Academics don't respect practitioners' timescalesAlso don't care if practitioners can't read academic workPractitioners don't understand that research isn't about writing softwareComputer science is about the science of computing

Computer scientists are actually penalized for writing product-quality code

How have other people solved this problem?

How have other people solved this problem?

It Took Medicine 200 Years

Seven Years' War (actually 1754-63)

It Took Medicine 200 Years

Britain lost 1512 sailors to enemy action...

Seven Years' War (actually 1754-63)

It Took Medicine 200 Years

Britain lost 1512 sailors to enemy action......and almost 100,000 to scurvy

Seven Years' War (actually 1754-63)

It Took Medicine 200 Years

1747:James Lind does thefirst controlled medicalexperiment in history

It Took Medicine 200 Years

1747:James Lind does thefirst controlled medicalexperiment in history

1950:Hill & Doll's case controlstudy of smokers andnon-smokers

Findings

1.Smoking causes lung cancer

Findings

1.Smoking causes lung cancer

2.Most people would ratherfail than change

Findings

1.Smoking causes lung cancer

2.Most people would ratherfail than change

What happens 'on average' is of no helpwhen one is faced with a specific patient...

Like Water on Stone

Doctors know:1.what science looks like

Like Water on Stone

Doctors know:1.what science looks like2.what it has to do with them

Like Water on Stone

Doctors know:1.what science looks like2.what it has to do with them

So they make the next generation learn it

Like Water on Stone

Doctors know:1.what science looks like2.what it has to do with them

So they make the next generation learn itAnd around and around we go

I Have a Cunning Plan

Stop asking students totry to do something oursystem won't let them do

I Have a Cunning Plan

D.L. Parnas and P.C. Clements: A RationalDesign Process: How and Why to Fake It.IEEE Trans. Softw. Eng., 12(2), Feb. 1986.

Stop asking students totry to do something oursystem won't let them do

I Have a Cunning Plan

Stop asking students totry to do something oursystem won't let them do

Have them do science instead

I Have a Cunning Plan

A new scientific truth does nottriumph by convincing its opponentsand making them see the light, butrather because its opponentseventually die, and a new generationgrows up that is familiar with it.

- Max Planck

I Have a Cunning Plan

A new scientific truth does nottriumph by convincing its opponentsand making them see the light, butrather because its opponentseventually die, and a new generationgrows up that is familiar with it.

- Max Planck

The next generation should do empirical studies

I Have a Cunning Plan

A new scientific truth does nottriumph by convincing its opponentsand making them see the light, butrather because its opponentseventually die, and a new generationgrows up that is familiar with it.

- Max Planck

The next generation should do empirical studies(or at least read and analyze others' studies)

I Have a Cunning Plan

The next generation should do empirical studies(or at least read and analyze others' studies)so that they will understand and value science

A new scientific truth does nottriumph by convincing its opponentsand making them see the light, butrather because its opponentseventually die, and a new generationgrows up that is familiar with it.

- Max Planck

Assignment #1

You have been given 80K lines of C, and the outputof a static analysis tool that identifies lines containingbuffer overruns, memory leaks, and other issuesrelated to memory management. Determine whethercomplex functions are more likely to contain sucherrors than simple ones.

Assignment #1

You have been given 80K lines of C, and the outputof a static analysis tool that identifies lines containingbuffer overruns, memory leaks, and other issuesrelated to memory management. Determine whethercomplex functions are more likely to contain sucherrors than simple ones.

Requires:Tool use

Assignment #1

You have been given 80K lines of C, and the outputof a static analysis tool that identifies lines containingbuffer overruns, memory leaks, and other issuesrelated to memory management. Determine whethercomplex functions are more likely to contain sucherrors than simple ones.

Requires:Tool use

Model building

Assignment #1

You have been given 80K lines of C, and the outputof a static analysis tool that identifies lines containingbuffer overruns, memory leaks, and other issuesrelated to memory management. Determine whethercomplex functions are more likely to contain sucherrors than simple ones.

Requires:Tool use

Model building

Statistics

Assignment #1

You have been given 80K lines of C, and the outputof a static analysis tool that identifies lines containingbuffer overruns, memory leaks, and other issuesrelated to memory management. Determine whethercomplex functions are more likely to contain sucherrors than simple ones.

Requires:Tool use

Model building

Statistics

The Biggest Challenge

http://tinyurl.com/nwit-randomo

Stefik et al: An Empirical Comparison of the Accuracy Rates of Novices using theQuorum, Perl, and Randomo Programming Languages. PLATEAU'11

We present here an empirical study comparing the accuracy rates of novices writingsoftware in three programming languages: Quorum, Perl, and Randomo. The firstlanguage, Quorum, we call an evidence-based programming language, where thesyntax, semantics, and API designs change in correspondence to the latest academicresearch and literature on programming language usability. Second, while Perl is wellknown, we call Randomo a Placebo-language, where some of the syntax was chosenwith a random number generator and the ASCII table. We compared novices that wereprogramming for the first time using each of these languages, testing how accuratelythey could write simple programs using common program constructs (e.g., loops,conditionals, functions, variables, parameters). Results showed that while Quorumusers were afforded significantly greater accuracy compared to those using Perl andRandomo, Perl users were unable to write programs more accurately than those usinga language designed by chance.

The Biggest Challenge

http://tinyurl.com/nwit-randomo

Please read the comments

The Biggest Challenge

http://tinyurl.com/nwit-randomo

Please read the comments

I never thought I'd say that

The Biggest Challenge

http://tinyurl.com/nwit-randomo

Please read the comments

And then read The Distress of the Privilegedhttp://tinyurl.com/distress-of-the-privileged

Please read the comments

The Biggest Challenge

http://tinyurl.com/nwit-randomo

...from reading the responses, what I think our community really needs todo is to move away from a largely pseudo-scientific view of programminglanguage design toward one based on evidence. The scientific methodhas a much better chance of ending the programming language warssomeday than does continuing to argue about it.

Please read the comments

The Biggest Challenge

http://tinyurl.com/nwit-randomo

...from reading the responses, what I think our community really needs todo is to move away from a largely pseudo-scientific view of programminglanguage design toward one based on evidence. The scientific methodhas a much better chance of ending the programming language warssomeday than does continuing to argue about it.

Finally...for those readers that absolutely must send hate mail, pleasesend it only to me, not my students.

Please read the comments

But That Won't Be Enough

http://exple.tive.org/blarg/2013/10/22/citation-needed/

...starting at 1 is not an unreasonable position at all; toa typical human thinking about the zeroth element of anarray doesnt make any more sense than trying to catchthe zeroth bus that comes by, but weve clearly endedup here somehow. So whats the story there?

But That Won't Be Enough

Wales' Law

Open information drives out closed.

Wales' Law

Open information drives out closed.

As far as most programmers are concerned,your research doesn't exist.

Wales' Law

Open information drives out closed.

As far as most programmers are concerned,your research doesn't exist.

And please don't say, But they can just...

Wilbanks' Rule

The opposite of open isn't closed.The opposite of open is broken.

Wilbanks' Rule

The opposite of open isn't closed.The opposite of open is broken.

Do you think your use of obviously broken systemsmakes programmers more or less receptiveto your ideas?

Wilbanks' Rule

The opposite of open isn't closed.The opposite of open is broken.

Do you think your use of obviously broken systemsmakes programmers more or less receptiveto your ideas?

They want me to upload a PDF? What is this, 1995?

People who can read your researchare more likely to help you keep doing it.

People who can read your researchare more likely to help you keep doing it.It is therefore in your interestto create such peopleand give them access to your work.

People who can read your researchare more likely to help you keep doing it.It is therefore in your interestto create such peopleand give them access to your work.It'll take a decade.

People who can read your researchare more likely to help you keep doing it.It is therefore in your interestto create such peopleand give them access to your work.It'll take a decade.But isn't that what tenure is for?

Science, Cooperation, and Courage

Science, Cooperation, and Courage

Science, Cooperation, and Courage

Now in three volumes!

[email protected]
http://www.slideshare.net/gvwilson/splash-2013
Thank You

Software Carpentryhttp://software-carpentry.org

Never Work in Theoryhttp://neverworkintheory.org

Architecture ofOpen Source Applicationshttp://aosabook.org