How startups implement agile development

Source: Internet
Author: User

Speaking of agile development, it is not because of agility and agility. The agile development over the past few years has been mythical by many agile consulting service providers. This is not an artifact. After implementation, it can solve all the problems of software companies, we need to find a suitable model based on the characteristics and problems of our company.

As we all know, start-ups need to develop a product that can make the company money at the beginning, but most start-ups are not so easy to do, the capital chain of many companies that have not yet succeeded is broken, and the company is also dead. Our company is in such a situation that there is a product line that can maintain the company's spending and only just enough surplus. To expand the speed of development is not enough, it has no significance to start a business. The other line is to make technical innovation to explore a popular product in the future, but it cannot be developed with hunger. How do we implement agile development based on our own characteristics? A difficult problem!

Our technical team is configured as follows: one Technical Director, two senior development engineers, one senior Development Engineer, two potential development engineers, one front-end development and one test. The Technical Director needs to deal with a lot of team management and customer management work, and can participate in the project for a maximum of 1/2 times a day. Two senior developers are responsible for mentor to other engineers, and the time for participation in new project development is about 80%. Senior engineers need to reserve the project study time, which is about 90% of the project participation time. Potential development engineers need some time to study technology and projects, but they can basically invest 70% of their time in projects. The revolution where front-end development and testing are needed and belongs to the mobile forces.

Currently, a total of six old projects are under maintenance, and two new projects need to be developed. The maintenance of the six projects requires a total of four person-days per week (person-days means that one person needs four days to complete one thing ). One of the new projects, "Project 1", is estimated to be about 120 person-days of development, and needs to be completed within one month. "Project 2" may take about 40 person-days of development, and it may take two weeks to complete the development. The current human resources are calculated based on the time they can invest. The total resources are (1*1/2 + 2*8/10 + 1*9/10 + 2*7/10) 30 days = 132 person-days, it takes 4 person-days for six old projects, 4 person-days for a month, and 4 person-days for 4*4 = 16 persons. The project can invest 132-16 = 116 person-days, and a total of 120 + 40 = 160 days, 44 fewer person-days, which seems to be an incomplete task.

However, at the end, we completed the two projects using agile development, without affecting the maintenance of old projects. How did we perform this operation? At the beginning, we developed two products. At this time, only two people can work together to develop products without any model. With the expansion of personnel, it is necessary to think about how to collaborate between teams to complete tasks based on quality and quantity.

Test 1: traditional software development model.The entire process includes requirement analysis, system design, task breakdown plan arrangement, development design, coding, testing, delivery, acceptance, and maintenance. This mode is also the most commonly used mode, but it applies to our company.

Traditional development process

The boss has an idea for starting a company, but he cannot describe the requirements well. Therefore, the task of Requirement Analysis falls on the technical director. At the beginning, the system design and task breakdown were completed by the Technical Director, which could be undertaken by later senior development engineers. The development design can be completed by various development engineers. senior engineers can check the design, test the design by testers, and deliver the customer acceptance and technical maintenance. It looks like a good model. After several products are developed, the latency of some products is far from the user's expectation, and the confidence of those who participate in the project team is frustrated.

Why does it fail? Later I thought about these issues:

1,The Technical Director is not a product managerAnd cannot take responsibility for product design. The boss is trusting the technical director to do a good job of the product, and then hand it over to him. However, a concept is mixed up here. The product manager, Project Manager, and Technical Director should play the role of the project manager and architect. The project manager controls the project progress and plan, and the architect grasps the overall technical problem. The Technical Director cannot help but fulfill this task and is responsible for it. In the end, the mechanism does not separate the product design from the project manager. The technical implementers are product designers. More should be done by the boss or other business personnel for product design.

2,The demand is unstable, and the change is costly.. Because of entrepreneurship, the demand will be adjusted frequently to adapt to the market, but once adjusted, many development plans will be adjusted accordingly. If some functions are under development, a lot of work needs to be restarted after adjustment, seriously affecting the enthusiasm of technical colleagues. It is impossible for businesses to adjust their needs. They are designed to meet user requirements and to bring value to the enterprise only when users are satisfied. However, if the adjustment is too costly and many code needs to be rewritten, you will blame the technical director or project owner for failing to grasp the requirements.

3,The team often works overtime, but the combat capability is not strong.. Core Teams are tired of responding to requirements, developing technologies, and maintaining old systems. They do not have time to guide new colleagues in technical learning. New colleagues' skills have not yet been developed to work in a low efficiency and tasks are often postponed, no sense of accomplishment. There are a lot of things in the core team. There is no time to organize project documents, and new employees are not slow to get started with documents. We have a lot of things every day and need to work overtime to complete them. In addition to work, everyone has many things to do, such as going home to watch TV, spending time with their families, reading books, and learning. If an employee is allowed to work 24 hours a day, he or she may not necessarily agree. The development is much more efficient than the exhausting work.

