Steve Crouch, Greg Wilson Software Carpentry Why should scientists understand how to write better software? This work is licensed under the Creative Commons.

Slides:



Advertisements
Similar presentations
Test process essentials Riitta Viitamäki,
Advertisements

SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
May 12, 2015 XSEDE New User Tutorials and User Support: Lessons Learned Marcela Madrid.
Empirical Results Copyright © Software Carpentry 2011 This work is licensed under the Creative Commons Attribution License See
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
WHAT DO WE KNOW? Chris Cannam, SoundSoftware Greg Wilson, Software Carpentry Steve Crouch, Software Sustainability Institute.
Important concepts in software engineering The tools to make it “easy to apply common sense”!
Important concepts in software engineering The tools to make it easy to apply common sense!
We Know Less Than You Think (But We Do Know Something) Copyright © 2009 Gregory V. Wilson. This presentation may be freely used and distributed with attribution.
Chapter 15 Design, Coding, and Testing. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Design Document The next step in the Software.
Advances research methods and proposal writing Ronan Fitzpatrick School of Computing, Dublin Institute of Technology. September 2008.
Algorithms and Problem Solving. Learn about problem solving skills Explore the algorithmic approach for problem solving Learn about algorithm development.
Eugénio Oliveira /2007 Methodologies for Scientific Research: An Introduction Responsible: Eugénio Oliveira Edition 2007/2008 Doctoral Programme in Telecommunications.
Introduction to a Programming Environment
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
A Distance Learning Approach to Teaching eXtreme Programming Chris Murphy, Dan Phung, Gail Kaiser Columbia University.
Department of Computer Science & Engineering College of Engineering Dr. Betty H.C. Cheng, Laura A. Campbell, Sascha Konrad The demand for distributed real-time.
CODING Research Data Management. Research Data Management Coding When writing software or analytical code it is important that others and your future.
 Software Software  Program vs Software Products Program vs Software Products  Software Characteristics Software Characteristics  Software Crisis.
“80% of software projects fail”  Standish Report (1995) Standish Report 16.2% completed on-time and on-budget with all features and functions as initially.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 27 Slide 1 Quality Management 1.
Prepare your students for tomorrow. Effective Communication Tools for Educators Using Microsoft Education Application Solutions.
An Agile Approach to Creating an Online Course and collaborative.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Dafna Hardbattle, Ken Fisher & Peter Chalk London Metropolitan University International Blended Learning Conference University of Hertfordshire,
T Project Review Magnificent Seven Project planning iteration
Teaching material for a course in Software Project Management & Software Engineering – part II.
Learning how to learn, with Software Carpentry Luis Figueira, Chris Cannam, Mark D Plumbley Centre for Digital Music Queen Mary, University of London.
BIO1130 Lab 2 Scientific literature. Laboratory objectives After completing this laboratory, you should be able to: Determine whether a publication can.
What We Think We Know About Software Development - and Why We Believe it’s True Steve Crouch, SSI with thanks to Greg Wilson Software.
Computer Programming I An Introduction to the art and science of programming with C++
SE 501 Software Development Processes Dr. Basit Qureshi College of Computer Science and Information Systems Prince Sultan University Lecture for Week 6.
Facts and Fallacies of Software Engineering (Rob Glass) CSE301 University of Sunderland Discussed by Harry R. Erwin, PhD.
1. A closer look at Testing Hans Axelsson The view of testing in this presentation is that of my own and doesn’t necessarily coincide with any official.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Software Engineering CS3003 Lecture 1 Introduction to the module Dr Tracy Hall.
Computational Methods for Financial Applications SCC 2301 Frederick H. Willeboordse
ICT in Primary Language Learning Presentation English Didactics Course Janne Lumme 13th Oct 2004.
10/27/2015 Sociology of Communications 1 RU-Camden? Ashli Williams.
CSC 395 – Software Engineering Lecture 5: Teams -or- How to Motivate and Manage the Unwashed Masses.
CS529 Multimedia Networking Experiments in Computer Science.
Formal Methods in Software Engineering
Career research project Kevin Dombrowski. Computer Programmer.
Using wiki-based collaborative writing to develop writing skills James Baggesen Senior Teacher ICT British Council Madrid Adults Centre.
Advanced Software Engineering: Software Testing COMP 3702 (Lecture1) Sada Narayanappa Seif Azgandhi Anneliese Andrews Thomas Thelin Carina Andersson.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Programming Fundamentals Lecture No. 2. Course Objectives Objectives of this course are three fold 1. To appreciate the need for a programming language.
Informatics in healthcare professions Lec130/08/2015.
Winter 2016CISC101 - Prof. McLeod1 CISC101 Elements of Computing Science I Course Web Site: The lecture outlines.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Sustainability Institute Building sustainable software for science … why good code is only the beginning 10 April 2013, EGI.
CERN IT Department CH-1211 Genève 23 Switzerland t Migration from ELFMs to Agile Infrastructure CERN, IT Department.
“Where The Hell Do I Start?”. My Background  Richard Renshaw  Social Worker For 10 Years.  At age 29 I decided on a career change.  Keen gamer. 
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
Research Software Group To save time, do this now… Go to: In the Etherpad, follow instructions under ‘When you arrive…’
Myths and truths of software development Chris Cannam, Queen Mary University of London Greg Wilson, Software Carpentry Steve Crouch, Software Sustainability.
What is a Functional Spec?  Defines what the functionality will be NOT how it will be implemented  Describes features of the software product product's.
Instructor Training Cambridge
Systems Analysis and Design
Software Testing and Maintenance Introduction
Software Engineering Empirical Results
Engineering Secure Software
THE NATURE OF SCIENCE.
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Algorithms and Problem Solving
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
BENEFITS OF COMMUNICATIONS SOCIETY MEMBERSHIP
Disciplines Of A Superior Programmer
The Nature of Science.
Presentation transcript:

