In addition to Gantt charts, what else should you know about software project management?

foreword

A bad plan is better than no plan.

A bad plan is better than no plan. --Peter Thiel, "From 0 to 1"

In software development engineering, there are few programmers who go it alone. This is because the more common software projects in modern times are usually very complex and require a lot of manpower, resources, and time. To complete a large-scale software project by only one developer is tantamount to "the foolish man moving mountains". Therefore, software development is often inseparable from teamwork and project management . The so-called project management (Project Management) is simply a methodology for orderly organization, planning, execution and completion of various tasks in the project. Of course, the scope of actual project management is much more than that, usually involving resource allocation, prioritization, progress tracking, etc. It is a product of the industrial revolution and a branch of modern management, which can greatly improve the efficiency and success rate of project completion. This article mainly discusses software project management, which is very different from traditional project management such as construction engineering and mechanical engineering. The early IT project management came from traditional project management methodologies such as construction engineering, and played an important role in the early information age, greatly improving the efficiency of software development and collaboration. However, with the rapid development of the IT industry, consumer product demands are changing rapidly, and the market situation has become more and more uncertain (Volatile), the traditional software project management model can no longer meet the needs of software development. Therefore, modern software development models, such as Agile Development, came into being and became the first choice for many Internet companies.

What are the disadvantages of traditional project management models such as waterfall? What are the improvements of modern project management models such as agile? Should we completely abandon the waterfall model and embrace agile development in its entirety? As a programmer, should you have some project management knowledge and related tools? As a team leader, how should a project management process be developed to ensure development efficiency and quality? If readers have questions similar to the above, this article will analyze and answer them in detail.

traditional methodology

The traditional project management mode mentioned in this article refers to the project management framework with a longer history, more emphasis on framework and methodology, and relatively stricter. The typical traditional software project management mode is the waterfall development mode (Waterfall), which is the development mode adopted by many traditional software projects. The tools involved in the Gantt chart are also widely known and even become the symbol of project management; in addition, it is more popular The traditional project management framework of the United States is PMBOK (the full name is Project Management Body of Knowledge), which is a project management guide, edited and released by the global project management membership organization PMI, and is also the basis for the professional project management certification PMP. It is regarded as a "driver's license" in project management; the IT project management certification PRINCE2 issued by the British government, like PMBOK, is also a global authoritative software project management framework, which is more suitable for large-scale projects; in addition, there is also Six Sigma , which focuses on quality management , This is a completely different methodology from other methodologies, emphasizing quality first, and is more suitable for industries such as manufacturing that require high-precision quality control. This article does not intend to introduce all project management methodologies. Readers who want to learn more can refer to the introduction to Project Manager .

Waterfall development model

The so-called waterfall development model (Waterfall) is literally easy to understand: the entire development project consists of many tasks and sub-tasks; each task has a corresponding planned start and end time; there are usually dependencies and sequences between tasks; If the planned execution time of the task is visualized on the Gantt Chart, it looks like a waterfall. Below is a typical project management Gantt chart.

waterfall-gantt-chart

The above Gantt chart reflects the system development life cycle (SDLC, full name System Development Lifecycle) of the software project, which includes requirements analysis (Requirements Analysis), system design (System Design), development (Development), testing (Testing), acceptance (Closing) and other stages. Requirements analysis is usually in the very initial stage of a software project, while testing and acceptance are usually in the final stage of the project. In the waterfall development mode, the project tasks are closely linked, and the project manager can see the whole picture of the project at a glance in the Gantt chart. By planning project tasks and designing Gantt charts, we seem to expect accurate forecasts of project cycles and completion times.

However, "the ideal is full, the reality is very skinny". The biggest problem with the waterfall development model comes from its low tolerance for uncertainty . Nowadays, the market environment is changing rapidly, business opportunities are fleeting, and the survival pressure of enterprises has not allowed the development team to spend a lot of time on requirements analysis and system design. Many traditional software companies spend months or even a year in the analysis and design stage, and then spend months or even years developing, testing, and launching products, only to find that end users are dissatisfied or even refuse to use them, which takes a lot of time. Costs and labor costs have been wiped out. This is a lesson learned by many IT companies with blood. Today's enterprises prefer to have a more flexible software project management framework to meet business development.