4,Delivery software quality is poor, which is far from user expectations. When you start a business, you have a good idea and want to do it. Make a product that everyone loves to use. The reality is cruel. People are not satisfied with what they have worked so hard to do, and users are not paying their bills. The delivery of the software does not take time to perform self-testing, or the self-testing is insufficient. Some companies are not tested yet and it is quite dangerous to go out directly to users. This not only affects the use of users, but also the reputation of the entire company.

It doesn't mean that traditional software development models are not good, but they are not suitable for startups like ours. Start to try other models. Without a good system, we will not be able to maximize everyone's productivity.

Test 2: Agile Development Mode. Agile development is a human-centered, iterative, and gradual development method. Agile Methods emphasize people-oriented and focus on delivering valuable software to customers. In an open environment with high collaboration, incremental development is implemented in an iterative manner. Feedback is often used for reflection, reflection, and summarization, and self-adjustment and improvement are continuously carried out.

The main idea of agile development:

I. Individuals and interactions are more valuable than processes and tools.
2. Available Software is more valuable than lengthy documents
3. Collaboration with customers is more valuable than contract negotiation
4. Responding to changes is more valuable than following the plan

Our previous problems, such as unsatisfactory delivery software customers, delays, and high demand changes, all seem to be addressed. For such a good model, try it first. Let's take a look at the agile development flowchart.

Start-up companies agile development agile process

Simple agile development process:

1. The product owner designs the entire product as a product backlog. Product backlog is a list of requirements. (BacklogIt can be understood as a requirement or something to do)
2. Hold a product backlog plan meeting, estimate the time of each backlog, and determine which backlogs need to be completed in the first sprint, that is, the backlog of the sprint. (SprintIt can be understood as a task set developed by a team)
3. Write the sprint backlog on the paper and paste itTask Wall, Let Everyone claim the allocation. (The task wall is to paste unfinished, ongoing, and completed tasks to a wall so that you can see the status of the task)
4. HoldDaily standing MEETINGLet everyone summarize what they did yesterday, what difficulties they encountered, and what tasks they carried out today at their daily meetings. (The daily Standing Meeting is scheduled to discuss with you every morning in front of the task wall. The time is controlled within 15 minutes)
5,Draw a burn-out diagramTo ensure that the task overview is clear. (The burn-out chart draws the total number of current tasks together with the date. record the number of remaining tasks every day until the number of tasks is 0. This sprint is completed)
6,Sprint review meetingIt is held when the sprint is completed. You need to demonstrate your software products to the customer.
7. FinallySprint summary meetingIn turn, everyone should speak and summarize the problems and improvements encountered in the previous sprint and share them with you.

How can we solve the problems of existing projects with agile development? Remember that any measure is to ensure that the software is delivered to users on time and by quality and by volume. Do not adopt agility for agility, companies cannot generate commercial value. Any advanced ideas or technologies are meaningless. We have made these measures:

1,Promote agile development concepts. Whether large or small companies enforce a system, the effect is generally not very good. Anything that can be implemented must be accepted by everyone before it can be recognized.

  • First, train and test the younger sister to learn agile development, and then let her assume the role of some product owners and agile instructors. The reasons include:
    A. To test the function, you must understand the business requirements.
    B. testing is also a part of the QA quality system. I have learned a better understanding of software quality.
    C. Most of the teams are boys and girls are more friendly for promotion.
  • Convene all technical teams to prepare for promotion. Start to discuss with test girl how to make it more effective and acceptable. She must be clear about agile development and be prepared with sufficient knowledge points. During the meeting, I first pointed out our current problem. Let's see if you have any ideas to solve the problem? Our products are not recognized by the customer, the boss is not satisfied, and we are tired and have no sense of accomplishment. What can be done. After the discussion, the advantages of agile development are thrown out, which is generally recognized by everyone. You may ask how to implement and implement the project. You can try to find a project pilot project. If the implementation is successful, it can be fully promoted. If the implementation is unsuccessful, it will only affect some projects.

2,Build an agile development environment. To implement agile development, we need good basic conditions to ensure the smooth development of agile development. Key Software: Build a repository dependency center on nexus, dependency on maven management projects, continuous integration and automatic compilation and release of jenkins, centralized code management of svn, and requirement and status recording of jira. For more information, see agile development environment setup.

