If you’ve ever been involved in web, application or software development or any kind of media production or IT project then chances are you’ve run into some sort of methodology or project management methods. You might be familiar with PRINCE2, PMI and the Waterfall Model. In some cases companies also develop their own internal project methodologies or cusomise or adapt existing methodologies to fit their own structure with varying degrees of success. If you are familiar with any of these methods you may also have reconised that a lot of their principles often don’t work as well when internal and external requirements as well as market conditions frequently change. This is very often the case when dealing with website development and web application development projects and perhaps even more so with mobile application development projects. If some of this sounds familiar then perhaps it’s time for you to have closer look at Agile Development. In this article we’ll cover the basics of Agile and in particular a at Scrum.
What is Scrum and Agile development?
Agile development is uses an iterative process, rather than the waterfal method, and focuses on shorter release cyles with constantly evolving requirements through collaboration between cross-functional teams. Agile allows development to be adaptive (or agile) to respond to changing market conditions or internal or client requirements.
Scrum is a lightweight agile development process framework for managing projects. It is widely adopted within software and web development but the principles can be applied to virtually any type of project . It includes a set of practices, predefined roles and artifacts based on an iterative agile process cycle. Scrum is not a definitive set of rules for how to do thing but more of a holistic approach to development with a set of guidelines and principles rather than a strict development methodology. In a way you can think of Scrum as a sort of framework for project management but it’s much more than that..
Basic requirements for Agile iterative development:
- Iterations must have fixed time boxes and be less than 6 weeks long
- Code at the end of the iteration must be tested by QA and be working properly
The Nokia standards for Scrum:
- A Scrum team must have a product owner and know who that person is
- A Scrum team must have a Product Backlog with estimates created by the team
- The team must have a Burndown Chart and know their velocity
- There must be no one outside a team interfering with the team during a sprint
There are many ways you could implement Scrum and successful formulas will vary from organisation to organisation. To effectively use Scrum and Agile you should embrace the princples and adapt the process to fit your team and your organisation. Part of the principles of Agile is to constantly evolve and that includes internal processes as well. After each sprint or cycle the team reviews what went well and what did not go so well and commits to improving at least one achiveable thing during the next cycle. Over time the team becomes both more productive and generally happier as there is less friction and they are able to deliver more.
- To do Scrum well you need to adapt it to suit your own organisation, team and project or product you are working on
- To do Scrum well you will need to continously evaluate and improve on your processes
Even though Scrum was originally intended for managing software development projects it can be applied to any number and types of project as a general apporach to project management.
Basic principles of Agile and Scrum
- Agile avoids "Big design up front" allowing for decisions to be made at the last responsible moment
- Agile uses iterative cycles with shorter bursts of development known as "Sprints"
- Agile emphasises real-time communication over written documents, preferably face-to-face.
- Agile teams tend to sit together and include all the people needed to complete the project/product/software (cross-functional teams)
- Agile focuses on delivering smaller working features or system components as the primary measure of progress
- Agile aims to release early and release often
- Agile tends to produce significantly less written documentation, instead focuses on self-documenting and easy to use systems.
Why use Agile?
Market conditions and requirements change very quickly especially in an online environment and the digital world in general. It is typically very difficult to foresee all the vital requirements and obstacles at the beginning of a project. Client and/or internal requirements will inevitably evolve over time and move further and further away from the initial specification so even if you deliver the project to the exact specifications given it will not succeed or meet customer, client or market expectations. When using Waterfall or similar methodologies the core requirements will have changed even before the planning and documentation phases are complete and shift even more during the duration of the project. Agile allows you to make decisions at the last responsible moment and continuously adjust the direction of the project to ensure you meet changing requirements.
Scrum explained in less than 10 minutes
For a quick introduction to the Scrum process check out this video by Hamid Shojaee (Axosoft.com). It’s short, concise and quite entertaining. Not everything is explained in detail but it is a good introduction and covers a lot of ground in just a few minutes.
Agile Values and Principles
Manifesto for Agile Development – Values
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Arie van Bennekum
Robert C. Martin
Principles behind the Agile Manifesto
We follow these principles:
- Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and 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 to technical excellence and 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, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
I’ve been working with Agile and Scrum development for almost 5 years now. During that time I’ve had the privilege of experiencing Scrum from the perspective of all the core roles initially as a Product Owner, the primary designer in Scrum Team and most recently Lead Designer and Scrum Master in a Web Development Team. While there’s been some challenges along the way I couldn’t imagine going back to using a different development process. Whether you’re looking to change development methods, are fed up with Waterfall or you’re just getting started I recommend you look into Agile and Scrum.
Do you have any experiences with Agile Development? Share your war stories in the comments below.