Agile best practices
Tuesday, August 24, 2010 5:34:31 AM
Focus on results more than on processes. Every procedure or means that does not help to achieve the goal of the software project should be cut off. The more complex a project is the more tools, rules and formalisms it will require.
• Plan your software development into cycles or iterations. Identify the core and most critical components, priories and start with the most important ones (“first things first”).
• Be tolerant towards change (changing requirements and change requests). Avoid rigid or inflexible structures, process, tools or methods.
• Try to produce executable software at the end of every iteration.
• After you finished an iteration a further increment to the final software product is added.
• Try to keep design and software simple. Have possible extensions in mind but focus on producing executable code at least at end of each iteration (“keep it short and simple – KISS”)
• Make use of early feedback from various stakeholders such as your client or end users. User acceptance tests could possibly be integrated into every iteration.
• In early stages even use paper and pen to sketch software designs or early prototypes.
• Make use of a test-oriented development where you write the test cases first, at least for core or critical code parts.
• Build and integrate tested parts frequently (e.g. daily).
• Set up communication means such that a close contact with client and end users is possible.
• Try to have regular, frequent and brief intra-team communication without formal overhead (e.g. daily stand-up meetings).
• Establish and publish team and project rules – such as a communication etiquette or coding standards.
• Conduct code reviews or pair programming sessions for core or critical code parts.
• Make sure to have efficient knowledge transfer within the team but also to client and user. This may not always be applicable or sensible. Sometimes this knowledge transfer may also be unidirectional.
• Use visualisations for your communication. Use, for instance, a visible whiteboard accessible for everyone in the team
• Plan your software development into cycles or iterations. Identify the core and most critical components, priories and start with the most important ones (“first things first”).
• Be tolerant towards change (changing requirements and change requests). Avoid rigid or inflexible structures, process, tools or methods.
• Try to produce executable software at the end of every iteration.
• After you finished an iteration a further increment to the final software product is added.
• Try to keep design and software simple. Have possible extensions in mind but focus on producing executable code at least at end of each iteration (“keep it short and simple – KISS”)
• Make use of early feedback from various stakeholders such as your client or end users. User acceptance tests could possibly be integrated into every iteration.
• In early stages even use paper and pen to sketch software designs or early prototypes.
• Make use of a test-oriented development where you write the test cases first, at least for core or critical code parts.
• Build and integrate tested parts frequently (e.g. daily).
• Set up communication means such that a close contact with client and end users is possible.
• Try to have regular, frequent and brief intra-team communication without formal overhead (e.g. daily stand-up meetings).
• Establish and publish team and project rules – such as a communication etiquette or coding standards.
• Conduct code reviews or pair programming sessions for core or critical code parts.
• Make sure to have efficient knowledge transfer within the team but also to client and user. This may not always be applicable or sensible. Sometimes this knowledge transfer may also be unidirectional.
• Use visualisations for your communication. Use, for instance, a visible whiteboard accessible for everyone in the team
