Agile Software Development
When it comes to software development, a flawless completion requires a structured approach. A set of practices will help to organize the cooperation with a customer representative, the stages of project delivery, team, and set the focus on quality, etc.
In fact, there has always been the structure of project completion — Waterfall methodology (sequential approach), however, it was ineffective. Agile replaced it and proved to be one of the most demanded requirements while hiring a team for the project.
What is Agile Methodology?
In 2001 several software developers created Manifesto for Agile Software Development in which they stated 12 core values. Since then the principles were extended and enhanced, so today we have solid techniques to manage the whole process of software development. In a nutshell, Agile focuses on an iterative development by a cross-functional team who works closely with the customer, delivers a quality project, and is ready to do quick changes and fixes.
When having the project in mind and writing all the requirements down, the client and the team can not embrace the full scope just because sometimes they are not aware of upcoming challenges. If all the details are not calculated in the first place and requirements change after designing, development, testing are finished, the team must redo everything. The Agile methodology targets complex product development with dynamic, non-deterministic, and non-linear characteristics. Its iterative process allows to avoid a mentioned situation, be more open to changes during the project.
What makes Agile so popular?
- Evolutionary software management
Iterative, incremental, evolutionary — these words will come up every time you google anything about the Agile project management. Project managers break down all the development changes including planning, designing, development, testing, and support into short time frames and describe them in user stories. Such moving in baby steps ensures quick response to change and optimize the workflow in the most efficient way.
- Welcoming changing requirements
Since Agile calls up to breaking down the project to multiple parts, the team can define issues on the first stages of development and foresee future challenges. Any changes are never a problem to teams. Moreover, such system even improves the project in the process.
- Frequent delivery
After each iteration the team releases a build with a determined set of features. It is not the final product, but its features were already tested. The client can check it and understand whether he/she likes it. Frequent deliveries allow to gather multiple feedback from the client in the process and tweak the project when it is still possible to do so without major changes.
- Customer-team daily cooperation
To date, more and more customer representatives are willing to keep in touch with their team during the development. The Agile team supports this initiative and is ready for daily stand-ups in order to discuss what was done and what is going to be done along with upcoming challenges, solutions, etc. This makes the whole project development transparent for both sides.
- Motivated self-organizing team
Only motivated and self-driven employees can deliver a quality product. That’s why it is so important for the project. If team members are interested in the project, they will do their best to complete it. That means they can be trusted. Agile teams usually consist of several specialists of different competencies and have face-to-face meetings in order to describe a clear picture of the progress.
- Focus on quality
Why do anything if not perfectly? Teams are responsible for the project quality and for clients’ expectations. Moreover, the application market today is very competitive, anyone places their businesses online, so the more decent project you offer, the more chances for success you have.
- Agile project management tools
Of course, a lot of Agile tools exist for visualization of project management. For example, Atlassian Jira, Trello, Pivotal Tracker, Redmine (Scrum and Kanban plugins), and many others. These tools provide such features as a ticketing system, task prioritization, sprint planning, story points estimation, Scrum or Kanban board, business project templates, request tracking system, time tracking, and many others. No one can argue that these features help to reach the progress at a faster pace.
Agile encompasses numerous frameworks such as Feature-driven development, Lean software development, Extreme programming, Dynamic systems development method, Rapid application development, however, the most popular approaches are Scrum and Kanban, which are described below.
Once you want to structure your project as precisely as possible, you may go with Scrum. This framework disciplines agile principles and clearly distributes responsibilities. The main focus of this approach considers the unpredictable nature of product requirements. Multiple changes throughout development require empirical approach in order not to define feature upfront but develop resilience to changes.
Scrum exactly implements the Agile structure and philosophy yet has its particular points. The progress is divided in sprints. A regular sprint is 2 weeks-long, however, it depends on the project. The specifications in terms of each sprint are described in a product backlog. Features, designs, bug fixes, technical work, and non-functional requirements are included. The Scrum team visualizes its tasks on the Scrum board, where it is so easy to track the progress, responsibilities, and development stages. After each sprint the team releases a demo build with a certain set of features, complete and tested.
Scrum include 3 roles: Product Owner, Development Team, and Scrum Master.
Product owner is the customer who represents business side and is responsible for controlling and reviewing the work of the development team as well as defines the releases of the product.
Scrum Master is responsible for managing the workflow and coaching the team. He/she discusses the sprints timeboxes, controls the timely manner of every sprint completion, organizes daily scrums, defines a product backlog with the product owner. Usually, the tasks of a Scrum master resonate with ones of a project manager.
Development team is a cross-functional team as long as aside from coders there are also designers, QA, analysts, etc. Usually, the Scrum team is small (3-9 people). It consists of self-organized motivated people. Face-to-face meetings are an essential part of collaboration within the team in the Scrum framework.
Soft skills are crucial for the Scrum’s philosophy. As mentioned, self-motivation is extremely important for the product delivery. Transparency is another important factor, as the team must be clearly aware of each other’s work. Respect and commitment are necessary for maintaining a good work relationship and a quick and quality delivery.
Scrum is simple, everything is determined and defined. However, it has its pitfalls. For instance, working remotely is not preferred, so the team must work at the same location to ensure a close communication. Developers must be able to switch to different parts of the project, which is not always convenient. Builds must be released in short time, so big projects requiring a long and complex testing are not suitable to be developed under Scrum. Also, due to its strict nature, Scrum is often mixed with other frameworks for more flexibility.
Just like Scrum is focused on discipline, Kanban is centered around visualization. Almost every team had experience with Trello board. This is the perfect example of how this framework organizes the project. The main idea behind the Kanban system is that while the team tracks their progress visually they motivate themselves in such way and push themselves to working on the project further and further till it’s done with quality.
Inspired by Toyota Production System, Kanban is widely used in software development. It is well-suited for large-scale projects as it welcomes complex features development and encounters large amounts of regression testing or safety testing, which are time-consuming. Changes are also welcomed in the process, as the flow of work can be modified in the process as a part of continuous delivery.
Kanban has its core ideas, which differ it a lot from other frameworks. These ideas make the framework flexible, focused on improvements, and suitable for complex projects.
- First and foremost is the progress visualization. This is the reason why the Kanban board is a necessary tool for the team. The board is divided into columns for project stages including for example “features pending”, “in development”, “for testing”, “deploy”, “maintenance”, etc. While working, cards are moved from one column to another. Thus, the whole team is aware of any detail of the project management. A better collaboration is guaranteed as well as a high-quality product delivery.
- Elimination of bottlenecks makes the workflow more smooth. The core idea is limiting the amount of work-in-progress (WIP), at each step of the development. This approach leads to a gradual and equal distribution of the amount of work among all the team members.
- Continuous improvement is another important part of the philosophy. In the process the team can have a clear picture of their work and this is how track flow, quality, time and other things. Moreover, they can optimize all these criteria to achieve the team’s effectiveness.
Aside from Scrum, Kanban is one of the most powerful practices for project management. However, as always, there are some vulnerabilities. For instance, an outdated board slows down the process and leads to misunderstanding inside the team. Another concern is the violation of WIT limits. The team members must be responsible and honest to deliver the product in time and organize the work properly. Here the Agile rule of choosing a self-organizing team is as important as never. Working with Kanban, the project management can not have non-realistic goals. False expectations influence badly deadlines and team’s abilities and client’s expectations.
To sum up
It is only up to you which methodology and framework to use for the project. The fact is both Scrum and Kanban are proved to be very powerful and effective tools for project management. Just analyze all the details thoroughly and decide which one suits you the most. You can also search for alternatives such as Scrumban. The most important factor is the effectiveness the chosen framework will bring you.