PMBOK

As mentioned earlier, the PMP certification supported by PMBOK is the "driver's license" in the project management industry, because the management framework defined in PMBOK is applicable to almost any industry. It was born in the 1970s, and after decades of development, it has now been released to the 6th edition, and is now arguably the most well-known and authoritative project management guide. To put it simply, PMBOK summarizes project management into 10 areas. Through the systematic management of these 10 areas, the schedule, cost, resources and other factors of the entire project can be effectively controlled, so as to ensure the success of the project and control risks to the greatest extent. Readers who wish to learn more about PMBOK can refer to the PMI official website .

PMBOK is not only suitable for the IT industry, all walks of life can use its project management framework, so it is a large and comprehensive methodology. Including the waterfall development mode mentioned earlier, it is also the implementation method of some fields in PMBOK. The two are not mutually exclusive. Similarly, PMBOK's methodology involves many concepts, so it is more formal. The Statement of Work (SOW, full name of Statement of Work), Charter, and Closing Report can all be used as the official documents of the project, so they are used more in large-scale projects. many.

other

The author has not in-depth contact with PRINCE2 and 6 Sigma, so I will not expand it in detail.

Agile development model

In the context of the rapid development of the IT industry today, few IT practitioners have not heard of Agile Development. Agile development is also literally a project management method with a strong focus on flexibility and interactivity . In the process of practicing agile management, the project team can jump out of the traditional project management framework and become more "agile". Goals, deadlines, and even deliverables that seem immutable can be flexibly adjusted to the actual situation under an agile framework. Just like the Mongolian archers without heavy armor and large-scale baggage, the agile development team can quickly adapt to changes in the battlefield environment, so as to break through the enemy's defense line flexibly and easily.

agile-software-development

Agile development features

Agile development has three major characteristics.

  1. Driven by the development cycle . Each cycle typically lasts 1-4 weeks, ensuring that each cycle's deliverables can be evaluated frequently, allowing development efforts to focus on product optimization.
  2. Based on iterative cycles . Each iteration cycle is usually fixed, so there is always a valid deliverable at the end of the cycle.
  3. Open to customers . Customers can see the semi-finished product after the cycle is over, increasing transparency and interactivity.

The meaning of agile development

The biggest difference between agile development and traditional development mode is that agile development does not require the execution plan of the entire project task to be arranged in advance before the project is executed. In agile development, the entire project is divided into multiple more controllable stages, and project milestones (Milestone) are set at the completion of the stage, and when the milestone is reached, the customer (Customer) and relevant stakeholders (Statekholder) can be delivered according to the stage. Provide feedback on semi-finished products (WIP, full name Work in Progress), and provide reference for the next stage of development. In such a continuous "planning -> development -> feedback -> planning -> ..." cyclical development model, the final product delivered is likely to be closer to what customers expect , thereby improving customer satisfaction. , and also avoid a lot of waste of resources . In the global best-selling book "Lean Startup", the author mentioned that the biggest waste of enterprises is from "rework". Therefore, by adopting the agile development model, the project team can effectively avoid the risks brought by changes in requirements . This makes enterprises practicing agile development anti-fragile and able to acquire the ability to adapt to environmental uncertainties through continuous iteration and learning.

Iteration/Epoch/Sprint

A core concept in agile development is Iteration, also known as Phase or Sprint. This is the smallest unit of time in agile development , usually lasting 1-4 weeks. The iterative process is actually a process of continuously optimizing the product. At the end of the iteration cycle, the project team typically completes a portion or the entire (possibly less-developed) product, while also receiving feedback from the customer or relevant stakeholders to inform the next iteration. For example, in an advertisement placement background management system development project, the first-stage development team developed a very basic background system based on the initial simple requirements, with only the core functions of placing advertisements and viewing data; The deliverable is presented to the end user at the Sprint 1 summary meeting, and it is informed that it is not the final product; the end user proposes some improvements or reports some bugs based on the actual use scenario; in the next stage, the project team can follow the Sprint 1 feedback to make adjustments, and schedule optimization tasks and bug fixes in Sprint 2; and then continue to iterate. In this way, after each iteration is completed, the final delivered product will be closer and closer to the optimal state.

