The traditional model for software development is the waterfall approach, where development “flows” downward like a waterfall through six phases: analysis, design, implementation, validation testing, integration and maintenance. Purists of this model maintain that a new phase should not be undertaken until the preceding phase has been completed, reviewed and verified.

This process is effective but has its flaws — it lacks iterative processes and wastes time due to the duration of each phase. This approach is best suited to projects with fixed requirements, a firm, stable product, and technology that is clearly understood.

The History Of Agile Software Development

Throughout the 1990s, a new process emerged as an answer to the waterfall process: agile development. This movement culminated in 2001 when 17 software developers publicized “The Manifesto for Agile Software Development.”My software company, which develops software-enabled solutions designed to create compelling experiences, relies daily on agile software development techniques.

The agile process is dynamic by nature, encouraging rapid and flexible response to change. It’s all about adaptability. As a by-product, the agile process forces a different way of thinking with regard to developing and continually improving development. And because it relies on team effort with varied levels of expertise, the process is completed more efficiently and smoothly.

Following are the 12 principles, along with notes that demonstrate their success within our daily workflow. Remember, the most effective solutions occur when all 12 are used:

1st Principle

The first principle is to offer early and continuous delivery of valuable software solutions for continued customer satisfaction. Note that customer satisfaction is mentioned in the very first principle.

For us, our focus is first and foremost on the customer. Providing them with software solutions early and throughout the development process creates constant rapport, which naturally strengthens client relations.

2nd Principle

The second principle is to welcome changing requirements, regardless of whether you’re in late stages of development.

We recently had a client in the energy space that needed to implement some major changes just as we were close to project completion. The last-minute change was necessitated by a new release from our client’s biggest competitor. In order to remain ahead of the competition, our client needed us to enhance some features prior to rollout. By abiding by this principle, we were able to implement these last-minute updates without any drama or backlash.

3rd Principle

Deliver working software frequently, preferably on a weekly (rather than monthly) basis. Clients are more satisfied when presented with a functioning project rather than just receiving some documents. This simplifies the process, keeps clients happy, and helps deliver software more quickly.

Just like in the first principle, this also keeps the focus on the clients. Shorter timeframes are a must nowadays, especially considering the competitive landscape.

4th Principle

The fourth principle requires close daily cooperation between developers and business people. We make sure to have weekly contact between developers and the business people on both teams. This keeps timelines tight and keeps confidence building, which naturally creates better client relations.

5th Principle

All projects are built around motivated developers — ones who can be trusted. This is exactly why you should only hire the best. Keep this principle in mind when bringing on new talent. There should be no excuse for lack of motivation and trust. Make your team leaders well aware of this and ensure that they keep their teams motivated.

6th Principle

The sixth principle says that the best form of communication is face-to-face. This way, things can be discussed in real time, which facilitates the development process. This is the most efficient form of communication, and it doesn’t have to be a physical presence. For us, we have a few remote developers who use Google Hangouts or Skype for face-to-face communication.

7th Principle

The seventh standard is that the principal measure of progress is working software. Nothing else. The principle speaks for itself, and should be stressed for ultimate progress.

8th Principle

The eighth principle requires sustained development with developers who are able to maintain a constant pace. Again, this principle requires developers with the utmost talent, so remember this during the hiring process.

9th Principle

For the ninth, continuous attention to technical excellence and good design is a must. This must always be at the top of the priority list. All else is worthless if the software doesn’t work properly or the design is poor.

10th Principle

The tenth principle is a favorite for us. It dictates that simplicity is essential. Learn the art of maximizing the amount of work not done. Polish and refine as you continue, but the maximum efforts should be expended on work not completed.

Going back to one our clients in the energy space, utilizing this principle alone sped up our development time. Too many developers get caught up in the finer details, which puts a major halt on the progress of undeveloped parts.

11th Principle

The eleventh principle says the best architectures, requirements and designs emerge from self-organizing teams. Make sure each team is educated in organization. The largest gains my teams realized were through disciplined training and practice of time management. These are a must for success.

12th Principle

The final principle states that the team should regularly reflect on how to become more effective, and adjust accordingly. This is efficiency at its best. While working on software, our developers end their day by briefly reviewing the day’s progress and evaluating whether anything can be completed more efficiently in later stages. Team leaders should make this reflection a must.

Concluding Thoughts

With technology changing daily, a solid development method must allow for quick changes during the evolution of a software solution. Agile provides this, helping developers to efficiently and quickly address a customer’s evolving needs.

 

This article is posted on Forbes.