> Best Practices

There are many different best practices in the software development industry. InSite gives special attention to two specific best practices: designing for change, and evolutionary delivery. These best practices are primary drivers for most of our software projects.

Every system we implement has future evolution in mind. In other words, we fully expect that every solution needs to grow, evolve, and adapt to meet the changing needs of the organizations that use them - as they are themselves growing, evolving, and adapting. This is a natural fit with our iterative customer-driven software development philosophy.

Designing for Change

Some of the most damaging influences on a software project schedule are late, unexpected changes to a product: changes that occur after initial design is complete and after implementation is underway. Projects that deal poorly with such changes are often perceived as slow, even if they are on schedule up to the point where the changes were introduced.

This best practice emphasizes rapid response to changes: changes in market conditions, changes in a customer's understanding of the problem, changes in underlying technology, and so on. When this best practice is applied correctly, it lays the groundwork for long-lived programs and it provides flexibility to minimize the cost and schedule impact of late (or entirely new) requests.

Evolutionary Delivery

This is a software project lifecycle model that delivers selected portions of a program on a regular basis, and it provides the ability to change product direction mid-course in response to customer requests. When it is thoughtfully applied, it has significant benefits. These include:

  • Reducing the risk of delivering a product that you don't want (avoiding needless expense and/or re-work)
  • Making progress visible by delivering software early and often
  • Supporting frequent product releases
  • Reducing cost and schedule estimation errors by allowing for re-calibration of estimates after each delivery
  • Reducing the risk of integration problems by integrating early and often
  • Improving overall product quality, leading to a more balanced distribution of costs, risks, and resources