Agile Software Development — A game changer of software development process.
Agility is actually good! Want to know why? Check this out!
What is Agile?
According to oxford dictionary, agile means able to move quickly and easily. In the context of software development, agile means the ability to create and respond to change, so that it can deal with uncertain and turbulent environment.
What is Agile Software Development exactly?
Agile Software Development is a term for any frameworks and practices that based on the values and principles of Agile Software Development’s Manifesto.
The focus of Agile Software Development is on people doing the work and how they can work together. And, the community of Agile Software Development put a big focus on collaborating and self-organizing team.
Self-organizing team means that it have the ability to know and choose how they are going to approach things on their own. It also means that the team is cross-functional and everyone on the team has it’s own skill sets that relevant with the goal of the team.
Manifesto of Agile Software Development
Individuals and interactions over processes and tools
In agile, human interactions are so powerful because with a simple conversation about some issues on a product will give you many solutions in a short time. If we want to try using some specific tools such as emails, spreadsheets, and other documents to discuss issues on product, it will likely to take more time than using a simple conversation.
Working software over comprehensive documentation
With agile, the only way to measure that the product has been finished is by produced the working functionality associated with the requirements. For software products, working software means the software at the very least, developed, tested, and integrated.
Here is the difference on agile and waterfall software development when determining progress of the software that being developed. Let’s say that we already have 60% of software to be done. In waterfall, it means that 60% in progress and 0% done, so that we can deliver the software to the client. But, in agile, it means that 60% functionality is of working software is done, so that we can deliver the software to the client with 60% requirements of the software.
Customer collaboration over contract negotiation
Agile doesn’t encourage locking the details of the software requirements at the beginning of the contract because we don’t have a complete knowledge about the problem that may be happen later in the development. It is better to have flexibility for changes as we learn more about the product while the development process is running too.
Customer can collaborate to adjust the requirements at any time in the development process, so that the developer and customer will have such a partnership experience. Because of the iteration of adjustment to software that made by the customer, it will likely made the end products better suited with customer’s needs.
Responding to change over following a plan
Changes is a very valuable thing to create a great products. Any team that can respond quickly to customers, product users, and the market are able to develop or create a helpful and relevant products that people needs.
Because of the flexibility of agile development, it can accommodate change systematically and increase the stability of product because the changes are predictable and manageable.
How to make a self-organizing team
- Collaboration and teamwork: Embrace a highly collaborative style of working and operate as a true unit.
- Competency: Exhibit strong confidence in their own capabilities and the capabilities of their team members.
- Regular growth and improvement: Seek opportunities for growth and look for ways to improve what they’re doing.
- Trust and respect: Trust in the skills of others and trust that everyone will get the job done as planned, as there is no manager holding everyone accountable.
- Motivation: Team members should have a high level of motivation.
- Continuity: Finding the right skills, establishing high levels of trust, and ensuring motivation are key to success.
- Ownership and commitment: Exhibit a strong sense of ownership over their success and a commitment to all the previous principles.
To sum up, Agile Software Development has a lot more of positive value than traditional software development. Let’s try this approach on your next projects!
Next, we will be talking about Scrum, one of framework in Agile methodology.
Scrum
Scrum is a framework for organizing and managing work. We can imagine Scrum as a foundation and walls of a building. Scrum values, principles, and practices wold be the key structural components. We can’t change the structural components of Scrum, but we can customizing inside the structure of Scrum, such as adding fixtures and features until we have the process that works for us.
Roles
- Product Owner
Product owner is responsible for deciding which features to build and their build order. He maintains and communicates a clear vision that the Scrum team is trying to achieve to all other participants. He has the responsibility for overall success of the solution that being developed or maintained by the Scrum team.
- ScrumMaster
The ScrumMaster helps everyone involved understand and embrace the Scrum values, principles, and practices.She needs to help the Scrum team to develop their own high performance Scrum approach.
She should help the team resolve issues and make improvements to its use of Scrum. She is responsible for protecting team from outside interference and removing obstacles that inhibit team productivity.
ScrumMaster isn’t the same as the traditional role of project manager or development manager because it’s doesn’t give the authority to exert control over the team.
- Development Team
The development team is a diverse, cross-functional collection of people who are responsible for designing, building, and testing the desired product.
It is a self-organized team, so it can determine the best way to accomplish the goal that set out by the product owner without intervention of people outside the team. Usually, it has five to nine people in size. Its members must collectively have all of the skills needed to produce good quality, working software.
Scrum can be used on product development that require large teams. However, rather than having one Scrum team that consist of, say, 35 people, there would be better to have four or more Scrum teams that consist nine or fewer people in each team.
Activities
- Product Backlog
- Sprints
- Sprint Planning
- Sprint Execution
- Daily Scrum
- Done
- Sprint Review
- Sprint Retrospective
References
- Agile Project Management For Dummies 3rd Edition.