Agile Software Development
Our programming team uses an agile software development methodology to build commercial-grade cloud-based management information systems.
Agile software development is based on iterative and incremental development, where requirements and solutions evolve through collaboration between cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change.
Agile software development is distinct from the more traditional waterfall model: a sequential process in which work follows carefully prescribed steps. Although waterfall development has the potential to produce excellent and comprehensive software system documentation, it tends to suffer budget and schedule overruns.
Agile development shifts more focus to customer collaboration and working software.
Critics claim that agile models are too unstructured, but our twelve years of experience at InSite have proven (again and again) that agile methods produce a much better product in a much shorter time-frame.
Agile vs. Waterfall Software Development
Principles of Agile Development
We are uncovering better ways of developing software by building better products and helping others do the same. Through this work we have come to value:
Individuals and Interactions
over processes and tools
over comprehensive documentation
over contract negotiation
Responding to Change
over following a plan
While there is value in all of these items, we place greater value on individuals and interactions, working software, customer collaboration, and responding to change.
The principles of agile software development are:
- Our highest priority is to satisfy you, our customer, through early and continuous delivery of valuable software.
- We welcome changing requirements, even late in development. Agile processes harness change for your competitive advantage.
- We deliver working software frequently, every few weeks, and sometimes every few days.
- Business people and developers must work together daily throughout the project.
- We build projects around motivated individuals. We give them the environment and support they need, and we trust them to get the job done.
- The most efficient and most effective method for conveying information within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention is given to technical excellence. Good design enhances agility.
- Simplicity -- the art of maximizing the amount of work not done -- is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, we reflect on how to become more effective and more efficient, then we tune and adjust our behavior accordingly.