“Agile is the ability to adapt and respond to change (…) Agile organizations view change as an opportunity, not a threat”. -Jim Highsmith.
Let’s put it simply: as software engineer Jim Highsmith defined it, Agile is the ability to adapt and respond to change. It is basically a way of thinking through and dealing with a potentially uncertain and turbulent environment, while determining the best practices to ultimately succeed within it.
So, what is Agile Software Development?
Considering Highsmith’s definition, and according to Agile for All, “Agile is about collaborating to deliver the highest value product increment with high quality, as quickly and as frequently as possible, as well as continuously improving the delivery process”. Therefore, we can say that Agile Project Management, in the context of Software Development, is a mindset that focuses on continuous improvement as well as embracing team input and allowing more flexibility in order to develop quality products.
So, what does “Scrum” mean?
Following the definition of the Agile Alliance:
“Scrum is a process framework used to manage product development and other knowledge work. Scrum is empirical in that it provides a means for teams to establish a hypothesis of how they think something works, try it out, reflect on the experience, and make the appropriate adjustments (…) Scrum is structured in a way that allows teams to incorporate practices from other frameworks where they make sense for the team’s context”.
Therefore, when you hear the term “Scrum”, this is typically referencing a framework that is used to implement Agile practices and development. Scrum is known, when implemented efficiently, to improve teamwork, communications, and speed to market.
Taking all of this into account, what does an Agile Development Team look like?
Agile teams are usually small, consisting of five to seven members who typically focus on collaboration as well as self-organization. Agile Teams are usually comprised of the following members:
- Product Owners are essentially the bridge between the customers, stakeholders, and developers. Product Owners attend every Sprint Planning meeting and identify requirements as well as prioritize tasks based on customer needs. They have the end user’s best interests in mind.
- Scrum Masters ensure that the Agile methodologies are being put into practice in a proper and consistent manner. They are the executors and focus on avoiding product roadblocks, and are there to support the development team.
- Developers are the programmers, writers, testers, UI/UX designers, and anyone else who has a role in the product development itself. They are the people that build the final product.
- Agile Mentors are typically brought in to help with guidance when it comes to implementing the right Agile methodologies as well as providing feedback.
- Stakeholders are a diverse group of people such as end-users, sponsors, sales team members, system administrators, legal counsel, and a wide variety of subject matter experts. They are individuals who have an interest in the success of the project.
To learn more about the different roles within an Agile team, check out our article on Leadership in an Agile Software Development Environment.
In summary, choosing an Agile approach when it comes to software development means that solutions evolve around a collaboration between self-organizing and cross-functional teams while using appropriate practices for their context. Managers, therefore, provide the proper environment that allows the team to work successfully. They basically make sure that the team members have all the right skillsets for any specific task or project.
“Agile is an attitude, not a technique with boundaries. An attitude has no boundaries, so we wouldn’t ask ‘can I use Agile here?’, but rather ‘how would I act in the Agile way here?’.” -Alistair Cockburn
If you want to learn more about Agile and understand how this mindset can help you have a better understanding and relationship with your outsourcing software development team, click here.