Everything you need to know about Agile Software Development
What is Agile Software Development?
Agile software development refers to software development methodologies centred around the idea of iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. The ultimate value in Agile development is that it enables teams to deliver value faster, with greater quality and predictability, and greater aptitude to respond to change.
All that being summarized in three keywords: better collaboration, fast process and flexible to changes.
In detail, here’s a diagram that describes the whole process:
Calculating the pros and cons
Everything has its upside and downside – so does Agility. Although Agile Software Development is a bit of a trend lately, it doesn’t assure that the methodology will be a great match to your business model. Thereby, the first step to know whether Agility fits your company is to deep-dive into the values it really offers.
Flexibility and adaptation: These are seemingly the biggest superiority of Agile methodology in comparison with other methods (e.g waterfall). In agile development, the whole process is broken down into smaller iterations. At the end of each iteration, a working product shall be finished and sent to the customer for immediate comments and feedback.
Adjustments, therefore, are made in the next iteration as per customer requirements. Put it simpler, agile development is a process of constantly re-building the product until it satisfies the customers. Various versions will be made at the end of each iteration, each of which is a working product.
Hence, if there is any unexpected events or change of requirements, you don’t have to do it all over again as in the waterfall method – you just have to start from where it goes wrong.
Transparency: Agile development promotes the idea of face-to-face meetings and straight-forward communication as well as mutual contributions, therefore, all ideas, comments, criticisms, disagreements, etc are made sure to be delivered to the whole team.
This not only improves the collaboration among team members but also mitigates the possibility of misunderstanding and unnecessary conflicts, enhancing the efficiency later on.
Better efficiency: Agile development is all about cross-functional collaborations and on-time product delivery. Teams are no longer involve only people of the same positions: it diversifies from coders, designers, testers to QA, with which each of them bears a customer-oriented mindset. Therefore, wastes are minimised, goals are faster to be attained.
Higher satisfaction: Agile development provides immediate feedback at the end of each iteration to make sure the product is as close to customer requirements as possible.
Moreover, communication factor in Agile is always prioritised, which encourages customers to involve as much as possible in the development process, to the point that it seems like making them part of the team, therefore shortens the gap between the “employer” and “employee” – not only in terms of work but also in personal life.
Less predictability: Often time, Agile developers find it hard to quantify some deliverables (time, cost, effort, etc) put into designing software. This might lead to frustration, bad decisions, poor practices and end up firing back to the development team itself.
(Too) high commitment: Agile development requires the development team to keep the customer updated about the product frequently and constantly. This might put a big pressure on the team to report everything to the customer and adapt to their ever-changing requirements as well as to commit til’ the end of the project.
Considerable fall-of-track possibility: Agile development requires little planning at the beginning of a project. As such, needed actions are sometimes unclear, which might cause you to forget the main focus and leave you in an inescapable cycle.
Moreover, because of the lack of detail planning, many probabilities might be yet to take into consideration, and the level of preparation for pop-ups is likely to be low. Your project might suffer tremendously due to this if you don’t have the flexibility to deal with unexpected crises.
Measure the efficiency of Agile Software Development
The pros of Agile development, at some points, may exceed the cons, however, if a PM fails to facilitate and evaluate the results, the opposite effect would likely to happen. Therefore, learning some metrics to accurately and effectively measure the performance will never be a waste.
Some basic yet useful measures are:
Velocity: Velocity measures the amount of work (a number of features) completed in a sprint. While it isn’t a prediction or comparison tool, velocity provides teams with an idea about how much work can be done in the next sprint.
Sprint burndown chart: The sprint burndown chart shows the amount of work remaining to be done before the end of a sprint. The tool is particularly valuable because it displays the progress towards the goal instead of listing completed items. It’s also very useful in uncovering planning mistakes that a team made at the beginning of a sprint.
Cycle time metric: The cycle time metric describes how much time was spent on a task, including each time the work had to be reopened and completed again. Calculating the cycle time provides information about the overall performance and allows for estimating the completion of future tasks.
Cumulative Flow Chart (CFC): The cumulative flow metric is described by the chart area showing the number of different types of tasks at each stage of the project with the x-axis indicating the dates and the y-axis showing the number of story points. Its main goal is to provide easy visualisation of how tasks are distributed at different stages.
Flow efficiency: Flow efficiency is a very useful metric in Kanban development that is mostly overlooked by development teams. While flow efficiency complements cumulative flow, it gives insights into the distribution between actual work and waiting periods.
Code churn: Code churn is a very useful visualization of trends and fluctuations that happen to a codebase both in terms of the overall process and the time before a release. It measures how many lines of code were added, removed, or changed. Sometimes the graphs show all three measurements.
Code coverage: Code coverage defines how many lines of code or blocks are executed while automated tests are running. Code coverage is a critical metric for test-driven development (TDD) practice and continuous delivery.
Tools to optimize Agile Software Development process
With the development of technology as today, there are countless tools you can use alongside Agile Development. The major tools will be categorized into different groups, which are most likely to be:
Source control tools
Git: Git is a distributed version-controlled system for tracking changes in source code during software development. It is designed for coordinating work among programmers, but it can be used to track changes in any set of files. Its goals include speed, data integrity, and support for distributed, non-linear workflows.
Mercurial: Mercurial is a distributed revision-controlled tool for software development. Mercurial’s major design goals include high performance and scalability, decentralization, fully distributed collaborative development, robust handling of both plain text and binary files, and advanced branching and merging capabilities while remaining conceptually simple.
Subversion: Subversion is a free/open-source version control system (VCS). That is, Subversion manages files and directories, and the changes made to them, over time. This allows you to recover older versions of your data or examine the history of how your data changed. In this regard, many people think of a version control system as a sort of “time machine.”
Continuous integration tools
Hudson: Hudson is a powerful and widely used open-source continuous integration server providing development teams with a reliable way to monitor changes in source control and trigger a variety of builds. Hudson excels at integrating with almost every tool you can think of. Use Apache Maven, Apache Ant or Gradle or anything you can start with a command-line script for builds and send messages via email, SMS, IRC and Skype for notifications.
Jenkins: Jenkins is an open-source continuous integration software tool written in the Java programming language for testing and reporting on isolated changes in a larger code base in real-time. The software enables developers to find and solve defects in a code base rapidly and to automate testing of their builds.
Travis CI: Travis CI is a hosted, distributed continuous integration service used to build and test projects hosted at GitHub. Travis CI automatically detects when a commit has been made and pushed to a GitHub repository that is using Travis CI, and each time this happens, it will try to build the project and run tests. This includes commits to all branches, not just to the master branch.
Team management tools
Agile Manager: HP’s Agile Manager is built to organize and guide teams from the beginning as they plan and deploy working code through the agile model. At the early stages of the cycle during the release plan, the managers gather the user stories and decide how the teams will attack them. These set the stage for the sprints and deployment
Active collab: Active Collab is organized to help software shops deliver code and account for their time. The heart of the system is a list of tasks that can be assigned and tracked from conception to completion. Also, there is a system-wide calendar helps the team understand and follow everyone’s roles. The system checks the amount of time devoted to all the tasks so the team can determine how accurate their estimates are.
Pivotal Tracker: Pivotal Tracker is just one of a constellation of tools from Pivotal Labs created to support agile development. The core of the project is a page that lists the tasks that are often expressed as stories. Team members can rank the complexity with points, and the tool will track how many tasks are being finished each day. The constellation includes Whiteboard for team-wide discussions, Project Monitor for displaying the status of the build, and Sprout, a configuration tool.
Case studies for lessons learnt
You are still doubting of the efficiency of the Agile development method? Maybe these successful stories would prove it for you!
LEGO is probably one of the most popular cases when it comes to Agile software development. It began the agility journey by introducing changes at their team level. There were 20 product teams working at the organization at the time. At first, just 5 teams were transformed into self-organizing Scrum teams. Then, bit by bit, the remaining 15 teams followed in their footsteps.
However, success doesn’t come that fast. After the initial reconstruction that individual teams became Agile, they were rather struggled with cooperating effectively together. In an effort to address the problem, LEGO decided to follow the SAFe (Scaled Agile Framework) framework pattern and added another level of abstraction – the program level.
At this level, a team of teams is formed (also known as Agile Release Train, or ART for short). At LEGO, the team of teams was meeting every 8 weeks for a big room planning session, which lasted for one and a half days. During this meeting, teams showcased their work, worked out the dependencies, estimated risks, and planned for the next release period.
There’s also a portfolio level, which is the top layer of the system. It is collection of long-term business plans, stakeholders, and top management.
But what does SAFe does exactly to LEGO? By applying SAFes model, spreadsheets, excessive documentation and other unproductive practices are eliminated; developers are empowered to do things themselves; effective face-to-face plannings and meetings encourage people to communicate, make problems more visible to deal with, improve the processing pace as well as increase the accuracy in estimation and prediction.
It not only solves LEGO’s team-cooperation dispersion issue but also guards against all potential hazards they might face in the future, therefore, increase the company’s efficiency towards the goals
Key-takeaway: What we can derive from this case is that building different levels of management as per SAFe can not only reinforce the collaboration among teams but also make the whole development process more effective so that the goals are closer to attain.
Different from LEGO, CISCO applies Agile not on the whole business, but on a specific product called the Subscription Billing Platform.
Before switching to Agile methodology, Cisco had a history with the Waterfall methodology. As such, the company used to construct their teams based on the functions, each team focuses on one act of the development process. For example, there is a designing team, a building team, a testing team, and a deploying team.
However, the method turned out to be a bad match for Cisco. Defects were many, and deadlines were being frequently missed. People were working overtime with low productivity.
To solve the problem, Cisco plays the same game as LEGO: switch to SAFe. Cisco then created three ARTs (Agile Release Trains), which can be considered as a team of teams, for capabilities, defects/fixes and projects.
Every day, the team had a 15-minute meeting to determine work items. Therefore, greater transparency is provided: each team will have a heads-up about what the other teams were doing and are able to manage themselves, promoting accountability through status updates and awareness.
However, it seems like it is not enough for Cisco – they want the efficiency to peak more. As such, they combined the SAFe with the Scrum framework that is previously used on another product – the WebEx app for Samsung. Some XP practices, such as test-driven development and continuous integration (CI), were used as well.
Once Cisco started following the SAFe methodology and introduced Continuous Integration (CI), they receive various achievements as you can tell through the numbers below, which proves the power of Agility:
- 40% decrease in critical and major defects.
- 16% decrease in DRR (Defect Rejection Ratio).
- 14% improvement in DRE (Defect Removal Efficiency)
All the products are on time other than overtime like before.
Key-takeaway: The biggest lesson you can take from here is that you can use various Agile framework within the same organisation at the same time to maximise expected results.
Jio Health, a product developed by Savvycom, is a mobile app that runs on iOS and Android to help doctors deliver better health care, as well as help patients to connect directly with their Care Provider without any restriction. This could be called as an Uber-solution in Healthcare Industry but means more than just delivering or connecting. It helps community health be better and short the gap of reaching private Healthcare among patients and doctors, and is referred to as A breakthrough in Health-care service by several critics.
At the beginning, Jio – the business customer that required Savvycom to build the app – had certain concerns about how the vision and mission they wanted the product to deliver could be understood by developers. However, with Agile, the major development method of Savvycom, the communication between client and developer reached 30% growth in comparison with that of the waterfall method in other traditional development company. Jio, thanks to that, wasn’t merely a customer – they had really become an engineer, a part of the development team. The close synergy had, therefore, paved the way for the product to be well-designed in accordance with Jio’s expectation.
Furthermore, thanks to Agile, despite more than 10 times of restructuring and rebuilding the software to match Jio’s feedback, it only cost Savvycom around 7 months to completely finish the challenge – which in the end even left Jio with astonishment.
(Raghu Rai, CEO of Jio Health)
Key-takeaways: Close collaboration remains the best practice of Agile methodology. The advantages a company can earn through team working with customers – or Agile in a larger sense, is limitless and shall apply to almost every process of development.
FAQs – Frequently asked questions
Q: Is Agility for software development only?
A: Sure no. There are various variants of agility, apart from software development. The principles of Agile, as discussed in the previous pages, can be applied in every other part of the company. In the end, it’s all about flexibility, communication, cross-functional collaboration and customer-oriented mindset, which shall be promoted in literally all fields of the economy. Especially in terms of HR, developing an agile culture can make a big positive impact on the success of the company in the long run. Agility is more than just a method – it’s a work style.
Q: Is Jenkins an Agile software development tool?
A: Yes, it is. It’s even considered by many developers as one of the most popular Agile development tool thanks to its free-of-charge basis as well as high configuration and customisation.
Q: Is Tally an Agile development tool?
A: Nope. It’s just an Accounting software. If you are stuck with the books and numbers, it might be a great sidekick.
Q: Why Agile software development is not suitable for large-scale projects?
A: It’s true that Agile works terrifically well for maintenance, iterative development, and also for prototypes. But large projects always try to align budget, communications, marketing, support organizations, training, and so they need to know when to mesh the efforts with the product launch. Therefore, a waterfall approach to the project as a whole fits better.
Q: Is Agile development a framework or a methodology?
A: Agile is neither a methodology or a framework, meaning methodology or a process is much more complete and will specify how work should be done whereas a framework, on the other hand, is purposely incomplete ( like SCRUM, XP, Crystal). Therefore, Agile is more likely to be a set of principles and values.
A lot of necessary information and practical case studies were highlighted in this post to “bright” your mind. The key for you today is the Manifesto for Agile Software Development (the four values and twelve principles), the Agile process, the tools used and the measures taken in Agile Software Development, all of which should be a solid basis for both stakeholders and developers.
In case you have any further questions, feel free to contact us for more insights and knowledge. We would love to help you understand how your company can leverage with Agile!
- Phone: +84 24 3202 9222
- Hotline: +84326752886
- Email: [email protected]
- Official Website: https://savvycomsoftware.com/