0
Chưa có sách nào trong giỏ hàng

Mục đích của dự án

06.01.2021

Phần lớn các kĩ sư phần mềm đều muốn dự án của mình thành công nhưng lại không biết cách tiến hành. Một phương pháp tôi dạy cho họ là xác định mục đích ưu tiên ở ngay lúc bắt đầu dự án và liên tục kiểm điểm sự tiến triển theo mục đích này trong thời gian điều hành dự án.

Về căn bản, dự án phần mềm có ba mục đích chính: Chuyển giao sản phẩm đúng thời gian, hoàn thành mọi chức năng được yêu cầu, và có ít lỗi  (chất lượng cao). Theo kinh nghiệm của tôi, khó mà đáp ứng được cả ba mục đích này nên tôi khuyên mọi người hãy lựa chọn một mục đích có ưu tiên cao nhất để làm theo đó. Điều này sẽ giúp cho họ tập trung thay vì dành quá nhiều nỗ lực vào cái gì đó mà họ không thể kiểm soát nổi. Hoàn tất điều khách hàng coi là quan trọng nhất chính là sự thành công cho dự án và để làm điều đó, người quản lí phải hỏi khách hàng xem ưu tiên cao nhất là gì.

Nhiều người không đồng ý với tôi rằng họ cần phải có một ưu tiên cao nhất nên tôi giải thích điều này trong thí dụ đơn giản sau: Giả định rằng còn ba tuần trước ngày chuyển giao theo lịch biểu nhưng dự án vẫn còn nhiều lỗi và chức năng cuối cùng chưa hoàn thành. Bạn sẽ làm gì? Nếu bạn quyết định chuyển giao phần mềm theo đúng ngày tháng quy định, bạn có cho rằng khách hàng sẽ hài lòng với sản phẩm chưa hoàn thành và số lỗi lầm còn nhiều không? Nếu bạn chọn chuyển giao sản phẩm khi các chức năng được hoàn thành, bạn có cho rằng khách hàng sẽ hài lòng khi sản phẩm bị chậm trễ mặc dầu nó đáp ứng tất cả các chức năng? Nếu bạn quyết định kéo dài thêm vài tuần nữa để sửa mọi lỗi lầm và chức năng vậy bạn có cho rằng khách hàng sẽ hài lòng nếu việc chuyển giao bị chậm trễ cho dù sản phẩm có chất lượng cao?

Mục đích chính về sự thành công của dự án phần mềm là do sự cảm nhận của khách hàng  cho nên bạn cần phải hỏi khách hàng. Việc nói chuyện với khách hàng rất quan trọng trong các dự án phần mềm và bạn phải hỏi họ: Có cần sửa tất cả các lỗi lầm không, hay chỉ sửa những lỗi chủ chốt nhất trước ngày chuyển giao? Mọi chức năng được đề nghị có cần được hoàn thành không hay chỉ những chức năng quan trọng nhất mới cần được thực hiện trước ngày chuyển giao? Và ngày chuyển giao có phụ thuộc vào những chức năng đặc biệt đó không? Khi các ưu tiên còn chưa rõ ràng, bạn phải đặt câu hỏi – bởi vì khi ưu tiên của dự án thay đổi thì mọi sự đều thay đổi. Chìa khoá thành công của dự án là nhận ra mục đích nào có ưu tiên cao nhất theo quan điểm của khách hàng.

Phần lớn các giáo sư đại học chỉ dạy sinh viên rằng nhân tố thành công là chất lượng cao và tập trung vào việc dạy nhiều về kiểm thử. Mặc dầu chất lượng quan trọng nhưng tôi nghĩ thành công dự án chỉ dựa vào chất lượng mà thôi là không đúng. Ngày nay chúng ta đang sống trong một thị trường cạnh tranh cao độ, đôi khi có sản phẩn trên thị trường trước nhất lại là ưu thế chiến lược (Chẳng hạn Microsoft chọn chiến lược này bởi vì khi họ đưa sản phẩm mới vào thị trường, họ muốn chiếm toàn bộ thị trường để không ai có thể tạo ra sản phẩm tương tự hay cạnh tranh với họ, mặc dầu sản phẩm vẫn còn nhiều lỗi lầm nhưng họ sửa sau).

Trong nền kinh tế thị trường, khách hàng sẽ mua sản phẩm đầu tiên có trên thị trường bởi vì họ muốn sử dụng công nghệ mới nhất. Chừng nào mà sản phẩm làm được cái gì đó tốt, họ sẽ hài lòng. Chừng nào mà khiếm khuyết chưa đến nỗi nào thì họ vẫn có thể chấp nhận được.

Kết luận của tôi về sự thành công của dự án phần mềm là khả năng biết hỏi khách hàng mục đích nào là ưu tiên cao nhất rồi làm kế hoạch để đạt tới nó.

—-English version—-

 

Project Goals

Most software engineers want their project to be successful but do not know how. One technique that I teach them is to define a priority goal at the start of the project and continually review the progress toward the goal during the project.

Typically, software project have three common goals: Deliver the product on time, complete all required functions, and have low defects (High quality). In my experience, it is difficult to meet all three goals so I advise people to identify one as the top priority to work on. This will help them to stay focus rather than spend too much effort on something they can not control. To deliver what the customer considers the most important is what success means to software project and in order to do that, project manager must ask the customer which is the highest priority.

Many people do not agree with me that they have one top priority so let me explain this in a simple case study: Assume that its is three weeks before the scheduled delivery date but the defect count is high and the last function is not quite finished yet. What would you do? If you decide to deliver the software at the scheduled date then do you think the customer is happy with the unfinished product and high defect count? If you choose to deliver the product as soon as all functions are completed then do you think the customer is happy when the product is late although it meets all functionality? If you decide to add few more weeks to fix all the defects and functionality then do you think the customer would be happy if the delivery is late even the product has high quality?

The main idea here is the success of software project is a perception dictated by the customer so you must ask the customer. Communication is very important in software business and it is important to ask them: Do all defects need to be fixed, or are there critical defects to be fixed before the delivery date? Do all the proposed functions need to be completed, or are there most important ones that need to be implemented before the delivery date? And is the delivery date depending on those particular functions? When prioritization is unclear, it’s time to ask questions-because when project priorities change, everything changes. The key to project success is to recognize which goal is the top priority from the customer point of view.

Most university professors only teach students that the successful factor is low defects (high quality) and focus on teaching more testing. Although quality is important but I think it is not adequate to define project success based on quality alone. Today we are living in a highly competitive market, sometime to have the product on the market first is a strategic advantage (For example Microsoft chooses this strategy because when they put a new product on the market, they want to capture the entire market so no one can create a similar product or compete with them, although the product still have defects but they fix defects later).

In the market economy, customers will buy the first products available on the market because they like the new technology and want to get their hands on it.  As long as the product does something well, they will be happy. As long as the defects do not get in the way they can live with a few smaller defects.

My conclusion on software success is the ability to ask the customer which goal is the top priority then makes plan to achieve it.