Showing posts from April, 2022

The Agile hypothesis

At recent software architecture training, there was a lot of negative discussion of Agile, which got me thinking about the what the strongest defense of Agile might look like. And by Agile I think more of the practices of Extreme Programming than rituals of Scrum. IF you accept a few premises, then I think Agile appears reasonable. Those premises look something like this: Engineering requires a rigid and highly specified design/design process. Producing a highly specified design is expensive (time, money, effort, training), but necessary to avoid the even more expensive prospect of wasted building materials. Building materials (code) are virtually free and infinite in software. Software is inherently more complex than other engineering disciplines, or at least too new for a body of sufficiently reliable engineering practices to have evolved. There may yet be something unique about software's lack of physical constraints that defy or modify typical engineering