Agile

What is Agile?

Agile is a way of running projects and software development that places an emphasis on people, communication, working software, and responding to change. Its principles are summarised in its seminal declaration, the Agile Manifesto.

Our Agile methodologies use an iterative workflow and incremental delivery of working software in short time-boxed iterations. In other words, we set out a fixed length of time, and release a small working bit of software, where we do many activities in parallel, including feature prioritisation, coding, and testing. Each iteration builds upon its predecessor until the project is feature-complete.

Agile vs. Waterfall

Software projects used to be run using a "waterfall methodology." Strict requirements were 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!

But there are fundamental differences between building software and building bridges, and with Agile, we now recognise those differences. Especially in the fast-paced web world, it's critical to allow for emerging business requirements to affect the course of development of software. Agile development tends to be better for web projects because:

  • 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 developing according to Agile techniques for a number of years now, and we are 100% confident our way of building your website or web application is the best way to ensure success of the project.

When we use the term "Agile" we actually refer 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.

What Agile techniques will you use on my project?

We use pieces from Extreme Programming, Scrum, and custom bits we've learned over the years. The world of web development is more diverse than can be managed with one specific way of running projects, which is why we have taken the best of various methodologies and combined them with our own secret sauce to make our projects complete on time, on budget, and with desired features.

Does my project have to follow an Agile process?

A long time ago at SilverStripe, we didn't use Agile. What we found was that in order to complete projects we were working late into the night, yet features may not have been what the client wanted, and sometimes we'd lose money on projects because we spending much more time on them than we thought we would need to. After we switched over to Agile, we found we could complete projects with the features clients wanted and our staff could get a better job done in less time. Agile is good for us because it's good for our clients. All our projects today are run using the SilverStripe Agile method.

What happens when things go wrong?

At SilverStripe, we focus on risk prominently and strictly so that we can avoid or mitigate it as best as possible. Our secure online risk register is viewable by you, the client, at any time. Should something unexpected occur, we rely on open, honest communication with you to determine the impact to the project. We will give you choices (and recommendations) about how to proceed in those instances.

Will Agile projects take longer to complete?

Actually, we have found that using Agile decreases project length, whilst ensuring higher quality. You see working software sooner and the quality is increased because the project team will have been working with functioning software for a much longer period of time than would have been possible using non-Agile techniques.

Does it cost more?

No. In fact Agile development it usually costs less because we can more reliably deliver to timelines. Often, we will be able to build additional features for sites because of our efficiency in running projects.

With all this communication you keep mentioning, how much involvement will you need on my end?

Communication between us and you is critical, but the amount of involvement on your end is flexible and varies according to the needs of the project at any given time. You can generally expect weekly status updates however you would like them—online, on the phone, or in person. There are also usually working sessions where you can be involved a little or a lot. Talk to us about your needs and we can accommodate them.

Why doesn't everyone use Agile?

We believe everyone should. We've been using Agile exclusively since 2006 and we have very happy clients. Non-Agile ways of running projects have been around for decades. That's why they have a lot of inertia behind them. The speed at which the web operates has forced a re-evaluation of those traditional methods, and out of that, Agile was born. We expect Agile development will be significantly adopted throughout the web software world.

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.