Steve Crouch, Greg Wilson Software Carpentry Why should scientists understand how to write better software? This work is licensed under the Creative Commons Attribution License Copyright © Software Carpentry and The University of Edinburgh See for more information.

What we think we know… Once upon a time… 7 Years War ( ) Britain loses 1512 sailors to enemy action… …and almost 100,000 to scurvy

What we think we know… But before then… Courtesy of the National Library of Medicine James Lind ( ) 1747: (possibly) first ever controlled medical experiment CiderSea water Sulphuric acid (!)Oranges VinegarBarley water

What we think we know… Oranges (and lemons)… Courtesy of the National Library of Medicine And no-one listened…he’s not an English gentleman! But in 1794 the Admiralty gave it a go… …and England came out on top! CiderSea water Sulphuric acidOranges VinegarBarley water James Lind ( ) 1747: (possibly) first ever controlled medical experiment

What we think we know… Modern medicine Medical profession eventually realised controlled studies were the right way to go David Sackett Pioneer of “evidence-based medicine” Randomised double-blind test is a “gold standard” Cochrane Collaboration Largest collection of records of randomised controlled trials in the world Image courtesy of Lab Science Career

What we think we know… What about software development? Martin Fowler IEEE Software, July/Aug 2009 “[Using domain specific language] leads to two primary benefits. The first, and simplest, is improved programmer productivity... The second... is... communication with domain experts.” Image courtesy of adewale_oshineye

What we think we know… Just one more thing… Two substantive claims… …without a single citation! Where’s the proof? “Many software researchers advocate rather than investigate” – Robert L. Glass (2002) Par for the course! Image courtesy of whatleydude Image courtesy of futureatlas.com

What we think we know… Times, they are a changin’ Growing emphasis on empirical studies since the mid-1990s Papers describing new tools or practices routinely include results from some kind of field study International Conference on Software Engineering Empirical Software Engineering “It will never work in theory”

What we think we know… Simply the best? “Exploratory experimental studies comparing online and offline programming performance” Sackman, Erikson and Grant (1968) “The best programmers are up to 28 times more productive than the worst” So all we need are a few good people (apparently)… 1968! Designed to compare batch versus interactive 12 programmers for an afternoon

What we think we know… So what do we know? “Some Experience with Automated Aids to the Design of Large-Scale Reliable Software” Boehm et al (1975) Most errors are introduced during requirements analysis and design The later an error is detected the more costly it is to address 1 hour to fix in the design 10 hours to fix in the code 100 hours to fix after it’s gone live… time number / cost

What we think we know… Contrasting solutions “If we tackle the jump in the error injection curve, fewer bugs will get to the expensive part of the fixing curve” “If we do lots of short iterations, the total cost of fixing bugs will go down” Agile

What we think we know… Why reading is good… Rigorous inspections can remove 60-90% of errors before first test is run Fagan (1975) “Design and Code Inspections to Reduce Errors in Program Development" The first review and hour matter most Cohen (2006) “Best Kept Secrets of Peer Code Review”