Related role

In agile development, there are several important roles.

  • Product Owner . Mainly responsible for communicating with customers, relevant stakeholders and development team, formulating User Stories, and need to continue to collaborate with development team to ensure development progress.
  • Development Team Members . Project task implementers, usually developers, designers, testers, etc.
  • Process manager (Scrum Master) . Responsible for the smooth implementation and development of the entire Scrum process in the project, and to solve the communication barriers between customers and developers. This role can overlap with the Product Owner.
  • Relevant stakeholders (Stakeholders) . Not necessarily directly responsible for the product, but may be indirectly involved in the use process of the product.

agile-scrum-methodology

daily stand up

The Daily Stand Meeting is a short meeting of about 15 minutes in which project team members communicate face-to-face every day. The main purpose is to track the progress of project development tasks, solve problems encountered during task execution, and coordinate resources, etc. . Don't simply think that a stand-up meeting is a "standing meeting". First of all, standing together can make the project team members concentrate and focus on the project tasks; secondly, the shorter meeting time can keep the whole meeting on topic, save time and improve work efficiency; , the daily stand-up requires everyone in the project team to speak, which improves the participation of team members. The image below is an example of a daily standup.

scrum-stand-meeting

signboard

Kanban is a management tool in Toyota JIT (Just in Time) lean production. It sets different states for project tasks, usually Backlog, To Do, In Progress, Testing, and Done. Each task has an estimated time to complete, usually in hours. Another important task attribute is the priority. In the backlog phase (Backlog), the development team members need to judge the time required for the task according to their own experience and expertise, and define the priority of the task. Different categories of tasks are marked with different colors. This kind of viewing can play a big role in the daily standup, because it is clear and intuitive, and can be seen at a glance. When the task changes state, for example the developer takes out a task card from the Backlog, it will be placed directly in the To Do. The figure below is a schematic diagram of a Kanban board.

kanban

Of course, we now have more modern tools to manage the process of Kanban without having to manually design a Kanban or buy tons of stickers. Some of the more popular tools include Trello , ZenTao , Teambition , and more.

burn down chart

Burndown Chart is an effective tool for tracking project progress. It is a decreasing curve over time. The horizontal axis is the duration, and the vertical axis is the total remaining story value, the total estimated working hours of the task, etc. Burndown charts usually have two curves: one is the estimated ideal decline curve, which usually declines linearly over time; the other is the actual decline curve, which represents the actual remaining value or labor hours, etc. at a certain time. If the actual curve is higher than the ideal curve at a certain time, it means that the current progress is behind; on the contrary, if the actual curve is lower than the ideal curve, it means that the progress is ahead. The figure below is a schematic diagram of a burndown chart.

burndown-chart

User Stories and Project Tasks

In agile development, User Story is easily confused with Project Task. They are described from the perspective of different characters. User stories are simply end-user usage scenarios. It is usually collected by the project leader from customers or end users, and will formulate the value and priority of each story from a business perspective . The project task is the actual development task decomposed by the development team according to the description of the user story, combined with the actual system architecture, technical environment and other factors, which is more practical than the user story. Therefore, it can be said that the project tasks are formulated in order to realize the user stories. The value and priority of user stories usually need to be combined with the actual business background and business value, so they need to be formulated by the product owner; project tasks are usually more technical, so they need to be formulated by developers who have a better understanding of technical modules. These can usually be done during the initial meeting and the milestone wrap-up meeting.

Scrum vs Extreme Programming (XP)

For readers who know agile development, you may have heard of Scrum and even equate Scrum with agile. This view is technically inaccurate. Scrum, including the Extreme Programming (XP, full name Extreme Programming) that will be discussed later, is just a guiding framework under the agile development methodology. Their goal is to maximize flexibility while maintaining project quality; many technical terms, such as user stories, project tasks, and iterations, are consistent. They differ primarily in how each iteration or sprint is executed.

In Scrum, the project plan in each iteration is usually not allowed to change. Once decided early in the iteration, user stories and project tasks are not allowed to change. Only after the iteration is over can adjustments be made based on actual feedback. The advantage of this is that project team members can concentrate on completing their respective tasks in each iteration, ensuring the quality and efficiency of the implemented functions, and pursuing the stability and reliability of the product after the iteration cycle is completed. But this also has the disadvantage that it is relatively "agile", because once the project plan is determined, it is not allowed to add new requirements or change existing requirements. In addition, the iteration cycle of Scrum is generally 2-4 weeks, which is relatively long.

