Best practices for agility

by loqojo on 2009-01-16 22:36:09

Xuan Yuan Interactive operates in units of small teams, adopting agile development methods and experimenting with various practices. The practice that Bai Xiong is most satisfied with is pair code review: in the development team, code written by one person must be checked and tested by at least two people to pass. Depending on the different quality requirements of the product, sometimes even five people are required to check it. Those conducting the code review need to provide feedback or suggestions to the code writer. This is a great opportunity for interactive learning, where the technical level of the group can collectively improve to a higher degree. This process is controlled by a code review system. To better manage the code, every change is tracked, reviewed, and feedback sent via email to the entire group. In addition, the team holds a code review meeting every two weeks to discuss issues that require collective standardization and agreement in the current code, share experiences from some code reviews, and plan refactoring.

Team self-management is also one of Xuan Yuan Interactive's best practices. The development team can independently control and change the development process, and many people love this way. The development team frequently holds retrospective meetings to discuss what development methods should be used, tracks development progress, and provides suggestions to improve software quality. They propose new development methods to ensure higher productivity and higher quality. This is a continuous improvement process, where everyone is trying to make changes. "It’s a bit like a scientific experiment; any slight change leads to a new experiment," said Bai Xiong. Each team has enough freedom to implement new ideas, so the company is filled with different software development processes. Sometimes, when one team invents a good method that proves effective, another team will learn from it, and this method will spread. Everyone takes responsibility and communicates openly. Bai Xiong said, "Agile gives developers more freedom and more responsibility."

The development team adopts the Scrum development method, holding sprint meetings every two weeks where the development team explains which features they have implemented and demonstrates them (demo), then collaboratively plans tasks for the next week. Regarding the time required for each task, every developer has a say. Developers independently estimate the time, and after discussion, the final decision is made (planning poker). During project implementation, daily stand-up meetings (stand up scrums) are held to review yesterday's work, where the project manager supervises progress and helps propose improvement suggestions. Each team has a task board focusing on all tasks. Bai Xiong emphasized, "In short, you want all team members to feel responsible, rather than having the project manager tell the team what to do." In the software development process, changes are still unavoidable, even the most meticulous plans may go wrong. "We hope our plans can keep up with changes," Bai Xiong emphasized in Chinese.

The team keeps plans synchronized and controls project progress by promptly updating the backlog list and burn-down charts. However, they sometimes misestimate the complexity of a task. For example, a task that actually requires 200 points of effort might be underestimated as 100 points, leading to the discovery that the task cannot be completed on schedule. In such situations, team members use sprint meetings to understand the reasons and discuss solutions. The entire process is transparent, and clients fully know the project's progress and adjust based on the team's recommendations.

In the Scrum development method implemented by Xuan Yuan Interactive, there is no role of Scrum Master. Instead, the project manager is responsible for the overall progress of the project, managing the project while implementing Scrum, such as using tools like burn-down charts, Trac, ticket boards, and ticket cards for management. However, they don't handle engineering tasks like training programmers or writing code; these responsibilities are handled by the team leader. The team's technical leader is usually a senior developer, mainly responsible for specific software development work, and also takes on part of the Scrum Master's responsibilities. Bai Xiong summarized: "We have the duties of a Scrum Master, but they are not solely managed by one person; instead, they are shared between the project manager and the team leader." After a period of implementation, everyone believes this is an excellent method. One point strongly advocated in the implementation of Agile and Scrum is having a member from the client side in the team. However, this is almost impossible for Xuan Yuan Interactive, as many of their clients are from Europe, and even in China, most clients don't have much time to personally follow up on projects. Therefore, Xuan Yuan Interactive has set up a Project Manager Team (PM team), whose responsibilities include maintaining close contact with clients. Sometimes, they can represent clients to make simple decisions, explaining afterward.

XP, automated testing, continuous building, and other methods are widely applied at Xuan Yuan Interactive. Some teams use task boards and information monitors to view the current system's status or establish processes. Other teams are experimenting with TDD, though its implementation is relatively difficult. Some teams have achieved good results and are trying to recommend it to other teams, but not everyone can use TDD effectively. Bai Xiong said that after three months of practice, they decided to abandon pair programming because its implementation was inefficient. Regardless of how effective pair programming is, a code review must always follow. The purpose of pair programming is knowledge sharing and quality control, and code review can also achieve these goals. Bai Xiong believes that not every team is suitable for pair programming, and many companies that adopt pair programming often skip code reviews.