The difference between agile development and code writers without specifications, without documentation
Contrary to some viewpoints, agile developers are not the maverick who writes code without rules or restrictions. "Cowboy Coding" is a sign of lack of rules and poor management, and is unprofessional. If there is such a code-writing phenomenon in the team, you should try your best to change the situation for the sake of the customer's benefit.
Agile development requires at least what documents to develop and maintain.
But the reality is that most people do not like to write documents, and do not like to study documents, so too many documents will only consume the team's limited time, and does not bring much benefit;
A summary of high-level documents is the contract between the user and the development team, the mutual understanding helps to communicate and interact, the user only cares about what he wants, does not care about how to achieve, not care about how difficult the implementation, so we can not expect users to understand the technical problems we encountered, and even read our code or comments;
Agile development attaches importance to the role of documents, but also the maintenance of documents; It considers documentation to be small and refined, and generally recommends developing and maintaining three documents:
"Software Requirements Specification" or "Product Specification": Define the software should have the functions, boundaries, etc., so that software-related stakeholders have a consistent understanding of the software, as the user with the development team to discuss the basis of common, and in the development process of continuous updating and maintenance;
Architecture Design Documentation: How the software is implemented and what the internal relationship is.
Project Management plan: Plan how to implement, test, release, etc. in phases;
whether agile development requires system design.
Agile development is a small cycle to replace the large cycle, small cycle includes: requirements, design, development, testing, release, the process is to include the design link, that is, the need to do system design;
Since the complete design needs to have relatively complete data and relatively long time, and the small cycle is relative, so agile development does not advocate highly refined and complete design, advocating a large-grained framework design, generally refers to the architectural design or system design or functional module outline design, Avoid the change of architecture level in later reconstruction, and then gradually expand and refine in the process of gradual realization;
Do outline design, not to detailed design. [can be divided into modules, classes, public interfaces].
The implementation of the class can be determined directly by the coder, and after the project is completed, the implementation model and class diagram of the class can be obtained through a post-processing tool.
Some traditional design methods such as structural design, object-oriented analysis (OOA), Object-oriented design (OOD), top-down, rapid prototyping can be used in the process of agile development.
whether Agile development requires a project plan.
Commercial software development needs to assume the responsibility of obtaining profit, so it has high requirements on the function completeness, stability, immediacy of the product, it is an organized and objective behavior, so it needs the project plan, but this plan is a short-term plan, according to the non-realized function situation, The previous version of the feedback and organizational goals to develop the development plan; only in this way can we constantly integrate into new changes;
Annual planning, monthly implementation plan. [Annual planning is generally not variable, the monthly plan can be based on the actual situation of the implementation of the requirements of the schedule]
the iterative period for agile development is about how long.
For general purpose small projects, a large feature version can be delivered monthly, delivering a change or bug version every two weeks. There is a general plan for the content of the deliverables in the project development progress estimate.
Of course, it can not be published frequently, especially the urgent release of major bugs, which will reduce the user's expectations and increase user costs, to bring additional psychological burden on users: he will think that the product quality is low, quality control is not rigorous, etc.;
Why Agile Development advocates small versions. What are the advantages of a small version?
The goal of the iteration is to decompose complexity, reduce risk, improve team morale, and so on; the iteration has many advantages:
Ⅰ, the overall risk is relatively small: small version changes, always on the basis of the previous version of local adjustment and increase, technical complexity is low, because the planning function is less, the workload is easy to estimate, so its overall risk is relatively small, often can be released as scheduled;
Ⅱ, the need to accept a strong: Because of the rapid implementation and release of the small version of the test, and then into the next version of the planning implementation cycle, so that once the new requirements can quickly enter the development horizon, can be achieved as soon as possible;
Ⅲ, test, and develop efficient collaboration: development and testing work in parallel, test design test scenarios and use cases when the first version is developed, and when the first version is released, the development goes to the next version, the test applies the test scenario to test the version just released, submits the bug ; Develop a bug that fixes all previous rounds of discovery at the end of the next release, and then release the new version, so that the cycle of development and testing enables efficient collaboration;
What is the relationship between agile development and refactoring?
Agile development is based on reconstruction and is always in the process of reconstruction.
Why Agile Development emphasizes the involvement of team members and the participation of users.
The person is the main body of all relations, is the main body of the productivity promotion; Agile emphasizes the team members ' high participation is to unify the understanding, the goal of the team becomes each person's work goal, makes it for each team member's identity, forms the high cohesion, achieves the concerted effort, the effective collaboration effect;
Because there are no highly detailed documents, the only way to exchange information between members is through face-to-head communication, good team atmosphere and collaborative relationships to facilitate such communication, and to make the message accurately and effectively communicated;
Due to the lack of professional training, users can not express their intentions clearly and accurately, resulting in ambiguity and ambiguity in demand, and the user's participation makes the requirement of ambiguity and boundary uncertainty be confirmed and perfected in the process of interaction;
What we are trying to do is to realize what the user needs, and ultimately let the user like it, only the user likes it to use it well, then how can we not listen to the user's opinion seriously.
The bottom line is: The user participates in helping us do the right thing.
how to evaluate our team and the development process has been agile.
Since agile development has no standard reference practice, it is difficult to conclude that the development process is agile through a process, so how can we evaluate our team and the development process as agile? The approach used here is to assess whether the team and its development process are agile, based on the atmosphere of the team, the state of the project, and the perceptual knowledge of the team members, and we believe that the methodology for assessing the agility of the project team and the development process is as follows:
1, the team has a common vision, and confidence in this vision
2. The team has clear stage objectives and is known to each member;
3, the team know the current plan: What to do, when to complete, the expected effect, etc.
4, the team task is low-coupling, and close cooperation;
5, the release process is relaxed and happy, build version and constantly testing is one of the normal behavior;
Agile Development Can shorten project time and improve quality.
Agile development can shorten the project cycle and improve overall quality. Yes, but I can not provide quantitative data for reference, can only be evaluated and inferred from several aspects: Agile development can shorten the project time and improve quality;
1. The user's participation helps the team to complete the function once and do it correctly, reducing the time of rework;
2, continuous reconstruction and test release can be found in the early days, the overall quality significantly improved;
3, process goal-oriented, so that the team is highly focused on project objectives, improve productivity;
4, the continuous release of the team is a positive incentive, sense of honor and success to make the team to maintain a continuous passion;
The biggest difference between agile development and CMMI:
I think CMMI is made up of big and small processes, agile is made up of small and large processes.
The CMMI gives you all the points that you might want to consider, and lets you choose from the
Agile is giving all the points that must be considered and then letting you expand on them
The method has no so-called good or bad, the key to choose right, use the method, if only for these books on the theory of discussion, itself is flawed.