It has been vividly described as "waterfall" development and "agile development" as the poles of software development. Waterfall development from the beginning of the development of the definition of software architecture, and then module development and assembly. Agile development develops software directly according to the requirement of refinement, and gradually builds up large software system by iterative method.
For waterfall development, people are familiar with it. But for agile development, it may be very little known. Recently, ThoughtWorks chief scientist Martin Fowler, ThoughtWorks China company general manager Sidney G.pinney and China Computer newspaper senior vice editor-in-chief Guo Xu Dialogue will help you understand the wonderful world of agile development.
Agile Development and human
In the face of the key factors of software success or failure, in software architecture, development methods and people three factors, Martin Fowler chose people without hesitation. What is the interdependence between agile development and people?
Guo Xu: You mentioned that people are most important in the software development process. So what are some of the special requirements of agile development for the development team's personnel relative to the traditional development approach?
Martin Fowler: So far, we have no relevant validation to show what kind of person can perform better in the agile approach. However, it is worth noting that regardless of the method adopted, the quality and level of the person will have a crucial impact on the project.
Guo Xu: The traditional software development method is to separate the architecture design from the program development. Architecture design often requires a highly accomplished architect who is familiar with the overall structure of the software, and program development may require only the developer to master the programming language, so what is the requirement for agile development for developers?
Martin Fowler: First of all, software design and programming are very close to each other, and it's hard to tell apart. The traditional software development method must be divided between the two lines, say this part is the design, that part is programming, the result is often not particularly good, often leads to some out of the actual design and the design concept of the programming implementation, we have witnessed in many projects these aspects of examples. When an architect gets out of programming for a long time, the architectural design he makes is often impractical, making it difficult for programmers to implement.
Guo Xu: For an enterprise software project, will its business personnel participate in or not determine the success of agile development?
Sidney G.pinney: If the business unit can participate in the development process and work with the development team, the agile approach will give them the greatest opportunity to participate. They will be able to see in the shortest possible time how a software from the mind of the idea into a sketch, and then become a program, and finally become a software can be used to see how the whole system from a small piece of a small piece of function together into a large application, and enjoy such a fun, See for yourself how your business needs become a real software.
On the contrary, if the business people do not want to participate in the software development process, then agile development is difficult to carry out some good development methods in the development process. I personally think that if the business people are not interested in the software, do not want to communicate with developers, no matter what software development methods can not get good software.
Guo Xu: When implementing system development with agile methods, does it require that all development teams have a high level of personal quality and programming ability? If their level of difference will affect the development of the system effect?
Sidney G.pinney: If the team members are on a level, and is a high level, of course, it has its benefits. But for a team, more often than not, there are some people in the team who are relatively senior and high level, while others are low and inexperienced. When such two groups of people combine into a team for project development, it is no doubt that the novice should first learn from the high-level members. However, to a certain extent, high level members also need to learn from the novice, because the Novice's mind is still in a fresh state, the mind does not exist some stereotypes. Although he may not know what to do, but there may be very fresh ideas. People are the most important factor in the development process, and the team should try to maximize the energy of each member when they collaborate in the development.
Who is better suited to agile methods
Author: Li Kun
With the advent of agile development, many people ask whether agile development is appropriate for their own research and development teams and for their own businesses.
Guo Xu: In fact, there are still a few people using agile development. Since it is a good method, why is it not widely used by developers? Why do business users use it very sparingly?
Martin Fowler: Agile Development is still a relatively new approach. For enterprise customers, to implement software development in this way, it is necessary for the business people to work more closely with the technicians who implement the development, which will require a lot of work on the part of the enterprise staff, which is accepted and requires a process. So even though more and more people are interested in agile development, so far only a few have adopted it.
Guo Xu: Specific to the application, you think what kind of enterprise, what kind of team, what kind of project is more suitable to use agile development This method?
Sidney G.pinney: Implementing Agile development will bring many impacts and changes to the enterprise. A good enterprise should be willing to accept the change of the enterprise, is willing to continuously improve the software to promote business change, and from this change can feel a kind of excitement, happiness. In other words, agile development requires an enterprise to have the ability to adapt to change, which brings to the enterprise the ability to embrace change. Therefore, the enterprise that is suitable to use agile development, must be a willing to accept the change enterprise. If companies are more likely to see their business unchanged for 10,000 years, it makes no sense to give it a flexible approach like agile development.
Guo Xu: Just said that in the agile development process people are the most important factor, compared with the traditional software development methods, the knowledge base is more accumulated in the minds of developers, rather than a heap of requirements analysis, summary design, detailed design, test reports and other documents. But what happens when a project is finished, the project is in trouble, or a software change and maintenance is needed, and the developer who has a deep understanding of the project is unable to come back and continue with the service?
Sidney G.pinney: Indeed, when developing software using agile methods, there is little doubt that the resulting documentation is very small. Because we use technical means to put more knowledge into this project. Later people can read the code or see the project itself to learn a lot of knowledge of the project. And for the knowledge that cannot be embodied in the code, we will record this knowledge by means of communication. In the standard working methods of ThoughtWorks, a dedicated business process is used to record the appropriate documentation to help customers retain critical documents. And these documents are often what customers really need.
Why do you say these documents are what customers really need? Because these are the real challenges the development team encounters in implementing the development process, they are recorded only when they do not understand it. The knowledge that the team has mastered needs to be solidified within the project, and the part that is not understood may be where the person next to the project is not. Documents such as detailed design that are left behind in the traditional software development process are often redundant, in terms of knowledge, to many people. In contrast, the documentation left by the agile approach is almost without redundancy.
How agile development Goes forward
So far, only a small proportion of people are using agile development. How should agile development develop and find its own business value?
Guo Xu: Agile Development Approach solves the problem of software adaptability, but we know the reusability of software engineering is also critical. May I ask Mr. Martin Fowler, which is more important for software adaptability and reusability of software?
Martin Fowler: It should be said that software reuse must be based on the software is available, the software first to solve the problem of usability, reusability of the software itself put forward higher requirements, more software is not equipped with the ability to reuse.
Guo Xu: Does software reusability and applicability solve different areas of the problem?
Martin Fowler: The two are relatively independent and have too much comparability. Agile method can not only solve the adaptability of software, but also realize the reusability of software.
Now there are a lot of people who are also using agile methods to develop reusable software, for example, some Java frameworks are developed using agile methods, are highly reusable, and many open source software also employs a large number of agile practices, although they do not explicitly propose which approach, but its development characteristics are agile characteristics.
Guo Xu: If in the project development process, ThoughtWorks helps the customer to learn the agile development method, the customer will no longer need the ThoughtWorks, appears ThoughtWorks business value also to suspend. Conversely, if you do not teach customers, will lead to such a situation, customers as long as a little business changes or requirements, you need to constantly seek thoughtworks help, so that ThoughtWorks will bind the customer, lasting business value. In the actual project operation, how does ThoughtWorks realize its own commercial value?
Sidney G.pinney: The way we want to work is to get into this project and work with the customer team to develop the first one or two versions of the customer's needs, while improving the customer team's ability to develop and enable them to continue with the development, and then we'll leave and look for the next project. Because for the ThoughtWorks people, more like to accept new business, new technology, new challenges.
Therefore, we do not like to stay on a project for a very long time, which will make us feel some lack of challenges. So we are more willing to do this, is to work with the customer team for a period of time, teach the customer Team Agile Development method, later choose to leave the project. The business value of ThoughtWorks is not to give customers continuous system maintenance, but rather to teach more and more people how to adopt agile development, bring them the value of agile development. (n101)
Author: Li Kun