Generally speaking, we prefer to take an agile approach to design and development.  The agile approach involves a prioritization of what is absolutely most important for the organization to deliver to its target audience, breaking this down into detailed requirements, designing and delivering it in a short period of time, and then iteratively improving on that initial prototype.

The idea behind agile is that a) we will never know all of the requirements up front, b) whatever requirements we do know will likely change over the duration of a long-term project, and c) we will never have enough time or money to do everything we want.  So, we need to prioritize what is most important, get that done, discover things that we didn’t know before, and then continually and iteratively improve over time.

Agile means a lot of different things to a lot of different people, but to us this means:

  • Client-driven prioritization and periodic re-prioritization of our work
  • Absolute transparency of our activities, progress, and obstacles
  • Early and frequent user involvement to steer the user experience
  • Early and frequent integration so the benefits can be realized immediately
  • Planned replacement and obsolescence
  • Short, rapid, iterations of the software development life cycle
  • Strategy driven decision making
  • Realization that we don’t know all the requirements and details in the beginning
  • Realization that known requirements and details are always subject to change
  • Realization that we will never have all the time and money to do everything
  • Constant focus on the most important priorities and features at any given time
  • Flexibility in the requirements and acceptance standards if costs must be fixed