The end goal of software projects is to deliver value to the customer. Software design is a major factor in how successfully a team can deliver that value. The best designs are a product of continuous design rather than the result of an effort that tries to get the entire design right up front. This approach lets you strive to apply lessons learned from the project to continuously improve the design, instead of becoming locked into an erroneous design developed too early in the project.
One counterproductive practice in agile software development has persisted since the original publication of the Agile Manifesto: agile planning gives little regard to user experience strategy or information architecture—two pillars of sound requirements gathering. Instead, backlogs of requirements fill up with a never-ending stream of ill-informed requests that provide the basis for user stories. To accommodate the barrage of irrational objectives, information architects and other UX professionals who find themselves working in such an environment must resign themselves to becoming flexible—which means giving up any hope for coherent guidance in exchange for pure bedlam. Teams that are plagued by such strategic malpractice must develop a high threshold for pain and ambiguity.
This article shows you how easy it is to use a build framework such as MSBuild or TeamCity to build .NET software. It also demonstrates how to add Continuous Integration (CI) with .NET applications to an Agile ALM CI ecosystem that can also integrate other artifact types, such as Java.