SlideShare ist ein Scribd-Unternehmen logo
1 von 8
Downloaden Sie, um offline zu lesen
2013-03-22
1
What We Actually Know
About Programming
And What We Ought To Do Next
Greg Wilson http://software-carpentry.org March 2013
Best Practices for Scientific Computing 2
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.
Best Practices for Scientific Computing 3
Arrr, Matey
Seven Years’ War (actually 1754-63)
Britain lost 1,512 sailors to enemy action...
...and almost 100,000 to scurvy
Best Practices for Scientific Computing 4
James Lind (1716-94)
1747: (possibly) the first-ever
controlled medical experiment
× cider
× sulfuric acid
× vinegar
× sea water
√ oranges
× barley water
Of course, no-one paid attention until a proper Englishman
repeated the experiment in 1794...
Oh, the Irony
2013-03-22
2
Best Practices for Scientific Computing 5
1950: Hill & Doll publish a
case-control study comparing
smokers with non-smokers
Now called the “British Doctors”
study, it ran until 2001
It Took a While...
Best Practices for Scientific Computing 6
#1: Smoking causes
lung cancer
#2: Most people would
rather fail than change
“What happens ‘on average’ is
of no help when one is faced
with a specific patient…”
What They Found
The Cochrane Collaboration (http://www.cochrane.org/)
now archives results from hundreds of medical studies
Best Practices for Scientific Computing 7
“[Using domain-specific languages] leads to two primary
benefits. The first, and simplest, is improved programmer
productivity... The second...is...communication with
domain experts.”
– Martin Fowler,
IEEE Software,
July/August 2009
So Where Are We?
Best Practices for Scientific Computing 8
One of the smartest guys in the industry...
...made two substantive claims of fact…
Look Closer
...in a peer-reviewed journal...
...without a single citation…
…because nobody expected one
2013-03-22
3
Best Practices for Scientific Computing 9
Growing emphasis on empirical studies in
software engineering since the mid-1990s
Papers describing new tools or
practices routinely include results
from some kind of field study
Many are flawed or incomplete,
but standards are constantly improving
A New Hope
Best Practices for Scientific Computing 10
Rigorous inspections can remove 60-90% of errors before
the first test is run. (Fagan 1975)
A Classic Result
Best Practices for Scientific Computing 11
Rigorous inspections can remove 60-90% of errors before
the first test is run. (Fagan 1975)
The first review and hour matter most. (Cohen 2006)
A Classic Result Refined
Best Practices for Scientific Computing 12
Sackman, Erikson, and Grant (1968): “Exploratory
experimental studies comparing online and offline
programming performance.”
Or 10, or 40, or 100, or whatever other
large number pops into the head of
someone who can’t be bothered to
look up the reference...
The best programmers are
up to 28 times more productive than the worst.
Most Often Misquoted
2013-03-22
4
Best Practices for Scientific Computing 13
1.  Study was designed to compare batch vs. interactive,
not measure productivity
2.  How was productivity measured, anyway?
3.  Best vs. worst exaggerates any effect
4.  Twelve programmers for an afternoon
Pick That Apart
Next major study was 54 programmers...
...for up to an hour
Best Practices for Scientific Computing 14
Boehm et al (1975): “Some Experience with
Automated Aids to the Design of Large-Scale
Reliable Software.”
...and many, many more since
1.  Most errors are introduced
during requirements analysis
and design
2.  The later they are removed,
the most expensive it is to
take them out
time
number/cost
Another Classic Result
Best Practices for Scientific Computing 15
Pessimists: “If we tackle the
hump in the error injection
curve, fewer bugs will get to the
expensive part of the fixing
curve.”
Optimists: “If we
do lots of short
iterations, the total
cost of fixing bugs
will go down.”
That Explains a Lot
Best Practices for Scientific Computing 16
Nagappan et al (2007) & Bird et al (2009):
Geography has little correlation with software quality
Isn’t That Interesting…
2013-03-22
5
Best Practices for Scientific Computing 17
Nagappan et al (2007) & Bird et al (2009):
Distance in the org chart is a much better predictor
Isn’t That Interesting…
Best Practices for Scientific Computing 18
Are any metrics better at predicting faults/effort than LOC?
No.
A Few More Results
Best Practices for Scientific Computing 19
Do more frequent releases improve software quality?
Yes, but it also changes the nature of the bugs.
A Few More Results
Best Practices for Scientific Computing 20
Are there better ways to teach programming?
Yes: media-based instruction and peer instruction.
A Few More Results
2013-03-22
6
Best Practices for Scientific Computing 21
Sampling Bias
I focus on quantitative
studies because they’re
what I know best
A lot of the best work in this
field is using qualitative
methods
Best Practices for Scientific Computing 22
All Together Now
Andy Oram & Greg Wilson (ed):
Making Software: What Really
Works, and Why We Believe It.
O'Reilly, 2010, 978-0596808327.
http://neverworkintheory.org
Best Practices for Scientific Computing 23
Where to Start?
Best Practices for Scientific Computing 24
Where to Start?
Many practices can be monitored
automatically
2013-03-22
7
Best Practices for Scientific Computing 25
Where to Start?
But top-down initiatives usually don’t work
Best Practices for Scientific Computing 26
1.  How do you identify people with good ideas?
Where to Start?
Best Practices for Scientific Computing 27
1.  How do you identify people with good ideas?
2.  How do you reward people for good ideas?
Where to Start?
Best Practices for Scientific Computing 28
1.  How do you identify people with good ideas?
2.  How do you reward people for good ideas?
3.  How do they share those ideas with peers?
Where to Start?
2013-03-22
8
Best Practices for Scientific Computing 29
1.  How do you identify people with good ideas?
2.  How do you reward people for good ideas?
3.  How do they share those ideas with peers?
4.  How do you tell if it actually worked?
Where to Start?
Best Practices for Scientific Computing 30
Where to Start?
Remember: some changes
will be qualitative
1.  How do you identify people with good ideas?
2.  How do you reward people for good ideas?
3.  How do they share those ideas with peers?
4.  How do you tell if it actually worked?
Best Practices for Scientific Computing 31
Words to Live By
If you build a man a fire,
you'll keep him warm for a night.
If you set a man on fire,
you'll keep him warm for the rest of his life.
— Terry Pratchett
Best Practices for Scientific Computing 32
http://software-carpentry.org
Thank You

Weitere ähnliche Inhalte

Was ist angesagt?

2008 epsc - accident avoidance
2008 epsc - accident avoidance2008 epsc - accident avoidance
2008 epsc - accident avoidanceAndy Brazier
 
GrrCON 2018: Stop boiling the ocean!
GrrCON 2018: Stop boiling the ocean!GrrCON 2018: Stop boiling the ocean!
GrrCON 2018: Stop boiling the ocean!Joel Cardella
 
2015 Trinity Dublin - Task risk management - hf in process safety
2015 Trinity Dublin - Task risk management - hf in process safety2015 Trinity Dublin - Task risk management - hf in process safety
2015 Trinity Dublin - Task risk management - hf in process safetyAndy Brazier
 
Fix What Matters
Fix What MattersFix What Matters
Fix What MattersEd Bellis
 
2007 North Wales OHS - Human factors overview
2007 North Wales OHS - Human factors overview2007 North Wales OHS - Human factors overview
2007 North Wales OHS - Human factors overviewAndy Brazier
 
Why Do Computational Scientists Trust Their So
Why Do Computational Scientists Trust Their SoWhy Do Computational Scientists Trust Their So
Why Do Computational Scientists Trust Their Sojpipitone
 
Bias Driven Development - Mario Fusco - Codemotion Milan 2016
Bias Driven Development - Mario Fusco - Codemotion Milan 2016Bias Driven Development - Mario Fusco - Codemotion Milan 2016
Bias Driven Development - Mario Fusco - Codemotion Milan 2016Codemotion
 
Automated Software Enging, Fall 2015, NCSU
Automated Software Enging, Fall 2015, NCSUAutomated Software Enging, Fall 2015, NCSU
Automated Software Enging, Fall 2015, NCSUCS, NcState
 

Was ist angesagt? (8)

2008 epsc - accident avoidance
2008 epsc - accident avoidance2008 epsc - accident avoidance
2008 epsc - accident avoidance
 
GrrCON 2018: Stop boiling the ocean!
GrrCON 2018: Stop boiling the ocean!GrrCON 2018: Stop boiling the ocean!
GrrCON 2018: Stop boiling the ocean!
 
2015 Trinity Dublin - Task risk management - hf in process safety
2015 Trinity Dublin - Task risk management - hf in process safety2015 Trinity Dublin - Task risk management - hf in process safety
2015 Trinity Dublin - Task risk management - hf in process safety
 
Fix What Matters
Fix What MattersFix What Matters
Fix What Matters
 
2007 North Wales OHS - Human factors overview
2007 North Wales OHS - Human factors overview2007 North Wales OHS - Human factors overview
2007 North Wales OHS - Human factors overview
 
Why Do Computational Scientists Trust Their So
Why Do Computational Scientists Trust Their SoWhy Do Computational Scientists Trust Their So
Why Do Computational Scientists Trust Their So
 
Bias Driven Development - Mario Fusco - Codemotion Milan 2016
Bias Driven Development - Mario Fusco - Codemotion Milan 2016Bias Driven Development - Mario Fusco - Codemotion Milan 2016
Bias Driven Development - Mario Fusco - Codemotion Milan 2016
 
Automated Software Enging, Fall 2015, NCSU
Automated Software Enging, Fall 2015, NCSUAutomated Software Enging, Fall 2015, NCSU
Automated Software Enging, Fall 2015, NCSU
 

Ähnlich wie What We Actually Know About Programming And What We Ought To Do Next

Bug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutionsBug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutionsRIA RUI Society
 
DevelopingDataScienceProfession
DevelopingDataScienceProfessionDevelopingDataScienceProfession
DevelopingDataScienceProfessionGary Rector
 
18CSC305J – Artificial Intelligence - UNIT 1.pptx
18CSC305J – Artificial Intelligence - UNIT 1.pptx18CSC305J – Artificial Intelligence - UNIT 1.pptx
18CSC305J – Artificial Intelligence - UNIT 1.pptxabcdefgh690537
 
Journal Club - Best Practices for Scientific Computing
Journal Club - Best Practices for Scientific ComputingJournal Club - Best Practices for Scientific Computing
Journal Club - Best Practices for Scientific ComputingBram Zandbelt
 
The Scientific Method of Experimentation by Google PM
The Scientific Method of Experimentation by Google PMThe Scientific Method of Experimentation by Google PM
The Scientific Method of Experimentation by Google PMProduct School
 
Reading Group 2014
Reading Group 2014Reading Group 2014
Reading Group 2014Emir Muñoz
 
Title of Your Research Proposal Student Name Walde
Title of Your Research Proposal Student Name WaldeTitle of Your Research Proposal Student Name Walde
Title of Your Research Proposal Student Name WaldeTakishaPeck109
 
C3Problems and Brainstorming.ppt
C3Problems and Brainstorming.pptC3Problems and Brainstorming.ppt
C3Problems and Brainstorming.pptvijayapraba1
 
Lab - Surface WaterPre-Lab QuestionsWhen a river bends and.docx
Lab - Surface WaterPre-Lab QuestionsWhen a river bends and.docxLab - Surface WaterPre-Lab QuestionsWhen a river bends and.docx
Lab - Surface WaterPre-Lab QuestionsWhen a river bends and.docxsmile790243
 
2 Studies UX types should know about (Straub UXPA unconference13)
2 Studies UX types should know about (Straub UXPA unconference13)2 Studies UX types should know about (Straub UXPA unconference13)
2 Studies UX types should know about (Straub UXPA unconference13)Kath Straub
 
Abcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosasAbcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosasMerce Crosas
 
Making a difference with Operational Research
Making a difference with Operational ResearchMaking a difference with Operational Research
Making a difference with Operational ResearchThe OR Society
 
How to Correctly Use Experimentation in PM by Google PM
How to Correctly Use Experimentation in PM by Google PMHow to Correctly Use Experimentation in PM by Google PM
How to Correctly Use Experimentation in PM by Google PMProduct School
 
Design Fixation and conformity with examples
Design Fixation and conformity with examplesDesign Fixation and conformity with examples
Design Fixation and conformity with examplesBaskar Rethinasabapathi
 
UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...
UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...
UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...Simon Harper
 
Data Science for Business Managers - An intro to ROI for predictive analytics
Data Science for Business Managers - An intro to ROI for predictive analyticsData Science for Business Managers - An intro to ROI for predictive analytics
Data Science for Business Managers - An intro to ROI for predictive analyticsAkin Osman Kazakci
 
Data Sets as Facilitator for new Products and Services for Universities
Data Sets as Facilitator for new Products and Services for UniversitiesData Sets as Facilitator for new Products and Services for Universities
Data Sets as Facilitator for new Products and Services for UniversitiesHendrik Drachsler
 

Ähnlich wie What We Actually Know About Programming And What We Ought To Do Next (20)

Bug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutionsBug debug keynote - Present problems and future solutions
Bug debug keynote - Present problems and future solutions
 
DevelopingDataScienceProfession
DevelopingDataScienceProfessionDevelopingDataScienceProfession
DevelopingDataScienceProfession
 
18CSC305J – Artificial Intelligence - UNIT 1.pptx
18CSC305J – Artificial Intelligence - UNIT 1.pptx18CSC305J – Artificial Intelligence - UNIT 1.pptx
18CSC305J – Artificial Intelligence - UNIT 1.pptx
 
Journal Club - Best Practices for Scientific Computing
Journal Club - Best Practices for Scientific ComputingJournal Club - Best Practices for Scientific Computing
Journal Club - Best Practices for Scientific Computing
 
Two Solitudes
Two SolitudesTwo Solitudes
Two Solitudes
 
Turning Information chaos into reliable data
Turning Information chaos into reliable dataTurning Information chaos into reliable data
Turning Information chaos into reliable data
 
The Scientific Method of Experimentation by Google PM
The Scientific Method of Experimentation by Google PMThe Scientific Method of Experimentation by Google PM
The Scientific Method of Experimentation by Google PM
 
Reading Group 2014
Reading Group 2014Reading Group 2014
Reading Group 2014
 
Title of Your Research Proposal Student Name Walde
Title of Your Research Proposal Student Name WaldeTitle of Your Research Proposal Student Name Walde
Title of Your Research Proposal Student Name Walde
 
C3Problems and Brainstorming.ppt
C3Problems and Brainstorming.pptC3Problems and Brainstorming.ppt
C3Problems and Brainstorming.ppt
 
Lab - Surface WaterPre-Lab QuestionsWhen a river bends and.docx
Lab - Surface WaterPre-Lab QuestionsWhen a river bends and.docxLab - Surface WaterPre-Lab QuestionsWhen a river bends and.docx
Lab - Surface WaterPre-Lab QuestionsWhen a river bends and.docx
 
2 Studies UX types should know about (Straub UXPA unconference13)
2 Studies UX types should know about (Straub UXPA unconference13)2 Studies UX types should know about (Straub UXPA unconference13)
2 Studies UX types should know about (Straub UXPA unconference13)
 
Abcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosasAbcd iqs ssoftware-projects-mercecrosas
Abcd iqs ssoftware-projects-mercecrosas
 
Making a difference with Operational Research
Making a difference with Operational ResearchMaking a difference with Operational Research
Making a difference with Operational Research
 
How to Correctly Use Experimentation in PM by Google PM
How to Correctly Use Experimentation in PM by Google PMHow to Correctly Use Experimentation in PM by Google PM
How to Correctly Use Experimentation in PM by Google PM
 
Design Fixation and conformity with examples
Design Fixation and conformity with examplesDesign Fixation and conformity with examples
Design Fixation and conformity with examples
 
UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...
UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...
UX from 30,000ft - COMP33512 - Lectures 13 & 14 - Week 7 - 2013/2014 Edition ...
 
Data Science for Business Managers - An intro to ROI for predictive analytics
Data Science for Business Managers - An intro to ROI for predictive analyticsData Science for Business Managers - An intro to ROI for predictive analytics
Data Science for Business Managers - An intro to ROI for predictive analytics
 
Data Sets as Facilitator for new Products and Services for Universities
Data Sets as Facilitator for new Products and Services for UniversitiesData Sets as Facilitator for new Products and Services for Universities
Data Sets as Facilitator for new Products and Services for Universities
 
Building the next generation of statistical tools for outbreak response using R
Building the next generation of statistical tools for outbreak response using RBuilding the next generation of statistical tools for outbreak response using R
Building the next generation of statistical tools for outbreak response using R
 

Mehr von #DevTO

Alan Hietala - A Brief Into to AngularJS
Alan Hietala - A Brief Into to AngularJSAlan Hietala - A Brief Into to AngularJS
Alan Hietala - A Brief Into to AngularJS#DevTO
 
Eli Aleyner & Mani Fazeli - What does it take to find a co founder
Eli Aleyner & Mani Fazeli - What does it take to find a co founderEli Aleyner & Mani Fazeli - What does it take to find a co founder
Eli Aleyner & Mani Fazeli - What does it take to find a co founder#DevTO
 
Joey Coleman - Building an Open Data Ecosystem for all to access
Joey Coleman - Building an Open Data Ecosystem for all to accessJoey Coleman - Building an Open Data Ecosystem for all to access
Joey Coleman - Building an Open Data Ecosystem for all to access#DevTO
 
Peter Newhook - Make Data Dance
Peter Newhook - Make Data DancePeter Newhook - Make Data Dance
Peter Newhook - Make Data Dance#DevTO
 
Yuriy Blokhin - Building a Development Platform
Yuriy Blokhin - Building a Development PlatformYuriy Blokhin - Building a Development Platform
Yuriy Blokhin - Building a Development Platform#DevTO
 
Katherine Hague - The Decentralize Future of eCommerce
 Katherine Hague - The Decentralize Future of eCommerce Katherine Hague - The Decentralize Future of eCommerce
Katherine Hague - The Decentralize Future of eCommerce#DevTO
 
Farhan Thawar - Managing an Agile Team
Farhan Thawar - Managing an Agile TeamFarhan Thawar - Managing an Agile Team
Farhan Thawar - Managing an Agile Team#DevTO
 
Tyson Kingsbury - Anatomy of a Logo
Tyson Kingsbury  - Anatomy of a LogoTyson Kingsbury  - Anatomy of a Logo
Tyson Kingsbury - Anatomy of a Logo#DevTO
 
Kevin MacDonald - Anyone can make maps
Kevin MacDonald - Anyone can make mapsKevin MacDonald - Anyone can make maps
Kevin MacDonald - Anyone can make maps#DevTO
 
Brian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JSBrian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JS#DevTO
 
Shoukry Kattan - Titanium Mobile. Cross Platform Mobile Apps
Shoukry Kattan - Titanium Mobile. Cross Platform Mobile AppsShoukry Kattan - Titanium Mobile. Cross Platform Mobile Apps
Shoukry Kattan - Titanium Mobile. Cross Platform Mobile Apps#DevTO
 
Marc Roginsky - How to Deliver Effective Client-facing Presentations
Marc Roginsky - How to Deliver Effective Client-facing PresentationsMarc Roginsky - How to Deliver Effective Client-facing Presentations
Marc Roginsky - How to Deliver Effective Client-facing Presentations#DevTO
 
Shey Sewani - RabbitMQ At FreshBooks
Shey Sewani - RabbitMQ At FreshBooksShey Sewani - RabbitMQ At FreshBooks
Shey Sewani - RabbitMQ At FreshBooks#DevTO
 
Alex Stobe - Dev Networking
Alex Stobe - Dev NetworkingAlex Stobe - Dev Networking
Alex Stobe - Dev Networking#DevTO
 

Mehr von #DevTO (14)

Alan Hietala - A Brief Into to AngularJS
Alan Hietala - A Brief Into to AngularJSAlan Hietala - A Brief Into to AngularJS
Alan Hietala - A Brief Into to AngularJS
 
Eli Aleyner & Mani Fazeli - What does it take to find a co founder
Eli Aleyner & Mani Fazeli - What does it take to find a co founderEli Aleyner & Mani Fazeli - What does it take to find a co founder
Eli Aleyner & Mani Fazeli - What does it take to find a co founder
 
Joey Coleman - Building an Open Data Ecosystem for all to access
Joey Coleman - Building an Open Data Ecosystem for all to accessJoey Coleman - Building an Open Data Ecosystem for all to access
Joey Coleman - Building an Open Data Ecosystem for all to access
 
Peter Newhook - Make Data Dance
Peter Newhook - Make Data DancePeter Newhook - Make Data Dance
Peter Newhook - Make Data Dance
 
Yuriy Blokhin - Building a Development Platform
Yuriy Blokhin - Building a Development PlatformYuriy Blokhin - Building a Development Platform
Yuriy Blokhin - Building a Development Platform
 
Katherine Hague - The Decentralize Future of eCommerce
 Katherine Hague - The Decentralize Future of eCommerce Katherine Hague - The Decentralize Future of eCommerce
Katherine Hague - The Decentralize Future of eCommerce
 
Farhan Thawar - Managing an Agile Team
Farhan Thawar - Managing an Agile TeamFarhan Thawar - Managing an Agile Team
Farhan Thawar - Managing an Agile Team
 
Tyson Kingsbury - Anatomy of a Logo
Tyson Kingsbury  - Anatomy of a LogoTyson Kingsbury  - Anatomy of a Logo
Tyson Kingsbury - Anatomy of a Logo
 
Kevin MacDonald - Anyone can make maps
Kevin MacDonald - Anyone can make mapsKevin MacDonald - Anyone can make maps
Kevin MacDonald - Anyone can make maps
 
Brian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JSBrian Hogg - Web Apps using HTML5 and JS
Brian Hogg - Web Apps using HTML5 and JS
 
Shoukry Kattan - Titanium Mobile. Cross Platform Mobile Apps
Shoukry Kattan - Titanium Mobile. Cross Platform Mobile AppsShoukry Kattan - Titanium Mobile. Cross Platform Mobile Apps
Shoukry Kattan - Titanium Mobile. Cross Platform Mobile Apps
 
Marc Roginsky - How to Deliver Effective Client-facing Presentations
Marc Roginsky - How to Deliver Effective Client-facing PresentationsMarc Roginsky - How to Deliver Effective Client-facing Presentations
Marc Roginsky - How to Deliver Effective Client-facing Presentations
 
Shey Sewani - RabbitMQ At FreshBooks
Shey Sewani - RabbitMQ At FreshBooksShey Sewani - RabbitMQ At FreshBooks
Shey Sewani - RabbitMQ At FreshBooks
 
Alex Stobe - Dev Networking
Alex Stobe - Dev NetworkingAlex Stobe - Dev Networking
Alex Stobe - Dev Networking
 

Kürzlich hochgeladen

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Kürzlich hochgeladen (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

What We Actually Know About Programming And What We Ought To Do Next

  • 1. 2013-03-22 1 What We Actually Know About Programming And What We Ought To Do Next Greg Wilson http://software-carpentry.org March 2013 Best Practices for Scientific Computing 2 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. Best Practices for Scientific Computing 3 Arrr, Matey Seven Years’ War (actually 1754-63) Britain lost 1,512 sailors to enemy action... ...and almost 100,000 to scurvy Best Practices for Scientific Computing 4 James Lind (1716-94) 1747: (possibly) the first-ever controlled medical experiment × cider × sulfuric acid × vinegar × sea water √ oranges × barley water Of course, no-one paid attention until a proper Englishman repeated the experiment in 1794... Oh, the Irony
  • 2. 2013-03-22 2 Best Practices for Scientific Computing 5 1950: Hill & Doll publish a case-control study comparing smokers with non-smokers Now called the “British Doctors” study, it ran until 2001 It Took a While... Best Practices for Scientific Computing 6 #1: Smoking causes lung cancer #2: Most people would rather fail than change “What happens ‘on average’ is of no help when one is faced with a specific patient…” What They Found The Cochrane Collaboration (http://www.cochrane.org/) now archives results from hundreds of medical studies Best Practices for Scientific Computing 7 “[Using domain-specific languages] leads to two primary benefits. The first, and simplest, is improved programmer productivity... The second...is...communication with domain experts.” – Martin Fowler, IEEE Software, July/August 2009 So Where Are We? Best Practices for Scientific Computing 8 One of the smartest guys in the industry... ...made two substantive claims of fact… Look Closer ...in a peer-reviewed journal... ...without a single citation… …because nobody expected one
  • 3. 2013-03-22 3 Best Practices for Scientific Computing 9 Growing emphasis on empirical studies in software engineering since the mid-1990s Papers describing new tools or practices routinely include results from some kind of field study Many are flawed or incomplete, but standards are constantly improving A New Hope Best Practices for Scientific Computing 10 Rigorous inspections can remove 60-90% of errors before the first test is run. (Fagan 1975) A Classic Result Best Practices for Scientific Computing 11 Rigorous inspections can remove 60-90% of errors before the first test is run. (Fagan 1975) The first review and hour matter most. (Cohen 2006) A Classic Result Refined Best Practices for Scientific Computing 12 Sackman, Erikson, and Grant (1968): “Exploratory experimental studies comparing online and offline programming performance.” Or 10, or 40, or 100, or whatever other large number pops into the head of someone who can’t be bothered to look up the reference... The best programmers are up to 28 times more productive than the worst. Most Often Misquoted
  • 4. 2013-03-22 4 Best Practices for Scientific Computing 13 1.  Study was designed to compare batch vs. interactive, not measure productivity 2.  How was productivity measured, anyway? 3.  Best vs. worst exaggerates any effect 4.  Twelve programmers for an afternoon Pick That Apart Next major study was 54 programmers... ...for up to an hour Best Practices for Scientific Computing 14 Boehm et al (1975): “Some Experience with Automated Aids to the Design of Large-Scale Reliable Software.” ...and many, many more since 1.  Most errors are introduced during requirements analysis and design 2.  The later they are removed, the most expensive it is to take them out time number/cost Another Classic Result Best Practices for Scientific Computing 15 Pessimists: “If we tackle the hump in the error injection curve, fewer bugs will get to the expensive part of the fixing curve.” Optimists: “If we do lots of short iterations, the total cost of fixing bugs will go down.” That Explains a Lot Best Practices for Scientific Computing 16 Nagappan et al (2007) & Bird et al (2009): Geography has little correlation with software quality Isn’t That Interesting…
  • 5. 2013-03-22 5 Best Practices for Scientific Computing 17 Nagappan et al (2007) & Bird et al (2009): Distance in the org chart is a much better predictor Isn’t That Interesting… Best Practices for Scientific Computing 18 Are any metrics better at predicting faults/effort than LOC? No. A Few More Results Best Practices for Scientific Computing 19 Do more frequent releases improve software quality? Yes, but it also changes the nature of the bugs. A Few More Results Best Practices for Scientific Computing 20 Are there better ways to teach programming? Yes: media-based instruction and peer instruction. A Few More Results
  • 6. 2013-03-22 6 Best Practices for Scientific Computing 21 Sampling Bias I focus on quantitative studies because they’re what I know best A lot of the best work in this field is using qualitative methods Best Practices for Scientific Computing 22 All Together Now Andy Oram & Greg Wilson (ed): Making Software: What Really Works, and Why We Believe It. O'Reilly, 2010, 978-0596808327. http://neverworkintheory.org Best Practices for Scientific Computing 23 Where to Start? Best Practices for Scientific Computing 24 Where to Start? Many practices can be monitored automatically
  • 7. 2013-03-22 7 Best Practices for Scientific Computing 25 Where to Start? But top-down initiatives usually don’t work Best Practices for Scientific Computing 26 1.  How do you identify people with good ideas? Where to Start? Best Practices for Scientific Computing 27 1.  How do you identify people with good ideas? 2.  How do you reward people for good ideas? Where to Start? Best Practices for Scientific Computing 28 1.  How do you identify people with good ideas? 2.  How do you reward people for good ideas? 3.  How do they share those ideas with peers? Where to Start?
  • 8. 2013-03-22 8 Best Practices for Scientific Computing 29 1.  How do you identify people with good ideas? 2.  How do you reward people for good ideas? 3.  How do they share those ideas with peers? 4.  How do you tell if it actually worked? Where to Start? Best Practices for Scientific Computing 30 Where to Start? Remember: some changes will be qualitative 1.  How do you identify people with good ideas? 2.  How do you reward people for good ideas? 3.  How do they share those ideas with peers? 4.  How do you tell if it actually worked? Best Practices for Scientific Computing 31 Words to Live By If you build a man a fire, you'll keep him warm for a night. If you set a man on fire, you'll keep him warm for the rest of his life. — Terry Pratchett Best Practices for Scientific Computing 32 http://software-carpentry.org Thank You