Before I start with the article, it is prudent to establish my credentials to write on this topic. I am Piyush Ramavat, CTO at Gyrix TechnoLabs. With 10 years of experience under my belt, I’ve worked with companies big and small on Services as well as Products. With 6+ years of experience in India, I have been working in Australia for last 4 years as a Senior Software Engineer. I have used Waterfall, Agile and Hybrid Methodologies throughout my career and have expertise in driving them in a Start-up environment. That’s it about me.
Ideal Audience: This is a technical article and may not suit a beginner, it is better to have some understanding about Agile before going further.
Here are few links that may help:
So what is Agile ?
Agile management is known since 2001 and is applicable for all type of industries. Agile methodologies are very famous and quite dominant in the world of software development.
There are numerous practices like Scrum, Kanban etc. Each has their own pros and cons and here are numerous tools as well to digitally manage the projects.
The Manifesto for Agile Software Development
Individuals and interactions
Self-organization and motivation are important, as are interactions like co-location and pair programming.
Working software is more useful and welcome than just presenting documents to clients in meetings.
Requirements cannot be fully collected at the beginning of the software development cycle, therefore continuous customer or stakeholder involvement is very important.
Responding to change
Agile methods are focused on quick responses to change and continuous development.
The Agile Manifesto is based on twelve principles
- Customer satisfaction by early and continuous delivery of valuable software
- Welcome changing requirements, even in late development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective, and adjusts accordingly
Well, manifesto and principles look quite impressive and feels like if we follow them strictly we’ll be able to deliver great quality product; on continuous basis; on time.
Q: But how do we do that?
A: Firs thing Agile says is “being flexible”. There are many practices and methods available like Scrum and Kanban to manage and stick to above principles. So instead researching on all just use one that is already available and proven to be successful.
Q: We are a Start-up, we are inexperienced in Agile methodologies, we don’t have additional resources (Agile Lead / Scrum Master) to help drive our development. So how do we start being Agile team?
A: It’s simple, you do not need expertise in Agile practices. You just need enough knowledge about agile practices and software development.
Scrum: Scrum is an iterative and incremental agile software development framework for managing product development. It is a flexible, holistic product development strategy where development team works as a unit to reach a common goal. The key principle of Scrum is – It allows the customers to change their requirements. Working on goals rather than entire product helps achieve this quite effectively.
This also ensures that customer gets what they want and also prevents rework or change request efforts.
Kanban: Kanban is a method for managing “knowledge work” that balances demands for work with the available capacity for new work. Work items are visualized to give participants a view of progress and process, from task definition to customer delivery. Team members “pull” work as capacity permits, rather than work being “pushed” into the process when requested.
In software development, Kanban provides a visual process-management system which aids decision-making about what, when and how much to produce.
In short Kanban method shows the current work in progress, team’s capacity which allows everyone including customer to see current situation. It allows better planning and also prevents over committing.
Familiarise yourself with few agile terms
Backlog: Product requirements that are to be developed and delivered (Features, bug fixes, non-functional requirements etc)
Epics, Stories: Product backlogs are commonly written in Epic & story format. Epic represents requirements for one entire feature and stories are smaller sub features of which are part of Epics.
Sprints, Iterations: Sprint is timeboxed effort that is restricted to a specific duration (one week, two weeks). Sprints are repetitive hence iterations are commonly referred as sprints.
Hope, you’ve brushed up your understanding of Agile today. In the next article I will go in detail about my experience of implementing Agile in Startup environment.