Skip to content

Latest commit

 

History

History
71 lines (50 loc) · 2.2 KB

README.md

File metadata and controls

71 lines (50 loc) · 2.2 KB

Software Design for Scientists

Chapter List:

What is Software?

  • Something one tells a computer to do, no matter how small
  • Should you write something?
  • Improvements to science
  • Finding and implementing what is already there
  • Making it work
  • Making it answer the questions you want it to

User-Centered Design

  • Who are your users?
  • Think about software as always having a user who's not you
  • General software design principles
  • You're not going to necessarily become a great developer, but can be a pretty good developer by thinking of your code as having a life cycle
  • Think beyond the script to do one experiment

Steal, Share, Repeat

  • Participate in open source
  • Two way street
  • Everyone benefits
  • Steal like a developer - learn & build on the code don't just slot in a pretty good solution because you don't know how to do it

Scientific Reproducibility

  • Requires codesharing as well as data sharing
  • ... And there are so many good options!
  • Requires a community to reuse and/or update the code.

The Scientific Method of Software: Agile

  • Why agile will feel more natural to scientists (than waterfall)
  • Agile isn't one thing and you don't have to follow a particular process
  • Agile is a mindset not a process

Data Artifacts Part 1: Bugs

  • Not letting your software work against you

Data Artifacts Part 2: Communicating Parameters

  • Making sure that everyone gets the same answer, every time

Software Solutions Part 1: QA

  • Pyunit
  • Flask and coverage.py for code coverage
  • But what about R?

Software Solutions Part 2: Relatively Painless Documentation

  • Documentation for science part
  • Documentation for software part
  • Keep em separate as practical
  • Do both
  • What software artifacts are most useful
  • Making it part of experimental design

Database Design: Setting Yourself up to Make the Data Work for You and Others -- Not the Other Way Around.

  • Solr faceting of flat files
  • Organizing your data - think beyond relational databases

Scoping Data Science Projects, why it is the most important difficult thing you will ever do.

Appendices:

Appendix 1: A glossary of useful terms, circa 2016.

Appendix 2: Some tools that might be useful to you.