Agile Software Development


Designing the user experience (studying the users, designing the system metaphor, detailing the screens) has a lot of cross-dependencies with programming the functions. Because there is no simple answer, use the principles in this book and watch closely the dependencies between user experience (UX) design and program design.

  • You will probably investigate the users' needs and develop the initial system metaphor as a separate activity prior to system software development because a long lead time is probably needed to make those decisions.

  • After the initial UX model is built, you can probably grow the screens incrementally just ahead of the software that supports it.

  • The UX designers probably need at least a week or two of lead time (ahead of the programmers) to get their thoughts in order for any given function. The lead time question has to be revisited frequently because the answer is likely to vary by team and by assignment. Don't get trapped into thinking that there is only one answer. Here, more than in other places, the optimal strategy varies widely.

Avoid the common misunderstandings of agile development.

  • Bear in mind that agile means "pay attention to current realities" (as opposed to "no planning"). Always have a coarse-grained long-term plan and a fine-grained short-term plan. Learn a fast planning technique[1] and rebuild the plan frequently.

    [1] See, for example, the Blitz Planning technique described in (Cockburn 2005a, p. 52).

  • Don't believe that "more agile" equals "better." Agility, however nifty, is only one priority for a project. Balance the desire for agility with the other priorities clamoring for attention. Learn to mix agile strategies into your other priorities.

  • Don't believe that "shorter iterations" equals either "better" or "more agile." Otherwise, your iterations will degenerate into nothing more than planning windows that are not connected with either business value or delivering a valuable system. Find an iteration length that works for your team and connects with business use.

  • Incorporate automated unit testing, automated system testing, and automated system builds with tests into your team's daily activities. Frequent integration with automated testing lets the team experiment, recover from mistakes, and follow evolving needs more easily.

  • Demand frequent delivery of running, tested features.[2] Determine how frequent "frequent" is, and how delivered "delivered" is, but be clear that demerits accrue for each layer of the software not integrated and each stage removed from the real end users to whom you must deliver. Connect the frequent deliveries to business value.

    [2] Thanks again to Ron Jeffries for this outstanding phrase.



Agile Software Development. The Cooperative Game
Agile Software Development: The Cooperative Game (2nd Edition)
ISBN: 0321482751
EAN: 2147483647
Year: 2004
Pages: 126

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net