Click to Rate and Give Feedback
Also by this Author

Why is good API design so difficult when all you really need is perfection? Intrigued? Read on.

James Waletzky

MSDN Magazine March 2009

...

Read more!

This month End Bracket explores the reasons why predicting the amount of development effort is extremely difficult early in a project.

James Waletzky

MSDN Magazine January 2007

...

Read more!

Popular Articles

This article introduces 10 development tools that can increase your productivity, give you a better understanding of .NET, and maybe even change the way that you develop applications. The tools covered include NUnit to write unit tests, Reflector to examine assemblies, FxCop to police your code, Regulator to build regular expressions, NDoc to create code documentation and five more.

James Avery

MSDN Magazine July 2004

...

Read more!

Now you can perform efficient, sophisticated text analysis using regular expressions in SQL Server 2005.

David Banister

MSDN Magazine February 2007

...

Read more!

Writing a Web application with ASP.NET is unbelievably easy. So many developers don't take the time to structure their applications for great performance. In this article, the author presents 10 tips for writing high-performance Web apps. The discussion is not limited to ASP.NET applications because they are just one subset of Web applications.

Rob Howard

MSDN Magazine January 2005

...

Read more!

Ray Djajadinata

MSDN Magazine May 2007

...

Read more!

Chris Tavares explains how the ASP.NET MVC Framework's Model View Controller pattern helps you build flexible, easily tested Web applications.

Chris Tavares

MSDN Magazine March 2008

...

Read more!

{ End Bracket }
Exercising Agility
James Waletzky


Physical exercise is a fact of life. Love it or hate it, you have to do it to stay healthy. What you do to stay fit, though, is far less important than that you abide by the core principles of exercising, that is, by incorporating flexibility, aerobic, and anaerobic training into your practices. Software development processes are similar—it is not as important to follow a prescribed development process exactly as it is to stick to the principles of the process. This idea is particularly true with agile development.
There are many software development processes that are considered "agile." Examples include Scrum (for project management), Extreme Programming (XP), and Feature-Driven Development (FDD). Following the prescribed steps in each process is a great way to start learning, but in reality no two software projects and teams are identical, so customization is usually required. Changing a process to suit your needs is encouraged—embracing change is one of the guiding principles of agile development—providing you do not violate the infrastructure upon which agile development is based.
What are the fundamental principles, or the essential nature, of agile software development? Agile focuses on:
Simplicity Agile development processes are not only simple, they encourage simple software designs. Keeping software designs simple improves maintainability and discourages over-engineering. The practice of test-driven development (TDD) in XP encourages writing the minimum amount of code to pass a test—nothing more. Couple this practice with continuous refactoring, or improving the design of existing code without changing functionality, and software complexity is minimized.
Embracing Change Two certainties in software development are that humans make mistakes (bugs) and that requirements change. Agile developers do not fear change and are always prepared to deal with it. For example, users often request features late in the development cycle. An agile developer listens to the user and incorporates the changes with minimal pain using practices like TDD, continuous integration, and refactoring.
Incremental Iteration Delivering small, shippable pieces of functionality frequently and incorporating frequent customer reviews helps keep development on track. Furthermore, restricting development to small chunks with a defined meaning of "complete" puts a focus on quality. In Scrum, iterations are typically 30 days and are called "sprints." Each deliverable in a sprint must hold to a high level of quality. FDD typically delivers frequent, tangible, working results every two weeks.
Continuous Feedback and Improvement Agile development encourages frequent reflection on what you have just done with the intent of making improvements in your development techniques. Scrum has a retrospection meeting at the end of each sprint. XP promotes refactoring code continuously to advance and simplify the internal design. Feedback-based mechanisms such as updating estimates every day in a Daily Scrum meeting reinforce learning and provide a consistently accurate picture of the project.
Collaboration Agile development emphasizes open communication channels within teams, between teams, and with customers. Regular communication among project managers, developers, testers, and the customer keeps everyone moving in the same direction and quickly addresses blocking issues. The Daily Scrum meeting and Pair Programming in XP are good examples of ways to improve collaboration within and outside your team.
Eliminating Waste The idea of waste elimination is borrowed from lean software development (www.poppendieck.com), which is often paired with agile development. "Waste" comprises tasks or work (such as features) that do not significantly contribute to what the customer wants or needs. For example, doing a deeply detailed requirements analysis and big design up front is often wasteful as change later in the development cycle negates much of the effort. It is better to stay high level and discover the details as you go.
Regardless of whether you are practicing Scrum, XP, FDD or some other agile process, these core principles of agile development can guide you toward the right decisions with focus on the user and high quality. The same holds true with physical exercise—undertaking a variety of activities on a regular basis, including working on the yard or helping a friend move, is what yields successful results. Simply abide by the fundamental principles and just do it!
For more on these principles, see www.agilemanifesto.org/principles.html. Now get out there and stay agile. Keep your body and your software projects healthy by following core principles.

James Waletzky is a Senior Software Design Engineer in the Microsoft Engineering Excellence group. James focuses on improving engineering practices at Microsoft through training, consulting, and tools, while emphasizing continuous improvement.

Page view tracker