All about the Agile Process at SilverStripe
What is Agile?
Agile is a way of running projects and software development that is places an emphasis on people, communication, working software, and responding to change. Its principles are summarized in its seminal declaration, the Agile Manifesto.
Our Agile methodologies engage an iterative workflow and incremental delivery of working software in short time-boxed iterations. An iteration is essentially a small release of software. Generally during each iteration many activities will occur in parallel, such as requirements, coding, and testing. Iterations are typically a fixed length (although this length varies among projects) and thus are referred to as time-boxed. The time allocated to each iteration is sometimes referred to as a cycle time.
Agile vs. Waterfall
Software projects used to be run using a waterfall methodology. Strict requirements written into a document, Descriptions of what the software was supposed to do were written into a different document called a functional specification, and many dead trees later, someone would start to write code. This way of creating software came from the physical engineering disciplines. If you are building a bridge, it's very important to get the design correct the first time around because the costs of changing later down the track are so high (not to mention that people's lives may be at risk!).
With Agile, we now recognize the fundamental differences between building software and building bridges. Especially in the fast-paced web world, it's critical to allow for emergent business requirements to affect the course of development of software:
- Agile favours smaller iterations of development.
- Agile focuses heavily on risk management.
- Communication with you throughout the project is crucial while heavy-handed documentation is avoided.
- We have flexible processes and tools in place to guide our projects to successful completion.
The Sum of the Parts
At SilverStripe, we're old hands at Agile. We've been doing it for several years now, and we are 100% confident our way of building your website is the best way to ensure success of the project.
When we use the term "Agile" we are actually referring to various components of how we run projects. Specifically, Agile encompasses business analysis, risk management, software development, and quality assurance. Agile also refers to how we engage with you. For example, many of our clients have multiple-year engagements with us that are comprised of multiple projects. Each project may have multiple phases, each of which is based on needs determined at the time, not at the beginning of the engagement. This is important because invariably, needs specified at the outset of a project will change over time.
Places you may also like to visit:
- The Future of Software Development
This is an excellent article that talks about the history of software development and why the Waterfall methodology is not appropriate for web development. - Extreme Programming Lessons Learned
This is a set of development practices from the Extreme Programming camp. At SilverStripe we use many of these techniques as part of our Agile process.
