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.
Marc Majcher, Lead Instructor Software Engineering at Flatiron School
Thomas Fowler, Enterprise Software Development Education Lead at Flatiron School
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.
There are four main principles of Agile software development:
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.
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:
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.
Agile was originally developed for software engineering, but many projects involve different skill sets. A team is generally made up of different departments, including:
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.
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.
Agile can be an extremely useful tool when implemented properly, but there are cases when it won’t be effective:
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!
What to expect in General Assembly's reopened in-person campuses
Liam took out an Ascent loan + living stipend for a bootcamp – find out if the loan was worth it!
How Steven Pivoted from Theatrical Electrician to DevOps with Coding Dojo