These days at the place I work, we’re adopting the agile process Scrum. This has got me thinking about how we often blame the process (or, perhaps more frequently, lack thereof) for inadequaties in our software.
Sure, a good process is very important in order to facilitate writing good software. The key word here, however, is the word “facilitate”. Nate Kohari, the guy behind Ninject, has a great set of slides from his “Designing for Change” presentation where he touches upon this: He makes the point that Agile is about more than project managment strategies – he says, “you need to build the flexibility into your software itself.”
Ultimately, any agile process is about accepting change. To be successful at this, we need code that is easy to modify (separation of concerns!), aswell as safe to modify (unit testing!).