Guide

How Is Agile Used in Software Engineering?

Jess Feldman

Written By Jess Feldman

Last updated on August 27, 2021

Course Report strives to create the most trust-worthy content about coding bootcamps. Read more about Course Report’s Editorial Policy and How We Make Money.

A lot of work goes into building products and it can be difficult to manage tasks across different teams. The Agile Methodology is a set of practices that allows teams to effectively communicate and collaborate across disciplines in order to create working products. Sharing their insights from on-the-job experience and as instructors at Flatiron School, Marc Majcher and Thomas Fowler explain the principles of Agile, the typical Agile process, and examples of how teams today use Agile. These experts break down the differences between Agile and Waterfall, and list the top 4 Agile tools used by tech professionals.

Meet the Experts

Marc Majcher, Lead Instructor Software Engineering at Flatiron School

  • Marc studied Physics and Computer Science in college before leaving to take a job working with computers. 
  • Marc previously taught game programming at the community college-level before shifting to teach at Flatiron School.

Thomas Fowler, Enterprise Software Development Education Lead at Flatiron School

  • Thomas graduated with a Management Information Systems Degree, and also studied computer informations systems and computer science. 
  • Thomas first got into tech after developing an interest in computers while learning how to sell and fix machines. Before Flatiron School, Thomas worked at a technology education company and consulted for Fortune 100 and 500 companies.

What is Agile?

Agile is a set of practices used to approach projects. Building a web application requires a team of different specialists working together and it is a time-consuming process. Agile allows teams to effectively coordinate and communicate their needs instead of blindly contributing individual pieces of a large project.

The History of Agile 

The 1990’s were an exciting time for software development and several methods were developed – Extreme Programming, Scrum, Waterfall, and Rapid Application Development (RAD). They now fall under the umbrella of Agile. The manifesto for Agile software development was officially drafted in 2001 by a group of 17 software developers in Snowbird, Utah. 

How is Agile different from Waterfall?

In the Waterfall method, responsibility is passed from one department to the next without feedback. Someone decides what the product will be; they pass the project on to someone who decides what the features will be; then they pass it to someone who implements those features and so on. The methods and frameworks that eventually consolidated into the Agile process were created as a response to the methods collectively referred to as Waterfall. 

With Waterfall, there’s an excessive amount of planning and documentation. This method can save time and money later in a project since it allows for teams to catch bugs early in the process. The emphasis placed on documentation can also be useful if an important team member decides to leave the project. Unfortunately, this amount of documentation and planning makes Waterfall much less adaptable; for the process to work, it requires a team to perform almost flawlessly.

Part of what makes Agile so effective is the emphasis placed on adaptability. A client may not know exactly what they want and the Waterfall is not flexible when it comes to implementing changes later in a project. Designing a product is rarely a straightforward process and the constantly changing business environment means adaptability is key.

The 4 Principles of Agile

There are four main principles of Agile software development:

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

The four main principles of the Agile process remind teams that some components of building a product are more important than others. Something like documentation is important to the process of building a product, but the end goal is to have working software. Agile emphasizes adaptability and communication since it’s almost a given that the business environment is going to change. 

The 5 Steps of the Agile Process

Agile is similar to the scientific method: there are steps that will always be present even if every team does them slightly differently. Building a project with the Agile process generally requires multiple iterations and the goal is to improve each time.

The Agile process typically follows these five steps:

  1. The team is assigned a task and they break it down into chunks of work and estimate how long each piece will take to complete. Figuring out this timeline is an important step because it gives the business side of a project a sense of when they can release a product.
  2. The work is then assigned points based on the amount of effort it will take to complete. Points don’t represent a unit of time; points are more an abstract unit for measuring work. 
  3. The team prioritizes the work so the most important pieces are completed first.
  4. Once work has been completed, teams do a demo to assess how a product is working so far. Running the demo first, allows a team to do a retrospective (also known as a “retro”) on everything that happened during the sprint and iteration as well as the demo. 
  5. The team will do a “retro” after each sprint and/or demo. This helps the team understand if any of the work or timelines needs to be readjusted, and judge what did and didn’t go well in the demo. For example, the team may want to readjust to take on fewer points in a sprint.

Many companies want to pick and choose what they execute for the Agile process, but that’s not how the process works. When a team has good discipline around the process and methodology, they are generally going to be successful.

How is Agile used across teams?

Agile was originally developed for software engineering, but many projects involve different skill sets. A team is generally made up of different departments, including:

  • Software development
  • User experience (UX)
  • User interface (UI)
  • Product design
  • Business

The teams involved in building a product will vary and interactions between teams will depend on whether or not they are involved in production. 

Much of Agile’s strength lies in its constant communication, coordination, and collaboration between teams. When planning tasks, communication between these teams helps each department contribute more effectively to the whole project. 