What we think we know… Errors of a feather… Half the errors are found in 15% of the modules Davis (1995) quoting Endres (1975) About 80% of the defects come from 20% of the modules, and about half the modules are error free Boehm and Basili (2001) When you identify more errors than expected in some program module, keep looking!

What we think we know… How did you learn to program? You don’t just go out and write War and Peace You’d read other skilled writers first You don’t just go out and write a foreign language You learn to read it first Teach maintenance first Harlan Mills (1990) Image courtesy of dwyman “The best way to prepare [to be a programmer] is to write programs and to study great programs that other people have written” Susan Lammers, 1986, quoting a younger Bill Gates

What we think we know… Aim high… Lutz Prechelt Productivity variations between programmers Effects of language and web programming frameworks Productivity and reliability depend on length of program’s text Independent of language abstraction level Go high-level Trade off performance

What we think we know… Beware false prophets! “Anchoring and Adjustment in Software Estimation” Aranda & Easterbrook (2005) “How long do you think it will take to make a change to this program?” Control Group: “I’d like to give an estimate for this project myself, but I admit I have no experience estimating. We’ll wait for your calculations for an estimate.” Group A: “I admit I have no experience with software projects, but I guess this will take about 2 months to finish.” Group B: “… I guess this will take about 20 months to finish.”

What we think we know… Anchors drag you down Novice’s estimate mattered more than… Experience in software engineering Tools used Formality of estimation Group A (lowball)5.1 months Control Group7.8 months Group B (highball)15.4 months

What we think we know… Working remotely Physical distance doesn’t affect post-release fault rates …distance in organisational chart does Nagappan et al (2007) & Bird et al (2009)

What we think we know… And some more… For every 20% increase in problem complexity, there is a 100% increase in solution complexity Woodfield (1979) The two biggest causes of project failure are poor estimation and unstable requirements van Genuchten (1991) and many others Development teams do not benefit from existing experience, and they repeat mistakes over and over again Brossler (1999)

What we think we know… And there’s many more…!

What we think we know… So… Shouldn’t our development practices be built around these, and other, facts? +

What we think we know… One other thing we know… Software developers and researchers differ! Saying “this is good because software developers say it is good” is not good enough! We say “this is good because it helps your research” Good software development practices contribute to good research …which we hope to demonstrate!

What we think we know… What is Software Carpentry and how to get involved?

What we think we know… Software Carpentry: what is it? Goal: Make scientists and engineers more productive Teach them basic computing skills Things they should know before they start Few days of training Saves researchers a day a week Improves quality of computational work Empirically based, not advocacy based Skills: how they contribute to correct, reproducible, reusable research

What we think we know… A bit of history… Started by Greg Wilson in 1998 Gone through five iterations of improvement All content under Creative Commons licence Become international initiative Worldwide contributors Worldwide training events Always looking for more contributors!

What we think we know… What is a boot camp? In-person, example driven workshop 2-3 days Usually people 2-3 instructors + helpers Core skills to be productive in research team Basic programming Version control Testing … Short tutorials & hands-on exercises Participants help each other

PythonIntroduction Software Carpentry – Example Agenda Monday May 14th 08: :00 Registration 09: :15 Introduction ­ Clive, Steve, Neil 09: :45 What we actually know about developing software, and why we believe it's true ­ Steve C, Secondary Steve M 09: :30 The Unix shell ­ Steve M, Secondary Mike 12: :30 Lunch 13: :30 Version control ­ Chris, Secondary Mike 15: :00 The basics of Python ­ Mike, Secondary Steve M 17:00 ­ 19:00 Gathering at the Northern Stage Tuesday May 15 09: :30 Continuing Python programming - Functions - Steve C, Secondary Steve M - Testing - Mike, Secondary Steve C 12: :30 Lunch 13: :30 Using relational databases ­ Steve C, Secondary Steve M 15: :00 Putting it all together ­ Mike, Secondary Steve C SSI supporting SSI leading

What we think we know… Why a boot camp? Recent research: students learn best in blended environment, combining: Directed in-person learning Self-directed online learning Researchers are busy people! 2-3 days ok Hard to stay motivated learning in isolation Boot camps create peer support communities In selected disciplines or geographic regions

What we think we know… Why get involved? Critical realisation that scientists need to write better software Reproducibility in data, software next in line? Be at the forefront Great way to get teaching experience Learn new techniques Networking, trips to nice places! Be a local expert Looks good on a CV

Want to get involved? Write online lectures and practicals Want to be a helper… …or instructor? Let us know! Get in touch!