Good engineering practices are the tools that help agile teams to deliver shippable products. Although many engineering practices have proved to be effective, they are not as widely used as they should be. Agile anti-patterns like the software testing ice-cream cone, accumulating technical debt and functional silos prevent teams from delivering a potentially releasable product.
Less functionality can make a better product according to the “Worse is Better” concept described 25 years ago by Richard P. Gabriel. According to Kevlin Henney and Frank Buschmann we can learn from the worse is better concept for development and architecture with agile and lean.
Team Foundation Server 11 has added many features in the area of Application Lifecycle Management. Some of the highlights include support for code reviews, iterations/sprints, resource allocation, third part testing frameworks, and a much more capable dependency graph.
There is a constant tussle between following Agile techniques and still managing to do enterprise architecture. While Agile development focuses on adjusting the design as more insight is gained, architecture establishes the technology stack and addresses quality attributes. Combination of the two is successful when agile techniques are leveraged to drive towards the desired architecture.
Agile development is not about doing a set of practices, it's about a way of "being," it's about learning. How is this learning accomplished? By taking brief pauses after small experiments, even large problems can be solved. In a recent Harvard Business Review interview of Toyota's president, he observed, "...when 70 years of very small improvements accumulate, they become a revolution."
One of the frequent questions in Agile adoption is related to the ideal iteration length. Teams usually gravitate between iteration lengths ranging from a week to two months. Choosing the right iteration length is an important decision and the success of Agile adoption depends a lot on the right iteration size.
In this presentation filmed during ThoughtWorks’ Quarterly Technology Briefing, Dave Robertson and John Johnston explain what the Agile and User Centered Design’s (UCD) common denominators are, common values being the most important one in their opinion.
In this original presentation from the Communitech Agile Event, Jeff Patton, winner of the Agile Alliance’s 2007 Gordon Pask Award, explains why one needs to embrace uncertainty in order to succeed with his/her Agile project and how to avoid some of the common mistakes leading to project failure.
Mishkin Berteig presents a situation where he proposed to a software development team, which just started to experiment with Scrum, to accept 2-days iterations. The approach was trying to tackle their organizational lack of prioritization resulting in constant crisis. Their decision led to a bigger crisis which exposed the need for task prioritization.