Otherwise it's not science.
But scientists don't use them effectively.
“ Computational science is a special case of scientific research: the work is easily shared via the Internet since the paper, code, and data are digital and those three aspects are all that is required to reproduce the results, given sufficient computation tools. ” - Stodden, 2010.
“ Organized Skepticism. Scientists are critical: All ideas must be tested and are subject to rigorous structured community scrutiny.” - R.K. Merton, 1942
Formats: Evaluated Nuclear Data File (ENDF), GRIdded Binary (GRIB), Flexible Image Transport System (FITS), Hierarchical Data Format (HDF), etc.
Management: C/Python/Fortran APIs, HDF5, SQL, MySQL, sqlite, MongoDB, Hadoop, etc.
Version Control Systems: cvs, svn, hg, git
Hint: tools like git-annex or git-lfs can help you manage large data files
“ It takes just as much time to write a good paper as it takes to write a bad one. ” - Polterovich, 2014
Hint: Check out GitHub for existing toolkits for analysis in your domain. e.g. PyNE, serpenttools
Hint: try a tutorial on BASH, CSH, Python, or Perl, e.g. the bash lesson by Software Carpentry.
Build System Tools: make, snakemake, autoconf, automake, cmake, docker, etc.
Reference: The Carpentries have an associated Automation and Make lesson.
Hint: In FORTAN, learn about arrays. In C++, learn about maps, vectors, deques, queues, etc. In python, the power lies in dictionaries and numpy arrays.
Addendum: Perhaps DataFrames, xarray,
DRY: Dont Repeat Yourself. Code replication is bug proliferation.
Hint: github.com/audreyr/cookiecutter or github.com/uwescience/shablona
Tools: python argparse, xml rng, json, etc.
“ The scientific method’s central motivation is the ubiquity of error—the awareness that mistakes and self-delusion can creep in absolutely anywhere and that the scientist’s effort is primarily expended in recognizing and rooting out error. ” - Donoho, 2009.
Tools: cpplint, pyflakes, gdb, lldb, pdb, idb, valgrind, kernprof, kcachegrind, cprofile/snakeviz
“ just-in-time review of small code changes is more likely to succeed than large-scale end-of-work reviews. ” - Petre, Wilson 2014
Books: Clean Code, Working Effectively with Legacy Code
Tools: sphinx, doxygen, googletest, unitttest, nosetests, pytest
“ If a piece of scientific software is released in the forest, does it change the field? ”
Tools: LaTeX, markdown, restructured text
Example: github.com/cyclus
Export control is serious.