two solitudes (splash 2013 keynote)
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