:w% TODO: add StoddenVictoria2016a (Enhancing reproducibility for computational methods) % TODO: add MillmanKJarrod2011a (Python for Scientists and Engineers) % TODO: add vanderWaltStefan2011a (The NumPy Array: A Structure for Efficient Numerical Computation) % TODO: reference https://www.nsf.gov/pubs/2016/nsf16532/nsf16532.htm (Software Infrastructure for % Sustained Innovation (SI2: SSE & SSI)) % TODO: http://pubs.acs.org/doi/10.1021/cen-09535-scitech2 \chapter{Software} Cutting-edge science increasingly relies on custom software. In their 2008 survey, \textcite{HannayJoErskine2009a} demonstrated just how important software is to the modern scientist. % \begin{ditemize} \item 84.3\% of surveyed scientists state that developing scientific software is important or very important for their own research. \item 91.2\% of surveyed scientists state that using scientific software is important or very important for their own research. \item On average, scientists spend approximately 40\% of their work time using scientific software. \item On average, scientists spend approximately 30\% of their work time developing scientific software. \end{ditemize} Despite the importance of software to science and scientists, most scientists are not familiar with basic software engineering concepts. % % TODO: demonstrate that `most scientists are not familiar with basic software engineering concepts' This is in part due to the their general lack of formal training in programming and software development. \textcite{HannayJoErskine2009a} found that over 90\% of scientists learn software development through `informal self study'. Indeed, I myself have never been formally trained in software development. Software development in a scientific context poses unique challenges. Many traditional software development paradigms demand an upfront articulation of goals and requirements. This allows the developers to carefully design their software, even before a single line of code is written. In her seminal 2005 case study \textcite{SegalJudith2005a} describes a collaboration between a team of researchers and a contracted team of software engineers. Ultimately % TODO: finish the discussion of SegalJudith2005a % TODO: segue to reccomendation of agile development practices: http://agilemanifesto.org/