Written with contributions from Michael Mariani, Tim Mattix, Ryan Finnamore and many others.
You might think the word “agile” is synonymous with “paralysis” to see some organizations react to the idea of introducing agile development principles to their traditional systems development lifecycle (SDLC). Concerns about introducing too much change to the organization can stop agility discussions with the business before they start.
But if the organization’s goals include increasing the speed of development, quickly uncovering defects, improving business-IT understanding and raising the level of overall solution quality, here are 10 agile ideas to consider. These are based on lessons learned from a team who transitioned to agile several years ago and has consistently refined their approach to improve their quality and productivity. They offer an incremental approach for introducing some very sound practices to your development process. Just be careful about throwing around the word “agile” and focus instead on the benefits to the users.
Ways to Increase Agility
- To baseline a project in 2 weeks or less, use a cross-disciplinary team to rapidly move through the planning and estimation process to gain early consensus on scope , schedule and budget. Members of this team need to carry a blend of methodology experience, business acumen and functional understanding, architecture, and project modeling.
- Create prominent visuals that everyone can see to communicate progress, deadlines, assignments, ideas and unresolved issues. Establish visual requirements early on in the process – spreadsheets, whiteboards, flip charts, etc.
- Create an environment that promotes direct and frequent face-to-face interaction (there should be limited need for email between analysts, architects, and developers). Understand that new offshore teams initially require elbow-to-elbow time with onshore constituents to breakdown communication and cultural barriers.
- Frequent stakeholder interaction minimizes re-work, builds trust, and establishes decision-making accountability. Set expectations early with them around a recurring review schedule and informal updates.
- Foster consistent interaction between the technical architecture and analysis teams when determining scope and completing requirements to minimize the risk of oversimplified or incorrect assumptions which eventually could have a drastic impact the ability to deliver the expected end result to the customer.
- When necessary, embrace traditional software development practices to mitigate quality concerns. We encourage code and story analysis reviews and software architecture modeling work before it gets into the developer in-box.
- Include QA reviews as a required step in the analysis sign-off process. Their perspective when reviewing functionality can unearth issues that otherwise would have not been discovered until too late in the project.
- Don’t under invest in automated test development. The shift to test-driven development is an absolute must when running multiple teams concurrently on a single code base.
- Schedule demonstrations to key stakeholders throughout the development process. Although there may be challenges with presenting incomplete functionality, discovering missed or incorrect assumptions as early as possible is worth the risks.
- Don’t wait for development of a feature to be 100% complete before starting to test it. Agile testing practices allow for incremental testing to occur while the software is still warm – a great benefit to the developer given course correction can occur while it is fresh in their mind.
What agile tips would you add to the list?
Image shared by chucklepix
If you liked this, you might also like:
- Are Agile and CMMI Compatible?
- The Agile CIO as a Business – IT Marriage Counselor
- Is Agile an “All or Nothing” Proposition?