Ngày nay, phần lớn các dự án phần mềm đều lớn và phức tạp hơn, do đó chúng nhiều rủi ro hơn trước đây.

Người quản lí dự án phải để thời gian quản lí các rủi ro dự án bởi vì đó là yếu tố then chốt trong xác định thành công của dự án.  Để quản lí rủi ro, người quản lí phải nhận diện mọi rủi ro, lập kế hoạch phòng ngừa, giám sát rủi ro, và quản lí thay đổi.  Bằng việc hiểu quản lí rủi ro, người quản lí dự án có thể tránh và giảm bớt tác động của rủi ro, cung cấp ước lượng lịch biểu và ngân sách tốt hơn và đạt tới thoả mãn của khách hàng. 

Quản lí rủi ro cũng bao hàm trao đổi liên tục về rủi ro với tổ dự án và giám sát mọi rủi ro đã được nhận diện để duy trì vị thế ở trên bất kì cái gì có thể xảy ra trong dự án. Để nhận diện rủi ro, người quản lí có thể xem xét các vấn đề dự án phần mềm điển hình như rủi ro kĩ thuật, rủi ro nhân sự và rủi ro ước lượng.  Bên cạnh các rủi ro chung có thể có những rủi ro đặc biệt duy nhất cho dự án. Bất kì dữ liệu nào từ dự án tương tự cũng đều có thể có ích trong việc nhận diện các rủi ro duy nhất này. Dựa trên thông tin này, các kế hoạch có thể được thực hiện để giải quyết các rủi ro. Phần lớn các dự án phần mềm đều có những rủi ro sau đây: ước lượng kích cỡ, giới hạn ngân sách, thực hiện công nghệ mới, sự tham gia của khách hàng bị giới hạn, thị trường thay đổi, thay đổi cán bộ, thay đổi phạm vi, các vấn đề phụ thuộc phần cứng, các vấn đề phụ thuộc mạng, vấn đề kĩ năng của tổ dự án, và vấn đề cách làm việc tổ. Người quản lí dự án phải xác định các rủi ro có thể xuất hiện hay các rủi ro sẽ gây ra tác động lớn và giám sát chúng một cách cẩn thận và giải quyết sớm nhất có thể được.  Rủi ro được giảm nhẹ càng sớm, tác động của nó càng đỡ tốn kém.

Ước lượng rủi ro là rất thông thường trong dự án phẩn mềm bởi vì khó mà dự đoán chính xác việc phát triển sẽ mất bao lâu. Người quản lí dự án phải liên tục theo dõi tiến độ thực tế theo lịch biểu để xác định liệu dự án có tiến triển tương ứng tới mục tiêu không. Trong hầu hết các dự án phần mềm, thay đổi trong yêu cầu thường xuất hiện và can nhiễu vào tiến trình phát triển và chúng phải là một phần của quản lí rủi ro bởi vì chúng tác động lên lịch biểu và đưa dự án vào rủi ro không hoàn thành được đúng thời gian. Để giải quyết với những yêu cầu thay đổi, qui trình kiểm soát thay đổi phải được thiết lập để đảm bảo rằng các thay đổi được giám sát, ưu tiên hoá cho nên tổ có thể làm việc với chúng tương ứng. Thỉnh thoảng, khách hàng muốn những thay đổi này được thực hiện ngay lập tức nhưng không muốn thay đổi lịch biểu. Đây là chỗ kĩ năng thương lượng của người quản lí dự án sẽ trở nên quan trọng. Người quản lí dự án giỏi biết cách thương lượng với khách hàng về những thay đổi và vẫn đạt tới sự thoả mãn của khách hàng bởi vì cách người đó thảo luận và thương lượng về thay đổi sẽ xác định ra kết quả của dự án.

