The special guest lecture on “Agile Scrum methodology” was given by Mr. Rajeev Jayawardena of eCollege Lanka.
Research conducted in the IT industry has shown that 70% of software development projects end in failure. This is a staggeringly high number. A project is said to have failed if a) it doesn’t meet client requirements, b) has budget or time overruns. It was further revealed that most of these failures were due to incorrect requirements gathering, general disconnect between the client and the developers, unrealistic estimates and the overall inflexibility of software development methodologies such as the iterative and waterfall methods.
Agile is a new development concept that is practical and flexible, and attempts to avoid these failures.
The main aim of Agile is to deliver working software to the client at regular intervals. By having short (2-3 week) iterations, teams are able to get quick feedback and make necessary changes to the requirements and design. Working software serves to both satisfy the customer (who is seeing results), but also increases the motivation and drive of developers, who see a slowly developing product being built part-by-part (the lecturer described this as “your baby”).
Agile also attempts to change human behavior in a manner that is more open and adds value to the project. Individuals are respected and trusted. Face-to-face interactions between the team and the client are considered the best form of communication. Documentation is kept to a minimal. Teams are self-organized, and the failure of one is seen as the failure of all. All aspects of the project (including the requirement and design documents) are continuously refined and improved.
The Agile Principles:
- Eliminate waste (Things that add no value to the project, including over-complication)
- Build quality in (Use unit testing, and peer reviewed code)
- Deliver fast
- Continuously improve system (Giving the client a working software and getting constructive feedback)
- Defer commitment (Know your work capacity, and only take on realistic (doable) amounts of work)
- Respect people (Their strengths and weaknesses)
- Create knowledge (Share what you know by writing documentation)
Lack of Communication and Teamwork = Failure
Scrum: Inspired by the scrum in rugby. The whole team has to be involved, and the failure of one would mean the failure of the entire scrum.
Teams: Maximum of 7 to 9 individuals (excluding Product Owner and Scrum Master). Teams have to be cross-functional (Team has all the resource people for different jobs, from devs to QA people to UI designers etc. Individuals are expected to handle multiple roles as well – devs are expected to write documentation, QAs are expected to code etc.)
Timeboxing: These are the iterations, or set time durations. Usually 2 or 3 weeks. There are no time extensions.
Feedback and learning through frequent delivery: Frequently delivering working products give you a wealth of feedback, which you can use to improve the system. To quote Matt Mullenweg: “Usage is like oxygen for ideas”.
Predictability: As the iterations go on, you become better and better at estimating how much work can be done in an iteration.
Collective and Adaptive planning to build the right products
Production and Quality
- Facilitates the team and removes obstacles faced by them. Communicates team needs and problems to higher management.
- Assists and motivates the team and helps them focus on getting work done.
- Coach the team on Scrum principles.
- Monitors the team and sees if it’s adhering to the timeline and tasks to be done.
- Manages resources and plans for optimal productivity.
- Plays the key role of representing the client
- Prioritizes the requirements (This is important because Scrum iterations are very short, and the most important features need to be worked on first)
- Clarifies requirements and provides feedback
- Negotiates with stakeholders and helps bring them to an agreement
The ideal Scrum team:
More on the Scrum lecture in our next post.