In XP, unimplemented user stories can be replaced by new user stories, provided that the man-hours to implement both user stories are equal. In the priority of user stories, XP is more strict, it requires the actual project tasks to strictly adhere to the priorities of user stories. In addition, XP has stricter requirements in the software implementation process, generally requiring relatively strict quality control measures such as Test Driven Development (TDD, full name Test Driven Development), Automated Testing (Automated Testing), pair programming, and refactoring. Therefore, although XP is more flexible in terms of user stories, it has very strict requirements in the software implementation process, so the technical and experience requirements of the development team are also higher.

other

Agile development also includes many other elements, and this article will not introduce it in depth due to space limitations.

How to choose a project management model

project-management

In practical work, we will encounter the needs of large and small projects, and how to choose a project management mode is an important issue. But unfortunately, there is currently no perfect solution that can adapt to all software projects. Although this article spends a lot of space on agile development, it does not mean that agile development is omnipotent. The traditional waterfall development model has many drawbacks, but it also has many applicable scenarios, such as government IT projects, or some highly specialized development projects. Moreover, before making the choice of project management mode, it is necessary to fully understand some hidden factors that are not so obvious on the surface, such as corporate culture, organizational structure, industry background, human resources, team experience and so on . Therefore, the author believes that agile development is not a panacea to solve all problems . We should think twice before making an actual choice. Even in some cases, it is necessary to make some adjustments to various management modes according to the actual situation to make it more suitable for the current project background.

The advantages of agile development are very obvious. It can better adapt to the rapidly changing business and market environment, help companies overcome some uncertainties , and deliver more valuable products to users. Moreover, agile development usually omits a lot of unnecessary documentation and cumbersome communication processes compared to traditional waterfall development, so more things are usually done in less time . However, agile development is less formal than traditional waterfall development, a bit like "guerrilla" vs "regular army" feeling. Traditional project management models, such as PMBOK, have very complete process management and document management, which are more suitable for long-term large-scale projects .

Therefore, the author believes that if your market environment and customer needs will change frequently, and this uncertainty will greatly affect the financial health of the company, then you should not hesitate to choose agile development . Conversely, if the market environment does not change that fast, and customer needs are relatively fixed, and there are high compliance and formal documentation requirements, such as government IT projects, then you can choose to use traditional project management models, such as Waterfall development mode .

Summarize

This article is a popular science article about software development project management mode. We start with traditional project management, introduce some common methodologies, such as waterfall, PMBOK, etc., and analyze their shortcomings. Then, according to the shortcomings of traditional project management methodology, the popular agile development is introduced, and the characteristics, significance, core concepts and so on of agile development are introduced. Finally, based on the comparison between traditional methodology and agile development, this paper draws the project scenarios that traditional methodology and agile development are applicable to, respectively, and believes that agile development is suitable for a more volatile market environment, while traditional project management is suitable for projects with little change in demand.

In fact, the concept of agile development mainly emphasizes flexibility and feedback, which can bring us some inspiration. Readers can try to answer these questions that the author thinks: Why did the huge dinosaurs become extinct? Why do cats have nine lives? Why are Trisolarans able to survive in extreme environments? Why do once leading companies (such as Kodak) still fall? How can Facebook, which was only promoted on campuses, become a social giant? The author does not intend to explain them one by one, I believe readers can make some judgments based on their own understanding.

Maybe some programmers think that project management is just a project manager's job, and all I need to do is write good code. But the author always believes that programmers who can only write code are called code farmers, and not only programmers who can write code are called engineers . Therefore, our developers should still learn more about knowledge other than technology, such as the project management knowledge introduced today. Otherwise, artificial intelligence that can write code may take everyone's jobs in the future.

Community

If you are interested in the author's articles, you can add the author's WeChat tikazyq1 and indicate "Code Way", and the author will pull you into the "Code Way" exchange group.

{{o.name}}
{{m.name}}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324184061&siteId=291194637