Scientists who depend on programming for their work face uncertainty; they need to adapt their programs as their research projects evolve. This typically makes it impossible to design a complete software up front. How, then, can you write good software under this condition of uncertainty?
Software development is the engineering solution to that question. This talk will present three general methodologies to writing software: Waterfall (old), Agile (new), and Lean Development (very new). In addition, best practices for developing software faster, making it more reliable, and communicating with peers are briefly presented. The goal of this talk is to enable you to apply development techniques in your programming practice and evaluate their usefulness.