Roughly 80% of the value that a customer receives comes from the 20% of the application features. Thus, agile methodology helps developers to maximize the value for their customers by prioritizing and focusing on those key features.
How to Implement agile development?
- Breaks down the project into smaller components. What if the broken component is still big enough? Simple, break it down even further.
- Now, prioritize those components in such a way that those components provide maximum value for the customers.
- Calculate time for those components and finally start building.
In agile software development, the task performed to build those components are called user stories. Likewise, the estimated time for the completion of the stories is called ‘estimates’.
Traditional vs Agile Methodology
Generally, software development comprises of analysis, design, coding and testing phases. In traditional software development method, the project required each phase to be completed before moving to the next phase.
However, in agile development multiple phases can run simultaneously. User stories are iterated over these multiple phases to form a refined product. Here, the roles of developers, analysts, testers and designers blur because developers write unit tests, testers can do analysis, analysts & designers can plan and test as well.
User Stories
Have a conversation with the customer and prepare list of features that the customer values. Going too much in depth early on might be waste of time so, prepare low level detail of those features as those features may change.
Follow the INVEST method while creating a user story. i.e., Stories should be independent, negotiable, valuable, estimable, small (usually taking 1-5 days) and testable.
Some example of user stories includes:
- Create user account
- Notify subscribers
- Cancel subscribers
- Let user watch movies
Stories gathering techniques
- Brainstorm ideas with customers, developers, designers, analysts, testers and all the other stakeholders involved in the project. This is idea gathering phase so welcome any and every ideas.
- Filter out the ideas that follows INVEST method so that the project is within the project’s budget, time and resources.
- Use prototypes, user flow, user persona and/or any visual tools as per the project requires and develop user stories with available information.
Iterations
A project generally consists of 10-40 user stories and lasts 3-6 months. However, agile methodology usually demands developers to develop the working software within one week or two weeks and present the software to their customers. The software need not be the final product. Obviously it’s not possible.
Rather, the software usually consists of 3-4 user stories. This version of software with 3-4 user stories is called iteration. Each iteration is presented to customers in order to get their feedback. Eventually, the multiple iteration, testing and feedback from customer helps to build quality software.
Interestingly, setting up the project, gathering information and every steps involved before programming is called iteration 0.
Estimates
User stories are assigned points based on their complexities known as estimates. for example, a simple user story that can be completed within a day is assigned 1 point. A story with medium complexity is assigned 3 points and the story with even more complexity is assigned 5 points. What if we have even more complex stories? In such case, we divide the story into smaller stories.
Furthermore, the purpose of estimates is not to predict the project but to work towards achieving it. Initial estimates can vary up to 400%.
Monitoring the Project
Agile methodology is not fail proof. Features may change, team members may quit in the middle of project or deadlines may change. Uncertainties and changes may hamper the progress of the project. Even with everything working fine, the project might progress slower than we estimated.
Monitoring the project helps to determine the health of the project and answer what could have been done better and what was done right?
Burndown Chart
Burndown chart is great way of visualizing the progress of the project. Y-axis represents the story points and x-axis represents the iteration. The bar graph represents the remaining story points over the iterations. Burndown chart are great way of determining the speed at which team is completing user stories i.e., team velocity. Also, stories are either complete or incomplete, so team can not assign .5 or some points to incomplete stories.
Communication
At the end of a week (iteration), team communicates with customers with the working software and improve from the feedback. Similarly, the team releases the software by the end of the quarter.
Developers communicates through documentations among themselves. However, documentation is less effective and interactive. People may misinterpret the documentation. Documentation should be done only when necessary.
Alternatively team can communicate with each other through daily stands where they discuss what did they do yesterday, what obstacle did they face and what will they do today. Agile methodology suggests team to work together in a office instead of remote working so that teams can communicate better, be more engaged, organized and productive. However, it is also possible to implement agile methodology in remote work.
Remember, there is also no one rule to follow. You can adapt as the project demand and make your own communication strategies.
Working Agreement
Developers need some working agreement to work together and know what to expect from each other’s work. This helps the project to run smoothly.
Working agreement may be something like this:
- Working hours from 9:00 to 16:00 or flexible working hours
- Daily standup at 10:00
- Include testing
- Weekly demo to customer on Saturday at 11:00
- Customer available on Saturday at 11-13
- Help team members when needed without hampering your work.
Shared values of the team might be:
- Not cutting corners.
- Agreeing to disagree.
- Handling truth.
- Not assuming but asking.
- Writing test when in doubt.
- Craving feedback and checking ego.
Language Domain
The terminology used in the project should be consistent. If device is mentioned it should represent “Samsung” phone or any specific device in the whole project. When “device” is mentioned, two people should not think of two different devices. Likewise, measurement points for project should be well defined.
Software Engineering
Agile development is incomplete without a strong software engineering backbone. Unit testing, refactoring and continuous integration ensures that agile methodology is properly implemented.
Unit Testing
Unit test is the process of testing individuals components, functions of the projects. It helps to find and fix the bug early in the system.
Refactoring
Refactoring ensures the code is clean, reusable, readable and manageable. It can be as simple as changing the name of the variables to make it more readable or rewriting the functions in the code.
Continuous Integration
Agile methodology suggests integrating the code to main branch regularly and testing it as early and often as possible.
Agile methodology is a philosophy popular in software development, which can also be implemented in our life. It teaches us to break down tasks into smaller ones, prioritize them, execute them and repeat that process until we reach the goal. The aim is to deliver the product quickly, test it quickly, get feedback and learn quickly from the failure if any.
If your wish to learn Agile methodology in depth, read “The Agile Samurai: How Agile Masters Deliver Great Software” by “Jonathan Rasmusson”.
Leave a Reply