Người quản lí dự án giỏi phải giữ cân bằng lịch biểu làm việc của tổ với yêu cầu của khách hàng bằng việc xem xét cả hai điều này khi đánh giá thay đổi. Người quản lí dự án có thể đề cập tới yêu cầu thay đổi bằng việc điều chỉnh tài nguyên, thời gian, chi phí hay chức năng và thảo luận với tổ để đi tới giải pháp hợp lí nhất. Nhiều người quản lí dự án thiếu kinh nghiệm không biết cách thương lượng nhưng vội vàng đồng ý với khách hàng và ra lệnh cho tổ làm cái gì đó không hợp lí gây tác động lên năng suất, chịu nhiều khiếm khuyết hơn và phá huỷ cách làm việc tổ. Điều đó thường chấm dứt sự thoả mãn của khách hàng bởi vì yêu cầu thay đổi đã được đồng ý trong một thời gian ngắn nhưng khi sản phẩm bị muộn, đầy lỗi, thì khách hàng sẽ rất không hài lòng trong thời gian dài.

Mọi dự án phần mềm đều có yêu cầu thay đổi nhưng người quản lí dự án phần mềm biết cách giải quyết các vấn đề thay đổi bằng việc dùng kĩ năng quản lí rủi ro để ngăn ngừa chúng hay làm giảm tác động của chúng. Điều này bao gồm việc nhận diện rủi ro thay đổi, đánh giá chúng, xác định giải pháp, lấy hành động và thường xuyên giám sát dự án về tác động.  Tôi mạnh mẽ tin tưởng rằng quản lí rủi ro cùng với ước lượng tốt và kĩ năng thương lượng là những kĩ năng tối thiểu được tất cả những người quản lí dự án phần mềm cần tới.

—-English version—-

Risk Management

Today, most software projects are large and more complex therefore they are more riskier than before. Project managers must take time to manage project risks because it is a key factor in determining a project’s success.  To managing risks, managers must identify all risks, plan prevention, monitor risks, and managing changes.  By understanding risk management, project manager can avoid and reduce the impact of risks, provide better schedule and budget estimations and achieve customer satisfaction.

Risk management also involves continuous communication about risks to the project team and monitor all identified risks to stay on top of anything that may happen during the project. In order to identify risks, managers can consider typical software project issues such as technical risks, personnel risks and estimation risks.  In addition to common risks there can be specific risks unique to a project. Any data from similar projects can be helpful in identifying these unique risks. Based on this information, plans can be made to handle the risks. Most software projects have the following risks: Size estimation, Budget limitation, New technology implementation, Limited customer involvement, Market changes, Staff turnover, Scope changes, Hardware dependency issues, Network dependency issues, Project team’s skills issues, and Teamwork issues. Project manager must determine risks that are likely to occur or risks that will cause a great impact and monitor them carefully and handled as early as possible.  The earlier that risks are mitigated, the less costly the impact.

Estimation risks are very common in software projects because it is difficult to accurately predict how long development will take. A project manager must continuously track the actual progress against the schedule to determine if the project is progressing according to target. In most software projects, changes in requirements often occur and interfere with the development progress and they should be part of risk management because they impact the schedule and put the project at risk for not being completed on time. To deal with requirement changes, a change control process must be established to ensures that changes are monitored, prioritized so the team can work them accordingly. Sometime, customers want these changes to be implemented immediately but do not want to change the schedule. This is where the negotiation skills of the project manager will become important. A good project manager knows how to negotiate with customers about changes and still achieve customer satisfaction because how he discusses and negotiates on changes will determine the outcomes of the project.

A good project manager must balance the team’s working schedules with customer requests by considering both when evaluating changes. Project manager can address request for changes by adjusting resources, time, cost or functionality and discuss with the team to come up with the best reasonable solution. Many inexperienced project managers do not know how to negotiate but hurry to agree with customers and order the team to do something unreasonable which impact productivity, incur more defects and destroy teamwork. It usually ends up with the customer is happy because the request for change is agreed to for a short time but when the product is late, full of defects, then the customer would be very unhappy for a long time.

Every software project has request for changes but a good software project managers know how to handle change issues by using risk management skills to prevent them or lessen their impact. This includes identifying change risks, assessing them, determining solutions, taking action and constantly monitoring the project for impact.  I strongly believe that risk management along with good estimation and negotiation skills are the minimum skills needed by all software project managers.