Home Contact Us

 Site Map

     
About Us Services Products Industries Approach Careers Tech Talk
 

Home > Approach

Approach

Traditional, prescriptive methodologies take a top-down approach to project management, establishing a command-and-control system. The underlying assumption is that with enough planning and management, the outcome can be predicted and risks avoided.

These methodologies are most effective in situations where the customer's business and technical requirements will remain fairly static. On an increasing number of strategic software projects, however, prescriptive methods provide neither the flexibility nor the speed-to-market that the enterprise requires. Too often, the end result is not high-value software, but a huge set of analysis artefacts that collect dust on a manager's shelf. That's a far cry from what actually happens at the whiteboards and keyboards... or what the business really needs.

A Disciplined Approach

Agile methods are based on very disciplined processes. In fact, many of these practices are defined enough to be incorporated right into the development tools. Unit testing frameworks, continuous integration tools, and re-factoring development environments comprise a new suite of development tools that let people create better software faster.

Studies have proven over and again that the single biggest impact on software productivity is the people. Surprisingly, Agile methods are the first set of software engineering practices to be based on the way people actually develop software.

At the same time, we realize that there is no methodological silver bullet. As one of the early adopters and pioneers of Agile methods, we're well aware of the benefits and limitations of these methods. However, Agile methods contain many useful practices that are derived from some of the most successful software work in recent history. Agile methods such as Extreme Programming (XP), SCRUM, Crystal, and others recommend very down-to-earth, actionable practices such as continuous integration, test-first programming, and re-factoring.