How to achieve agile software development? Source
Translated
- ZenTao ALM
- 2022-11-27 12:30:00
- 1008
Image Source: Skywell Software
In software engineering, there are many software development models, such as the waterfall model, rapid prototyping model, incremental model, spiral model, evolutionary model, fountain model, RAD model, agile software development model, and XP extreme model. Each of these models has its application scenario and scope of application, but the most practical development model is agile software development.
Do we have a solution facing such fast-paced requirements of companies and customers? People from production life summed up a set of that efficient and quality development models - agile software development.
I. What is agile software development?
Agile development is an iterative, step-by-step approach to software development that focuses on the evolution of users' needs. In agile development, the software project is cut into multiple sub-projects at the beginning of the build. The results of each sub-project are tested and have the characteristics of being visible, integratable, and runnable. In other words, a large project is divided into several interconnected and independently run small projects and completed separately to achieve the purpose of rapid development.
II. How is agile development achieved?
1. Splitting large system into sub-projects
We used to accept that after the project was established, we should first research and analyze the requirements. After the research, we should produce various research reports and requirements specifications. After the requirements are done, we should carry out the outline design (UE design, UI design, interaction design, database design, and framework design). After the outline design is finished, we should complete the detailed design. After one cycle, it takes too long, and when there is a problem in the previous phase, it will affect all phases of the whole project process.
The agile method will split the large system into sub-projects and then split the sub-system into sub-modules to minimize the coupling between modules and increase their cohesiveness so that we can divide the team into multiple groups and each group can work at the same time. In addition, when the requirements of a module change, the impact on other modules will not be too great to reduce the development difficulty.
Summary: break the whole into pieces one by one
2. Staying with customers
To reduce communication costs, all our team members go directly to the customer site and communicate with the customer anytime, reducing understanding bias through face-to-face communication.
During all phases of the project, we always stay in touch with the client, communicating and communicating at all times. Through this approach, we can get the requirements first, solve the problems first, reduce the possibility of errors, improve the development efficiency and ensure the development quality.
Moreover, it is easier to gain the client's trust in this way, and the client can know the working status and progress of the project at any time. Once the relationship of trust is established, the rest of the work becomes easier and more enjoyable.
Summary: Face-to-face communication with the client reduces communication costs and promotes mutual trust.
3. Communicating with modeling
Use models to communicate with customers and use them to get user requirements instead of going through extensive documentation, which is time-consuming and ineffective to write. In reality, most of us do not like to spend much time reading various words and parameters, and models are more intuitive and three-dimensional. The model I am talking about here does not refer to our usual design prototype alone. It includes a use case diagram, class diagram, deployment diagram, state diagram, activity diagram, package diagram, object diagram, prototype diagram, effect diagram, E-R diagram, etc. Different graphics express different product dimensions, making the product rich and three-dimensional.
Summary: use models to communicate instead of documents.
Image Source: Skywell Software
4. Embracing change with courage
The market environment is the wind vane of the product, and we should always pay attention to the market. To cater to the market, the product must change at any time.
Demand changes, design changes, etc., all kinds of changes make us anxious, but as product people, we should also accept changes. Only rapid changes in the product can meet the future well. We prefer to change as long as it is reasonable. Even in the development stage, the requirements may also change.
Agile development allows for change and, through change, gives customers greater competitiveness. Agile development uses diagrams to document requirements, and all code is designed in modules, splitting up different functions as much as possible to reduce correlations.
One of the most important ideas of agile is "embrace change with courage".
Some people say, "You must not be from a technical background. What is not allowed is to revise the requirements after they are determined. When product managers communicate with technical staff, when talking about a complex operation, they often say: "You sure you will not modify it? If you determine the needs remain unchanged, I will do it." you have to agree, and then look for technical modifications when there is no way back.
In reality, which can necessarily not modify the requirements? Do we make products is not also always meet the test of the market? Sailing on the sea, when the wind changes, our ship does not always have to be ready to turn around and adjust. Change, in itself, is to adapt. No change; it is the same as no progress.
But we, as product managers, should use our wisdom and keen market insight, try to sense the wind direction, control the demand, and do sufficient research at the early stage of demand discovery. Fear of change is not a solution. We should do a flexible and adjustable plan at the beginning of the project. If the demand changes, what should we do? This is the idea of agile. If the demand changes, who can stop it?
5. Delivering operational results quickly and consistently
As I said before, the failure of a project is usually not due to technical reasons but because customers lose trust in us. We must consistently and continuously give our customers a sense of trust, constant communication, and communication with us at the customer site so they can feel our heat. Likewise, there is a need to provide the customer with the appropriate deliverables (operational products) early and consistently so that they can see what we can do.
Of course, this has the added benefit of exposing the problem early. Only if it is exposed early can it be solved early. The later the problem is exposed, the harder it is to solve.
Summary: To reduce the project risk and deliver a runnable program as early as possible
6. Face-to-face communication
The fastest way to communicate is face-to-face communication. In agile development, the most advocated way is to reduce cumbersome and inefficient communication and use the fastest way to communicate directly. Let all team members, such as technical staff, designers, and clients, work together to reduce information exchange breakdowns and make communication smooth.
Summary: direct communication, reduce intermediate links
7. Workable software is the main measurement
Producing more documents and intermediate products is not as real as the results. The most important thing for the customer is not the intermediate product but the result. Working software is the most important measure of development progress for agile software development. Facts speak louder than words, and doing things on the ground, realistically and practically, is the core of agile development.
Summary: making deliverable software is the core of the project
8. Maintain a steady rate of development
Project development is long-distance running, and rapid acceleration in the short term is not the way to run long distances. We should run in a continuous, even-pace way so that team members can be assured of staying on track until the end. Agile development provides sustainable development speed, so that team members are not tired, but it also helps to develop a project development schedule and control the development cycle.
Summary: the project development process is a long-distance running, don't sprint at the beginning
9. Regular team optimization
We will carry out team building every once in a while to carry out criticism and self-criticism to find out the problems in work and bottlenecks that affect personal and team development. We find out the problems between the team and members through communication and communication, then make self-adjustment and create a team that can fight through continuous optimization and upgrading of our team.
Conclusion:
If project managers can use agile development ideas well, it is equivalent to having magic weapons in the game world and mastering the way of cooking in the food world.
Support
- Book a Demo
- Tech Forum
- GitHub
- SourceForge
About Us
- Company
- Privacy Policy
- Term of Use
- Blogs
- Partners
Contact Us
- Leave a Message
- Email Us: [email protected]