Many product development organizations have tried the so-called “agile software development” method, the most popular of which is “Extreme Programming” (XP), in addition to other agile methods, such as Crystal, Adaptive, Scrum and Pragmatic Programming.
When using these agile methods, product managers are often confused about their role. Some product managers even worry that adopting agile methods will affect product quality.
I plan to first summarize the core principles of agile development, and then take Extreme Programming (XP) as an example to point out the difficulties of Extreme Programming and how to better play its role.
Agile methods at a glance
The requirements of various agile methods are very different, but they all follow the following 12 principles.
1. The most important thing is to satisfy customers by delivering valuable software as early as possible and frequently-delivering valuable software as soon as possible.
2. Frequently deliver runnable software, delivered once a few weeks or months-frequently release new versions.
3. Runnable software is the main criterion for measuring progress-software is more important than documentation
4. Accept changes in requirements, even in the final stage of development-listen and learn quickly
5. Business personnel and developers work together during the project-close collaboration
6. Find proactive people to develop the project-provide them with the environment and support they need, and believe that they can do their job well
7. The most time-saving and effective way of information transmission in the development team is face-to-face communication
8. Spontaneously organized teams can make the best architecture and design-architecture must be agile, and good ideas are everywhere
9. Continuous attention to advanced technology and excellent design can promote agility-frequent refactoring
10. Agile processes promote sustainable development-this should be able to maintain a relatively steady pace-rather than cause failure
11. Simplicity is the foundation of everything-less is more
12.The team regularly reflects on how to improve efficiency and adjusts the work process-reflection afterwards
Overview of Extreme Programming
To explain what it means to follow an agile method, you might as well look at the detailed specifications of the most popular Extreme Programming in agile methods. The inventor of this method emphasized that Extreme Programming is not a panacea and should be used selectively. The main principles are as follows.
-Pair programming-two programmers use the same computer to develop the same software
-Simple design-only design and develop what you need now, without considering future potential needs
-On-site customer——The customer representative is stationed in the development team, he represents the needs of all products, and constantly explains the needs and helps decision-making during the development process
-Incremental development——Frequency releases products on a small scale, and quickly pushes the product into an ideal state
-Planning well-engineers only do evaluation, and customers decide the function and time of each release
-Continuous review of code-based on the pair programming model, two developers review each other’s work
-Continuous testing-developers write unit tests while coding, and customers write functional tests specified in use cases. These tests are carried out automatically and continuously
-Continuous construction—continuous development and integration of software, so that problems can be found early, and the system has always been in a buildable state
-Continuous refactoring-software developers make unremitting efforts to simplify and improve work by refactoring code, while ensuring that all tests run normally
-Code sharing-Different from the mode where each developer “exclusively” his own code, each developer in the extreme editing mode can optimize any code anywhere in the system as long as they think it is necessary.
-Open workplace-refers to the entire team working together in a room, where developers sit in the middle
-Work 40 hours a week-limit overtime to improve work quality
-Code is documentation-the most useful document is the software itself, the entire team should follow the coding standards
Of course, this method is proposed from the perspective of software developers. In their view, apart from programmers and users (customers), no other staff are needed. This is where the product manager feels worried.
The work of a product manager includes at least the following three aspects.
Define the product
First figure out what product to develop. The extreme programming method is proposed for customized software projects, the purpose is to meet the specific needs of specific customers (such as internal staff salary system), it is not suitable for general products. In fact, in books and articles describing Extreme Programming methods, there is almost no mention of product management or interface design.
The most worrying thing is usually whether product managers can replace the role of on-site customers. Only by in-depth study of target users, understanding of user needs, use environment and competitive landscape, product managers can play the greatest role.
Even more worrying is the lack of roles in product design (interface design). For products (unlike those customized software developed after signing a contract), the user interface and user experience are very important, and professional designers need to use their professional skills to design, so it is very important to introduce this important position in the workflow.
As long as the initial iteration is used as a prototype for continuous evolution and continuously tested to ensure that the development team can develop the correct product, and then implement the product execution in the next iteration, the XP method can be better utilized. The key is to ensure that the product you develop is what the customer wants to buy, and that the customer can figure out how to use it. Only one customer or product manager understands that this product is not enough, it should be tested by a broad group of target markets.
Product development
The second thing to consider is what are the consequences of these technologies used to develop scalable, high-performance, reliable, and easy-to-maintain products. These worries make people immediately fall into a kind of near-religious controversy, the focus of the debate is, what is the best way to develop and test software, and this is completely outside the responsibility of product management. Product managers only need to clearly determine the requirements, and then let the technical team control the risk in the most appropriate way.
The Extreme Programming process relies on customers to define use cases (also known as user stories), which serve as the basis for functional testing. This may be good for small projects, but if it is a large, general-purpose product, it is necessary to ask someone to design the necessary test cases to ensure scalability, functionality, performance, fault tolerance, and localization features. These are usually the responsibilities of QA, and the methods of Extreme Programming can also be used for reference. The key is to let developers be responsible for unit testing, and QA staff for other tests (such as system, integration and functional testing, etc.).
Deploy the product
The last thing that people pay attention to is the release of the product. People have long believed that the cost of making changes is getting higher and higher over time, but Extreme Programming challenges this view. In other words, as long as you follow Extreme Programming practices, you can reduce the impact of system changes in development. This is true for customized software, but for many commercial software products, the impact of changes is still great, especially for Internet services with a large active user base.
I have discussed the “smooth deployment” strategy, these methods help to reduce the negative impact of the frequent release and update strategy advocated by the Extreme Programming project.
Summary
From agile development to extreme programming methods, they are all created to solve practical problems in traditional software development methods, especially dedicated to enhancing the communication between developers and customers, saving time and figuring out whether the product you are developing It is exactly what the customer needs, and reduces the risk in the incremental development process, while giving priority to the development of highly optimized functions. In addition, there are other valuable technologies, especially pair programming, incremental development, continuous integration and automated testing.
However, for companies that provide commercial products and services, it is more important to combine these methods with product management, product design, and quality assurance to ensure that the products you develop can be used by users and consumers. Only in this way can a wider consumer group be covered.