For example:

  • While an engineer may not be in direct contact with the business-side of a project, they can go to a project manager with a question and receive clear instruction on how to proceed. 
  • UX and user design professionals may not be responsible for heavy lifting when it comes to development, but their knowledge helps developers create a functional product and troubleshoot issues that users are facing. 
  • Product owners have their own responsibilities within the process and they will work with project managers to author and groom stories to understand what the team can work on in the next sprint. A hallmark of a good Agile team is that stories are ready by the time sprint planning comes around. When the engineers see these stories for the first time, they have a clear direction of what their work will be in the next sprint. 

Instead of each team working in isolation, they have collective ownership of a product.

When the direction is clear, sprint planning is smooth and teams can accurately estimate the work they’re committing to. These ceremonies are an important part of the Agile process because they refine the task a team is taking on. It’s easy for someone to assign a task like building a login page without actually giving clear direction to the team. Developers interpret it because there’s nobody to ask and once the team completes the task, someone doesn’t like the product and they have to rework it. If everything is running smoothly, you know exactly what your work is and you know when it’s done. Sometimes it can feel like there are too many meetings and that they’re unnecessary, but the planning meetings help save time!

Real World Example: Agile in Action

In a meeting, a project manager will bring up features for the week and the engineering team will review and discuss them. After hashing out the details and pruning the tasks, the team will decide how many points each task will take and then assign tasks. The team uses an issue management system to assign work and then gets to work. A member will check a task in, other members will check it out, and the next week the team will complete a retrospective and move on from there.

The importance of balanced teams in Agile Methodology

Building a working product is the result of different teams working together. A good start to the Agile process is making sure you have cross-functional teams. Beyond that, whoever is leading the Agile ceremonies is responsible for keeping the team in cadence. The methodologies are important and a good leader won’t skip things like a retrospective meeting. This is where a product manager can make or break a team. A team with great engineers and an okay product manager will stumble along, but a team with okay engineers and a great product manager will do Agile well.

The 4 Top Tools of Agile

  1. Trello - Similar to a Kanban board, Trello allows teams to organize projects effectively. Teammates can see what’s being worked on, who is working on it, and where something is in a process. Trello is simple and easy to set up, but it has limitations.
  2. Asana - This tool is another workflow management software that is somewhat similar to Trello, but with more capabilities. 
  3. JIRA - While Trello is great for smaller companies, JIRA excels when it comes to large-scale projects and teams. Trello and JIRA are owned by the same company, so they are designed for similar purposes. JIRA is mainly focused on software development teams while other project management programs are meant for almost any team.
  4. Abstract - This is a workflow program that is focused on designers. It allows teams to collaborate in real-time and make changes to a project without having to re-upload a file every time a change is made.

5 Situations Where Agile Won’t Work...

Agile can be an extremely useful tool when implemented properly, but there are cases when it won’t be effective: 

  1. If team members aren’t experienced with Agile, they probably won’t understand what’s expected from them.
  2. Communication is key when it comes to the Agile process and some clients aren’t willing to communicate their needs effectively. 
  3. Without constant collaboration, a project can easily move in the wrong direction and reworking a product can be costly and time-consuming. Some clients expect product teams to be composed of mind readers which creates disappointment for both the team and the customer.
  4. Some projects are straightforward and will not have evolving needs, and Agile is only effective for an iterative process where needs are constantly changing. Customer feedback and experiences are going to drive updates to the project and the teams are constantly looking to improve. If your project doesn’t require multiple iterations, Agile techniques may not be necessary.
  5. Some clients are opposed to Agile because they prefer firm plans. Agile is flexible and it assumes that there will be change throughout a project. If a client or team prefers concrete plans and timelines, they probably won’t like Agile. However, they will likely be dissatisfied with other methods that promise results since setbacks and delays are almost inevitable.

How to Learn Agile

Knowing how to use Agile principles is a valuable skill and new developers can benefit from investing their time to learn them. Atlassian, the owner of Trello and JIRA, has a tutorial that can help users get started.

The best option for learning Agile is on-the-job experience. Find someone on your team who knows Agile well, so you can quickly learn these principles.

While Flatiron School doesn’t require students to know Agile in order to graduate from the Software Engineering bootcamp, it’s still important knowledge. 

The Future of Agile

The labor market for software development is extremely competitive and having Agile experience is important no matter where you go. As more people get into coding, the Agile process has become more refined and improved – while a paradigm shift is always possible, Agile is effective and it won’t go anywhere soon!

Find out more and read Flatiron School reviews on Course Report. This article was produced by the Course Report team in partnership with Flatiron School.

About The Author

Jess Feldman

Jess Feldman

Jess Feldman is an accomplished writer and the Content Manager at Course Report, the leading platform for career changers who are exploring coding bootcamps. With a background in writing, teaching, and social media management, Jess plays a pivotal role in helping Course Report readers make informed decisions about their educational journey.

Also on Course Report

Get our FREE Ultimate Guide to Paying for a Bootcamp

By submitting this form, you agree to receive email marketing from Course Report.

Get Matched in Minutes

Just tell us who you are and what you’re searching for, we’ll handle the rest.

Match Me