aboutsummaryrefslogtreecommitdiff
path: root/software/chapter.tex
blob: 7ad483ab00cc1baf123f3171f806eaefc6052df1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
: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{enumerate}[topsep=-1.5ex, itemsep=0ex, partopsep=0ex, parsep=0ex, label=$\rightarrow$]
	\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{enumerate}
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/