When I was at InfoCamp a couple weeks ago, Erin Hawk and Samantha Starmer both spoke about how they’re working to integrate design into the Agile Software Development process. This got me thinking about some of the successes and failures I’ve seen in Agile projects and how those related back to the integration of the analyst role into those projects.
Since Agile was a methodology created by developers for developers, it tends to be fairly development centric, and a lot of Agile implementations neglect both design and requirements processes. As someone who has been in the development, analysis, and design roles of systems implementations, I have seen Agile applied with a variety of results. Overall, the projects that successfully integrated designers and analysts into the Agile process tended to have much better results.
Many projects are unsuitable for developers to be the primary group interacting with stakeholders (that’s another post altogether). Integrating designers and analysts into an Agile project helps ensure that the end product meets both business and user needs the first time (ie; on time & on spec). Not to mention, it makes the developer’s job easier by cutting through a lot of the ambiguity around a project and reducing the number of times developers will have to change what they’ve made. Unfortunately, since Agile stresses speed and iteration over carefully planned designs, it’s not necessarily easy to integrate that into the process.
Here are four of the lessons I’ve learned on how to succeed in Agile development from an analyst’s point of view.
1 – Be an agile waterfall
Agile development focuses on rapidly developing, testing, and releasing a product, which has a tendency to squeeze out designers and analysts . However, many projects and products are so complex, and have so many stakeholders, they require specialists (aka designers & analysts) to handle that complexity.
The best Agile projects I’ve worked on keep all of the phases of the Systems Development Life Cycle, but compressed them down into small and fast chunks. By reducing the project into a cluster of discrete but related deliverables, ie; user stories, you can keep all the phases of the SDLC but still move at a rapid, iterative pace.
2 – Use staggered phases to keep designers & analysts ahead of developers
One of main reasons that Agile has gained so much popularity is that developers and organizations became fed up with lengthy requirements gathering and design processes. Such processes tend to lead to specs that are out of date by the time the developers get around to them.
By having designers and analysts work one phase (or two phases at most) ahead of the developers, organizations can deliver just-in-time specifications. Ideally, the development team can put together a rough set of initial stories and prioritize work accordingly at the beginning of the project. After that, an initial sprint (called sprint zero by some) can give the designers and analysts time to get ahead of the developers while they set up dev environments and take care of any other start up items they have. Sprint length will vary from organization to organization, but in my experience two weeks is a good length of time for each group to do a thorough job with their current tasks.
3 – Coordination & communication is key
I can’t stress enough that everybody needs to be in constant communication throughout the process. As analysts are working on requirements, they should be giving developers a heads up on what’s coming down the pipe. This keeps the developers abreast of changes, and there will always be changes. While developers are programming a current set of tasks, analysts can provide feedback and integrate any changes the developers want back into the requirements documents. A good project manager is often key to this process, as project managers are skilled at keeping up communications and preventing the geeks from siloing up.
4 – You’re either all-in or you’re all-out
Either everybody is working on the project, or nobody should be working on the project. One of the biggest wastes of time is when development resources get pulled from a project, but the analysts and designers keep going. In the best of cases it takes 6 months for the developers to come back, and keeping the rest of the team on the project will lead to a waterfall style mountain of obsolete design documents. In the worst case, the project gets cancelled, resulting in wasted effort by the design and analysis teams. If one team gets pulled from the project, management should sideline the project until everyone can get back to it.
Those are my 2 cents on the matter, and I’d love to hear about your experiences in integrating design and analysis into Agile projects.