3,Agile Project Implementation. The entire company establishes a business-oriented atmosphere. In Project 1, the purpose is to complete the project, which requires the following steps:

  • First, based on their respective capabilities and intentionsAggregationA group of warriors, both technical and non-technical. If there are not enough people to gather, the technical director can flexibly adjust resources to support the overall project investment. However, if conditions permit, the technical director can gather as needed. In the end, "Project 1" convenes a Technical Director, a senior developer, two potential developers, one frontend, and one test. In addition to the time for everyone to do other things, a total of four people can be considered.
  • Fully mobilize customers(The boss and business colleagues) participate in the project. Their participation directly determines whether the project is successful or not. Based on their previous experience, if they do not have enough participation, they will not be able to make the final things they want, or they will have a big gap. When they first joined the company, they were very confused and sometimes quite resistant. At this time, they must be patient and insist on letting everyone develop the first sprint successfully, so that everyone can taste the sweetness. Allowing them to participate in the entire project also shows that we embrace changes. If there is a change in demand, add the task to the task wall. You can have a full understanding of the time of all the tasks, if the sprint End Time is exceeded, You need to determine which features are not included in this sprint cycle.
  • Technical Director arrangement andCustomer communicationThe customer here refers to the boss and business. The test sister is responsible for communicating with the customer, assisted by the technical director. After multiple communications, I tried to use the simplest tool to draw out the requirement prototype for testing. After the Technical Director approves the request, he communicated with the customer to confirm it and iterated it over and over until there was no objection to the entire requirement. Many companies have a dedicated product owner to execute such requirements, but according to our current manpower, there is no way to do this. The Technical Director is not responsible for over-designing products to avoid previous problems.
  • After the product is designed, call the project membersBreak down tasksYou can use agile poker cards to determine the time of each task. The task decomposition should be controlled at the granularity of 1-2 days as much as possible. In this way, you can create a testing prototype within 1-2 days, and enable integration testing to detect problems as soon as possible. The task set of a sprint should be controlled at least one to two weeks, either too long or too short. If the sprint is too long, you may get tired. If the sprint is too short, you may feel that you have done too much work. "Project 1" is estimated to be 120 person-days, with a total investment of 4 people. It may take 30 days and 4 weeks. We have cut it into 4 sprints and completed it in about 1 month, meet the business time requirements.
  • Implement sprint in stages,Draw a task wall, Into the not started, planned, in progress, completed, burned out diagram. Mount the sprint task to the wall and paste it to a place not started.

Entrepreneurial company agile development task wall

  • Daily standing MEETINGYou can claim the task. Business tasks, development and design, development code, front-end design and development, and testing are all tasks under unified management. The emphasis is on a group. If a colleague asks for leave, other colleagues can complete the task on top. The standing meeting summarizes whether there is a problem with yesterday's task. If you have any suggestions for the current task, try to control it within 15 minutes to make the meeting effective. It is not like a previous business or project manager chasing everyone's ass for results, but team-driven. what everyone does every day is reflected on the wall, everyone will help him find a way to ensure the success of the entire project. After each task is completed, the project executor places the task from progress to completion. You have never assigned a region to claim a new task and paste it to the in-progress region.
  • Software Development Process. After claiming a task, how can we ensure that you develop quality code? The Team has senior engineers who can directly participate in project development without too much guidance. A learning engineer must provide guidance to perform case and system analysis step by step. The Technical Director does not recommend claiming too many development tasks. He is responsible for the outline design review of the development team. The design that has not been approved cannot be developed and guides you to analyze and design the system. As we all know, there is a systematic approach, and the rest is the technical implementation process. As long as you master the skills to implement it, it is not very difficult. You may ask, isn't agile development a product that emphasizes software development, rather than a document? We are not here to document like traditional software development, but to let everyone write down their own design ideas. Only after careful design can we clearly write down the ideas. You do not need to write a long article. This document is not welcome. For popular documents, you only need to write case analysis, table design, and complex logic. You need to draw a process sequence diagram.
  • Pair Programming. In the past, this programming model was ridiculed by countless people. In fact, it is impossible to allow two people to pair each project. This is an unrealistic waste of resources. When developing a difficult module, we add a task for the Peer to complete the task together with other developers. In fact, we often get paired during development, such as guiding new colleagues and discussing design modules. These are not counted in our development workload.

Agile Development Peer programming for startup companies

  • Project Demonstration and summary meeting. After the project is completed, all the members of the Project will participate in the demonstration and answer the customer's questions, so that everyone can fully feel the fruits of the harvest. The summary meeting mainly shares the problems and experiences encountered in this sprint and prepares for the next sprint.

After agile implementation, our productivity has improved a lot, the enthusiasm of our employees has increased, and the business participation has also led to a good overall demand control. We have communicated a lot, the 30-day task is completed five days in advance. The additional time we spent allows everyone to study areas of interest one or half a day a week, but these studies must ultimately reflect the results. For example, if you want to study a new technology in background development, you need to write a ppt to share it with you. It not only enables everyone to do what they want, but also creates an atmosphere for mutual learning.

Ps: All models should not be doggy models. advanced models are not good models, and what suits you is the best. To put it bluntly, no matter whether the black cat or the white cat can catch the mouse, it is a good cat.

In addition, Project 1 participants are exposed:

 

Project 1 agile team

Original article, reprinted Please note:Reprinted from LANCEYAN. COM

Link:How startups implement agile development

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.