In our last few blog posts, we’ve examined security and looked at some of the most common security myths and mistakes. In this blog post we turn our attention to agile development. We look at what agile development means, and the benefits that agile software development can bring.
What is Agile Development?
In a nutshell, agile development is a software development practice that allows development teams to adapt and respond to change or unforeseen issues with little disruption to the overall project. It encompasses methods and processes based on the principles of the Agile Manifesto. The objective is to promote efficient collaboration between multidiscipline, self-organizing teams that are working towards a common goal or outcome.
The History of Agile Development
Towards the end of the 90s, several software development methodologies were capturing the development community’s attention, each merging old and new ways of shipping software projects. These methodologies, unlike the waterfall model, emphasized close collaboration between the development team and business stakeholders.
This more efficient way of delivering software projects came to be known as Agile Development. With its accompanying manifesto, Agile was a departure from the old waterfall model where the business often had to wait months for new releases or even previews of new functionality.
Frequent delivery of software products by self-organizing, autonomous and adaptable teams was welcomed by business. As a development process, it is one of the most valuable things any team can deploy.
Agile development allows teams to adapt and respond to change or unforeseen issues with little disruption to the overall project Click To Tweet
Key Personnel in an Agile Team
Quite often, Agile teams are small, nimble and it’s not uncommon for professionals in agile teams to wear more than “one hat” and consist of:
This role is responsible for ensuring that the development team sticks to agile principles during each stage of the development process. The lead is also responsible for ensuring the team has sufficient resources to help them complete tasks and has the responsibility of helping the team solve problems and remove roadblocks.
Product owners are the champions of the product being built. They are focused on understanding business, user community, and market requirements. They also prioritize the work to be done by the development team.
This represents a broad range of people that can consist of end users, managers of users, operations, support, or even other Agile teams with dependencies, executive team, investors, and more.
The Development Team
The development team is vital to any agile project. It is the development team’s responsibility to turn the product owner’s vision into a tangible outcome. The development team is responsible for delivering the product on time and on budget, are often cross-functional and includes professions such as: front-end developers, back-end developers, QA engineers and much more.
The Main Stages of Agile Development
What follows are some loose stages that Agile Development teams typically follow when building software products that follow the Agile Methodology:
- Concept – Projects are envisioned and prioritized
- Inception – Team members are identified, funding is put in place, and initial environments and requirements are discussed
- Iteration/Construction – The Development Team works to deliver working software based on iteration requirements identified by the Product Owner
- Release – QA (Quality Assurance) testing, internal and external training, documentation development, and final release of the iteration into production
- Production – Ongoing support of the software
- Retirement – End-of-life activities, including customer notification and migration
Now that we’ve introduced what Agile Development is, and what the key stages of Agile Development involve, it’s time to turn our attention towards some of the benefits that deploying Agile practices into your existing business processes can bring.
The Benefits of Agile for your Business
By now you might already be realizing some of the benefits that Agile can bring to your existing teams or software projects. Agile isn’t a “one size fits all” and there are many different agile frameworks each have their own unique set of benefits.
Companies such as Thoughtworks, Sky, CA Technologies, Cognizant and Ivar Jacobson all deploy agile practices and frameworks to give them a competitive edge and you can too.
One of the most popular agile frameworks is called SCRUM. As an agile framework, it has been used since the 90s on many projects of varying complexity. One of the main tenets in SCRUM is breaking large projects into smaller iterations and adapting the project along the way.
Each software iteration in a SCRUM project is called a Sprint which can range from one week to one month (two weeks is typical). These are deliberately short to help keep the project moving at the fastest pace. Daily meetings (or stand-ups) which last for typically 15 minutes help keep tabs on the team’s progress and potential issues can be resolved as soon as they arise, unlike a project that is being developed using a waterfall model.
When time is of the essence and you need to iterate quickly, the SCRUM framework might just be the agile framework for you.
Kanban is another agile framework that you can deploy which focuses on real-time communication and promotes full transparency across the team. Visualization sits at the center of the Kanban framework, as user stories and work items are drafted, they are represented visually on a Kanban Board. This is a great way for your agile team and business to easily see the status of a project, if there are any blockers and how much work is left. Kanban is nothing new and as a methodology dates back to the 1950s where Toyota decided to optimize their engineering process and based it on the model that supermarkets used to stock their shelves!
Some of the benefits of adopting kanban as an Agile framework include, but are not limited to:
- Focus on continuous delivery
- Reduction of wasted work / wasted time
- Increased productivity
- Increased efficiency
- Team members’ ability to focus
- Easy visualization
It’s not uncommon for professionals in agile teams to wear more than “one hat”... Click To Tweet
Kanban Boards are fantastic tools for daily stand-up meetings with agile development teams and has five columns which flow from left to right that generally contain the following.
- In progress
As work items make their way from the backlog and are completed, the team can quickly look at the Kanban board during daily stand-ups to see the state of play in a project, where blockers are and help keep a project on track. Products like Azure DevOps offer free web-based Kanban tools that can help your business get up to speed quickly and realize all of these benefits!
Teams are increasingly blending some of the practices of SCRUM with Kanban, creating a hybrid called Scrumban. Whether you use SCRUM, Kanban, or Scrumban, agile frameworks are especially effective if you have a distributed team located around the world.
In this article, we’ve introduced Agile Development, looked at the key members that form an Agile team, their responsibilities and saw how by deploying an Agile framework and accompanying processes, you can help keep your software projects on budget and deliver on time.
We’ve seen how things like daily stand ups can help maintain team accountability and how frameworks like SCRUM can help to break down complex tasks into smaller, easy to deliver chunks of functionality that can be shipped and tested in regular sprints. We’ve also seen how the Kanban framework is structured around visual management of development tasks. Both are very effective when it comes to running projects that have distributed teams.
Here at Growth Acceleration Partners, we have extensive expertise in many verticals. Our nearshore business model can keep costs down while maintaining the same level of quality and professionalism you’d experience from a domestic team.
Our Centers of Engineering Excellence in Latin America focus on combining business acumen with development expertise to help your business. We can provide your organization with resources in the following areas:
- Software development for cloud and mobile applications
- Data analytics and data science
- Information systems
- Machine learning and artificial intelligence
- Predictive modeling
- QA and QA Automation