A diverse range of skill sets is required to successfully design, plan, build, deploy, and maintain a software product.
It is almost impossible to accomplish all these if your team/group is only made up of people with a limited or similar set of skills. For example, you may need people with these backgrounds or expertise:
- Customer Relationship Management and Support
Because of this, agile software development methodologies seek to address this personnel and expertise dilemma by establishing a standard template or set of team members your agile development team needs to become a success.
Without further ado, let’s look at what is an agile development team and what makes a great one. Then we can later examine the team members and their agile roles and responsibilities.
What Is an Agile Development Team?
Now that you understand the need, let’s look at how the agile development team is the solution to personnel assignment. So what is an agile development team?
An agile development team is a self-organizing and cross-functional group of people who work together towards building and delivering a software product based on agile principles of rapid development and iteration.
In other words, an agile development team is simply a development team that follows and abides by their agile software development methodology’s principles. A development team is simply a dynamic group of people with various skills that help to build and deliver software in short periods or iterations.
Aspects of a Great Agile Development Team
To build and maintain an efficient and highly motivated agile team is no small feat. Even though agile principles help stage the process, people are another important part of the efficiency equation. Therefore, choosing the right people is as important as building the right product or process. We will touch upon this later.
Here are some of the best practices that will ensure your agile team is productive and effective when carrying out their agile roles and responsibilities:
- Self-Managing and Self Organizing.
- Clearly Set and Outline Roles and Responsibilities.
- Stable Team Roster.
- Colocated Team Members.
- Set Common, Understandable, and Transparent Goals.
What Are the Agile Roles?
Most people think that an agile development team comprises of only engineers. This is wrong, an agile team can include other professions such as designers, writers, etc.
Different agile methods might have slightly different views on team roles and responsibilities. For example, Scrum, an agile development methodology, has three roles in its agile development team’s structure. These are:
- Product Owner
- Scrum Master
- Development Team
Although other agile development methods might have more team roles, most of them, if not all, will have the above three central roles.
In this article, we will only focus on the common roles you will find in most agile development methods like Scrum, Kanban, etc.
The product owner is the person in charge of the overall direction of the product. He/she, hereafter referred to as ‘they’, represents the stakeholders in meetings. They understand and convey the stakeholders’ requirements of the project to the rest of the development team. Things like defining the product and its associated features.
A good product owner is familiar with the organization’s overall business vision for the product and his/her job is to direct the development team to achieve it. They also use user feedback before each sprint to optimize future sprints to deliver the most valuable product increments.
A product owner serves various functions in an agile team when fulfilling his agile responsibilities. These are:
- They represent the client’s objectives.
- They serve as an efficient communication bridge between a client/stakeholders and the rest of the team. They interact with executives, end-users, development team, etc. to stay informed of the product’s status.
- They are the decision-maker and prioritize which tasks must be done first.
So what makes a great product owner?
A product owner’s expertise is not standardized; however, there are common skills and qualities they need to have to excel in their agile role:
- Enabled: Some organizations might want to limit a product owner’s powers and authority. This is wrong. A product owner must be authorized and empowered to make decisions on behalf of the client.
- Accessible: They must be easily available to both the team and other stakeholders.
- Effective Communicator: They must be able to convey their points clearly and precisely.
- Production Knowledge: The product owner must understand the technical difficulties the project will face.
- Business Oriented: They must understand the business vision and this includes the product, market, and target user.
- Define and explain product backlog items (PBI) clearly.
- Backlog Management – prioritize backlog items to suit the business vision and development goals.
- Enable product backlog transparency within and outside the development team.
- Ensure the development team members share a common understanding of the product backlog items’ requirements and scope.
- Manage the planning of release cycles so that the team iterates well.
- Ensures that product development work generates value for the stakeholders.
- Manage stakeholders and prevents undue interference.
- Plans and manages releases.
- Participates in agile meetings, e.g., sprint planning meetings, sprint retrospective, etc.
Scrum Master is a title specific to the Scrum development methodology. In other agile methods, the position is sometimes referred to as the Team Lead or the Project Manager. Scrum masters are responsible for managing or supervising the day-to-day operations of the development team.
They are a servant leader whose main purpose is to ensure the best working conditions for their team members and ensure that they achieve their organization’s objectives according to agile principles and values.
They assist the scrum/agile team in maintaining their best performance levels. They also shelter their team members from both internal and external interferences and distractions.
Another one of their most important duties is to ensure that the development team keeps and operates according to their agile methodology (Scrum framework), agile (scrum) values, and their working agreements.
Like the product owner, they also serve multiple functions within a development team such as:
- Coach and Motivator
- Agile Advocate
- Servant Leader
- Relationship Manager, e.g., between product owner and the development team.
So what makes a great scrum master?
Although there is no rigid skill set needed to become a scrum master, there are common attributes that all great scrum masters share.
- Well-connected and Knowledgeable: They must have a robust network of people who they can contact for resources or assistance. In other words, they must know who, where, or how they can find the solution to their problem.
- Persuasive Communicator: A key duty of the scrum master is to clear obstacles and acquire resources for their development team. Therefore, they need to be persuasive enough, during their interactions, to achieve this -whether it’s within or outside their team/organization.
- Respectful and Humble: They are not after personal elevation but focused on team performance. Handles and treats others without any malicious purposes.
- Selfless: The success or failure of a scrum master depends upon the performance of their development team. Their personal performance is irrelevant. Therefore, this requires a person who is team-oriented instead of self-centered and selfish.
- Assist the product owner with backlog grooming.
- Help organizations adopt and implement an agile methodology, e.g., Scrum.
- Ensure that team members follow and adhere to their agile method’s principles and values
- Organizing and coordinating agile events where needed. E.g., daily scrum meeting.
- Coaches team members to be cross-functional and self-organizing.
- Implementing changes to raise productivity and collaboration.
- Clear obstacles or resolve interferences/distractions for their development team.
- Ensuring that all members understand, as much as possible, about their product’s requirement, scope, and goals.
- Maintain and manage their development team’s performance and morale.
The development team is made up of people with all the necessary skills required to turn a project idea into a verifiable and valuable product. It’s a cross-functional and self-organizing group of people committed to working towards a common goal, that is building, delivering, and/or maintaining your software product.
These people might be:
- QA testers
- UI/UX experts
As you can see, team members can include other expertises besides developing software. What is important is to ensure that you only hire agile team members.
Ideally, development teams should be between three and nine people. That is without including either the product owner or the scrum master. You might wonder why do we say this; well, the answer is simple.
If your development team is less than three people: you won’t be able to accomplish much during sprints.
On the other hand, if your development team exceeds nine people, self-organization, managing, cross-functionality, and efficient communication become difficult, if not impossible.
Characteristics of a responsible and suitable team member:
- Great Communicator: Communication lies at the heart of any teamwork. Therefore, all team members must be well versed in their ability to get their point across to other people.
- Adaptable: Each team member is a chameleon who can transform their skill set as and when needed. In basketball terms, they should be able to play both offense and defense.
- Dedicated to Excellence: Team members should not need direct supervision or instruction to do their best on all tasks assigned to them.
- Work Without Supervision: Team members should be self-driven and able to work without direct management. Agile methods don’t focus on top-down management. Instead, they promote individual autonomy and common responsibility.
- Team-Oriented: Agile methods focus on team success instead of personal successes. Therefore, self-centered individuals might fail to integrate well into agile teams.
Characteristics of a great development team:
- Self-Organizing: Great teams can operate without direct management. No one tells them how to build a product, not even the scrum master. Instead, they are only given a direction and why something needs to be done, and they figure out the best method to accomplish their given tasks.
- Cross-Functional: The team must possess all the required skills needed to successfully turn an idea into a product. It’s not a team with only one speciality.
- No top-down management structure: Each team member’s work is without any associated title or position. They only work on their assignment because everyone is responsible for the team’s overall performance.
- No Sub-Teams/Circles/Clique: Agile principles ban the formation of sub-groups that alienate or exclude other members of the team. This is regardless, of which task needs to be done – whether it’s testing, analysis, development, etc. All work needs to be transparent and inclusive.
- Everyone is Accountable: Everyone in a development team must be accountable and responsible to one another.
- Stable Roster: The development team members must not be frequently changed or rotated. Instead, a team’s members must be constant and suffer little change in personnel. Failure to do so means your team’s chemistry will never mature and they will fully display their performance potential as incoming members take time to acclimatize to their work, process, and colleagues.
- Colocated Team Members: Ideally, your development team members should work in the same physical location. This could be a single office where everyone can interact and collaborate face to face. Remotely located teams sometimes suffer from inefficient or late communications. Colocation improves team communication, collaboration, and productivity.
- Work and finish their tasks within the allotted time or sprints.
- Understand the requirements provided by the product owner.
- Attend agile meetings such as Daily Scrum.
- Follow and adhere to their method’s/framework’s values and principles.
- Transparently report their task progression at the daily scrum.
Stakeholders are individuals or groups not directly involved in the day-to-day progression of the project. Instead, they are individuals or groups with interests or contributions regarding the project’s success or failure. Their agile roles or agile responsibilities vary according to their skill set and function.
Stakeholders can be:
- Business executives or owners.
- Support staff.
- Agile teams from related projects.
- Subject matter experts.
- External Auditors
The input and feedback from stakeholders is very important to the overall success and optimization of the product. For example, the product owner incorporates their feedback during backlog prioritization before each sprint or iteration.
The duties or responsibilities of stakeholders are directly attached to their role. For example, a subject matter expert should be readily available for consulting and they should offer advice to the agile team based on their real-world experiences. They also should avoid misinforming the team as that may lead the project goals and progress astray.
Above all else, all stakeholders should abstain from directly interfering with an agile development team’s work. Instead, they must go through the proper channels to avoid disrupting productivity.