software engineering can be thought of as “programming integrated over time.” What practices can we introduce to our code to make it sustainable — able to react to necessary change — over its life cycle, from conception to introduction to maintenance to deprecation?

