good coding-practices-for-scientists-jan-2014
DESCRIPTION
Motivating why scientists need to think about coding quality. A small introduction to test driven development as a way to enhance code quality in scientific projects.TRANSCRIPT
![Page 1: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/1.jpg)
Siv Midtun Hollup
![Page 2: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/2.jpg)
![Page 3: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/3.jpg)
![Page 4: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/4.jpg)
![Page 5: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/5.jpg)
![Page 6: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/6.jpg)
![Page 7: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/7.jpg)
![Page 8: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/8.jpg)
![Page 9: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/9.jpg)
![Page 10: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/10.jpg)
”I know exactly what code I need to write”
![Page 11: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/11.jpg)
”Coding is easy.”
![Page 12: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/12.jpg)
![Page 13: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/13.jpg)
![Page 14: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/14.jpg)
”I’ll just add another function instead of changing the existing one.”
![Page 15: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/15.jpg)
”Don’t fix it if it ain’t broken.”
![Page 16: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/16.jpg)
![Page 17: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/17.jpg)
Correct results
Efficient code
Extendable code
Results as fast as possible
As little code as possible
![Page 18: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/18.jpg)
![Page 19: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/19.jpg)
![Page 20: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/20.jpg)
![Page 21: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/21.jpg)
”A scientists’ nightmare: Software problems leads to five
retractions” G. Miller, Science (2014)
![Page 22: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/22.jpg)
”Deriving chemosensitivity from cell lines: Forensic bioinformatics and reproducible research in high-throughput biology”
KA Baggerly et al, Annals of Applied Statistics (2009)
![Page 23: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/23.jpg)
”Scientific software development is not an oxymoron”
”Publishing scientific software matters”
”Best practices for scientific computing”G. Wilson et al, PLOS Biology (2014)
SM Baxter et al, PLOS Computational Biology (2006)
C. Pradal et al, Journal of Computational Science (2013)
![Page 24: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/24.jpg)
![Page 25: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/25.jpg)
![Page 26: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/26.jpg)
![Page 27: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/27.jpg)
![Page 28: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/28.jpg)
![Page 29: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/29.jpg)
![Page 30: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/30.jpg)
To rewrite existing source code in order to improve its readability, reusability or structure without affecting its meaning or behaviour
![Page 31: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/31.jpg)
![Page 32: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/32.jpg)
”Testing takes too much time.”
![Page 33: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/33.jpg)
”It’s too hard to test.”
![Page 34: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/34.jpg)
”I can’t possibly test everything.”
![Page 35: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/35.jpg)
![Page 36: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/36.jpg)
![Page 37: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/37.jpg)
![Page 38: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/38.jpg)
![Page 39: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/39.jpg)
![Page 40: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/40.jpg)
”Test-Driven Development: An Empirical Evaluation of Agile Practice” Lech Madeyski
![Page 41: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/41.jpg)
![Page 42: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/42.jpg)
![Page 43: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/43.jpg)
Correct results
Efficient code
Extendable code
Results as fast as possible
As little code as possible
![Page 44: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/44.jpg)
Clean Code, Robert C. Martin (Uncle Bob)
Test Driven Development, Kent Beck
Refactoring, Martin Fowler
Working effectively with legacy code, Michael Feathers
![Page 45: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/45.jpg)
Introcing TDD and why it’s a good idea, Evan Dorn http://www.youtube.com/watch?v=HhwElTL-mdI
Estimation and deception, Linda Rising http://chariotsolutions.com/podcast/ete-2010-session-9-linda-rising-deception-and-estimation/
TDD in action (Roy Osherove) http://www.youtube.com/watch?v=xX9hfPkA800
![Page 46: Good coding-practices-for-scientists-jan-2014](https://reader033.vdocuments.net/reader033/viewer/2022061220/5485560eb47959ce0c8b4de7/html5/thumbnails/46.jpg)
Practice coding and get feedback: http://www.exercism.io/
Online courses (subscription): http://www.pluralsight.com/