Image Source: Unplash
To implement agile development successfully, the key factor is the people involved. Therefore, forming an agile team is necessary before starting agile development. As the leader of the team, having a comprehensive comprehension of agile is crucial.
I. Understanding Agile Development
Agile development is often misunderstood as being all about speed, but this is just a one-sided understanding of it. Its real purpose is to adapt to a rapidly changing market. Agile development is like surfing, where you are constantly faced with dynamic and changing waves. The challenges of demand changes and communication balance in the project development process are like the waves you encounter when surfing. They never stop and are always changing, so you must quickly adapt to changes.
Agile development is a way of doing things, suitable for software, operation and maintenance, services, and other fields, but not for hardware, which generally does not allow mid-way changes in requirements. It is suitable for highly competitive markets where delivering an imperfect but usable product before the opponent is essential. It is also suitable for rapidly changing markets where the R&D team maintains close contact with external information, delivering a product suitable for the current external market on time. It is suitable for small teams of 5 to 9 people, where the "face-to-face" communication method advocated by agile development is feasible. Agile development's speed lies in its flexibility to respond to market changes, the efficiency of communication and collaboration with the team, and the firm belief in delivering usable software on time.
Agile development is also a toolset that allows you to extract your own agile practice methods through various best practices, such as stand-up meetings, Kanban, user stories, presentations, planning meetings, review meetings, regression meetings, and other activity tools.
Finally, agile development is an enterprise management method that focuses on the overall performance of the team rather than the ability of individuals to work. It gives decision-making power to the team in actual work, takes people as the core, gives full play to individual subjective initiative, and advocates innovation and efficiency. It divides large projects into small projects, uses Sprint as a sprint version each time, and controls each Sprint within 2 to 4 weeks to continuously output valuable software. Based on the above content, agile development refers to a method of continuously and quickly outputting deliverable products in a highly collaborative environment and self-adjusting and improving through feedback.
II. Principles of Agile Development
In practical work, a series of principles have been derived around the Agile Manifesto, making agile development more operable:
- The primary measure of progress is working software.
- Our highest priority is to keep our customers happy by delivering working software early and often.
- Working software should be delivered on an ongoing basis, with cycles ranging from weeks to months, and the shorter the better.
- Self-organizing teams produce the best requirements research, product architecture, and product design.
- Team leaders should be good at motivating project employees, providing them with the environment and support they need, and trusting them to do their jobs.
- Face-to-face communication is the most effective and efficient way to convey information within the team.
- The agile process advocates for a sustainable development speed, and the project party, developers, and users should be able to maintain a constant and stable development speed.
- Work should be concise, and unnecessary work should be minimized as much as possible.
- Changes in requirements are welcomed, even at later stages of development, and they should be leveraged to help customers gain a competitive advantage.
- The development team should reflect on how they can work effectively every once in a while and adjust their behavior accordingly.
- Constant focus on the best technology and good design enhances our agility.
- Business personnel and developers need to work together throughout the project development process.
As the team continues to practice and understand agile, it can propose its own agile principles, which will eventually be recognized and implemented by everyone, creating an efficient team with overall output.
III. Composition of the Agile Team
An agile development team consists of the following roles:
1. Product Owner
The product owner is responsible for creating requirements and representing the users' needs. From a business standpoint, the product owner ensures that the Scrum team is doing the right thing. They write user stories, prioritize tasks, and determine the content for each Sprint.
The product owner has a vested interest in the product and is also the head of the department or project leader. Their responsibilities include setting the team's goals, determining the development direction, ensuring the product meets the customer's needs, and managing the team. They empower the team, coordinate company resources, motivate team members, and mentor those with weak abilities, ultimately allowing team members to work efficiently as a whole.
2. Scrum Master
The Scrum Master is responsible for the project's progress and delivery results. They lead the team and ensure that the team's needs are met. They also ensure that the Scrum methodology is correctly understood and used to maximize the benefits of each Sprint. The Scrum Master must have a complete understanding of the development process and the relationship between upstream and downstream in the development process. They guide team members in their actual work, using various Scrum tools.
The Scrum Master is the team's umbrella, ensuring that the team is focused on completing the Sprint and removing any obstacles that hinder productivity. They also help others understand the need for change. Scrum has had a profound impact outside of the Scrum team and can help the team achieve a wide range of benefits. The Scrum Master ensures that effective change occurs at all levels of the organization, leading to both short-term and long-term success.
This role can be a full-time position, which allows for more focused and professional project management and faster introduction speed. However, the work may not be saturated. A full-time Scrum Master can participate in multiple projects or select a senior team member to hold a concurrent post. Holding a concurrent post reduces labor costs, has a deeper understanding of projects and products, and has higher collaboration efficiency. However, it requires higher Scrum Master capabilities, which may have a certain impact on the work of team members.
Regardless of whether it is full-time or part-time, the Scrum Master must have a strong sense of responsibility to deliver on time, be careful enough to control progress, communicate effectively to clear obstacles, and ask questions to inspire the team to find answers themselves, enabling self-organizing management.
3. Scrum Team
The number of team members should ideally be 5-7 people, including product, design, front-end, back-end, testing, and other roles. They are the actual value producers.
The development team is responsible for reasonably evaluating the workload, completing the established work content every day, actively resolving obstacles encountered, and promptly asking for help if they cannot be resolved. They promise to deliver working software on time.
An agile development team is a self-organizing team that accepts external tasks and constraints and decides how to complete the task. Team members themselves decide what to do and how to do it. The success or failure of the project does not solely rely on the team leader, but the entire team must bear the corresponding responsibilities. It is like a basketball team, where the coach and owner lose control of the team after the game starts, and any decisions on the court can only be made by the team members themselves.
IV. Characteristics of Self-organizing Teams
A self-organizing team has the following six characteristics:
- Respect: Mutual respect among team members and outside the team is crucial to establish efficient cooperation. The team members should feel confident in the company's authorization and trust each other to speak, act, make mistakes, and quickly find the correct path through continuous trial and error.
- Transparency: Building trust and respectful relationships is best achieved through transparency. The team leader should clarify principles and formulate rules, be transparent in various practices, and visualize all activities. Kanban boards and burndown charts can be used as tools.
- Goal: The team must have a clear goal to have motivation and direction. Team members need to understand the meaning behind the project to understand the value of their efforts. They should reach a consensus on value, completion standards, acceptance standards, etc.
- Commitment: With a goal, there must be a commitment. The team members should promise each other to complete each other’s responsibilities and tasks so that the things of the day can be completed on the same day, and what they promise to the team must be done.
- Team: The project team is a whole, and teamwork is necessary to enhance everyone's sense of collective honor. The team should advance and retreat together.
- Coaching: Mutual coaching is the best way to improve team capabilities and achieve respect and commitment between teams. Mentorship, code review, and regression meetings are some ways to achieve this.
In addition, it is necessary to define the responsibility boundaries of each role:
- Product owner: Responsible for team cooperation, employee loss, customer satisfaction, and creating an efficient and agile process.
- Agile coach: Responsible for project delivery time, preventing requirement changes, avoiding long-term overtime, handling online bugs, and employee turnover.
- Product manager: Fully responsible for the PRD at the project kick-off meeting. Before the DL date, the requirements will no longer be changed, and no new requirements will be inserted. They are indirectly responsible for the delivery time and for blocking the demand side from overburdened demand.
- Development team: Responsible for the milestone progress, delivery time, and indirectly responsible for online bugs.
- Tester: Responsible for online bugs.
To build a self-organizing team, the leader needs to believe in the team changes brought about by agile development, advocate an agile culture, and create a team atmosphere of honesty, trustworthiness, and excellence. For new teams, using agile working methods can help form departmental rules for quick adaptation. For mature teams, suitable members should carry out the pilot, and then the results should be promoted to other project teams.
Overall, a self-organizing team requires mutual respect, transparency, a clear goal, commitment, teamwork, coaching, and defined responsibility boundaries for each role. The team leader should create an agile culture and team atmosphere that encourages honesty, trustworthiness, and excellence.