Tôi nhận được một email hỏi về điều tôi đã viết về người quản lí dự án phần mềm. Người này đã viết “Người quản lí dự án phải có kĩ thuật như thế nào? Tôi mới tốt nghiệp trong khoa học máy tính và đã hoàn thành lớp quản lí dự án. Tôi có đủ phẩm chất để làm việc như người quản lí dự án phần mềm không? Nếu không thì tại sao?”

Câu trả lời của tôi là: Tôi không “định phẩm” mọi người theo việc làm của họ, đó là việc của bất kì ai muốn thuê bạn. Theo ý kiến tôi, bằng cấp về khoa học máy tính chỉ có nghĩa là bạn có một số nền tảng kĩ thuật nhưng chưa có kinh nghiệm làm việc nào, có thể ý tưởng tốt là bắt đầu việc làm đầu tiên của bạn như người quản lí dự án phần mềm. Vấn đề KHÔNG phải là về kiếm được việc của người quản lí mà là bạn CÓ THỂ LÀM TỐT THẾ NÀO việc này.

Người quản lí dự án phần mềm phải biết cách lập kế hoạch dự án, ước lượng nỗ lực và thời gian cần để hoàn thành dự án. Kĩ năng này đòi hỏi nhiều thực hành và nhiều năm kinh nghiệm. Người quản lí dự án phải hiểu cách khêu gợi yêu cầu và kĩ thuật phân tích, kĩ năng này cũng yêu cầu nhiều thực hành và kinh nghiệm. Cho dù tổ của bạn đang thu thập yêu cầu cùng khách hàng, bạn vẫn phải biết rõ họ làm tốt việc đó thế nào và họ ưu tiên hoá chúng thấu đáo đến đâu. Là người quản lí dự án, bạn cần hiểu giải pháp kĩ thuật mà tổ của bạn sẽ dùng để giải quyết vấn đề. Nếu bạn không biết kĩ thuật rất giỏi, làm sao bạn biết rằng nó có thể giải quyết được vấn đề? Làm sao bạn có thể biết khi nào vấn đề được giải quyết? Là người quản lí dự án, bạn phải quen thuộc với kiến trúc hệ thống mà tổ của bạn đang làm việc với, nếu bạn không biết kiết trúc rõ, bạn không thể hiểu được các rủi ro kĩ thuật. Không biết về rủi ro, bạn không thể ngăn ngừa chúng xảy ra. Quản lí dự án là quản lí rủi ro, nếu bạn không thể làm giảm nhẹ rủi ro, bạn không thể quản lí được dự án tốt. Là người quản lí dự án, bạn phải có tri thức về thiết kế, nhưng không hiểu về kiến trúc, bạn thậm chí không biết câu hỏi nào để hỏi về thiết kế. Không kiểm điểm thấu đáo thiết kế, bạn không biết liệu tổ của bạn đã làm việc tốt trong giải quyết vấn đề hay không. Cho nên mọi thứ có thể chấm dứt trong viết mã, vì bạn có bằng khoa học máy tính, bạn biết cái gì đó về viết mã nhưng nếu kiến trúc và thiết kế không thật tốt, bạn có cho rằng viết mã có thể giải quyết được vấn đề không?

Về căn bản, người quản lí dự án phần mềm tốt phải hiểu cách tổ thu thập và phân loại các yêu cầu; cách hỏi liệu thiết kế đã được thực hiện chưa; cách đánh giá các rủi ro kĩ thuật cũng như rủi ro lịch biểu; cách thiết lập hệ thống quản lí cấu hình để quản lí thay đổi; cách đo hiệu quả chất lượng qui trình, chất lượng sản phẩm; cách giám sát và theo dõi tiến độ. Người quản lí dự án phải biết cách tiến hành kiểm điểm để đảm bảo chất lượng của dự án. Có nhiều vấn đề kĩ thuật trong mọi dự án phần mềm yêu cầu kĩ năng kĩ thuật mạnh và kinh nghiệm để quản lí chúng. Bên cạnh đó, bạn phải chứng tỏ kĩ năng của mình với tổ dự án. Họ tìm ở bạn việc cho họ chỉ đạo, lãnh đạo họ và giúp họ hoàn thành công việc của họ tương ứng. Là người lãnh đạo của họ, bạn phải có khả năng tổ chức mọi hoạt động của dự án để cho chúng có thể xảy ra liên hoàn không gián đoạn.

Là sinh viên mới tốt nghiệp, sao bạn cần vội làm gì? Bạn có nhiều thời gian để học và bạn cần để thời gian giúp bạn xây dựng kĩ năng và tri thức của mình. Tôi cho rằng bạn nên trở thành người quản lí dự án “tốt nhất” trong năm năm kể từ bây giờ hơn là trở thành người quản lí dự án “không thoả đáng” hôm nay.

—-English version—-

Qualify for project manager

I received an email inquiring about what I wrote on the skill of Software Project Manager. The person wrote “How technical does a Project Manager have to be? I just graduated in Computer Science and completed a class on Project Management. Am I qualified to work as software project manager? If not why?

My answer: I do not “qualify” people for their job, that is the job of whoever want to hire you. In my opinion, a degree in Computer Science only means that you have some technical backgrounds but without any work experience, it may not be a good idea to start your first job as software project manager. The issue is NOT about getting the manager job but HOW GOOD you CAN DO the job.

A software project manager must know how to plan the project, estimate the efforts and the time needed to complete the project. This skill requires a lot of practices and many years of experiences. A project manager must understand requirements elicitation and analysis techniques, this skill also requires a lot of practices and experiences. Even if your team is gathering requirements with customers, you must know how well they do that and how thorough they are in prioritize them. As the project manager, you needs to understand the technical solution that your team will employ to solve problems. If you don’t know the technical very well, how do you know that it can solve the problem? How can you know when the problem is solved? As the project manager, you must be familiar with the system architecture that your team is working on, if you don’t know the architecture well, you can’t understand the technical risks. Without knowing the risks, you can not prevent them from happening. Project management is risk management, if you can not mitigate the risk, you can not manage the project well. As the project manager, you must have knowledge of the design, but without understanding the architecture, you don’t even know what questions to ask about the design. Without thoroughly review the design, you do not know whether your team has done a good job in solving the problem or not. So everything may end up in coding, since you have a Computer Science degree, you know something about coding but if the architect and design are not very good, do you think coding can solve the problem?

Basically, a good software project manager must understand how the team gather and rank requirements; how to ask if the design is done; how to evaluate technical risks as well as schedule risks; how to set up a configuration management system to manage changes; how to effectively measure process quality, product quality; how to monitor and tracking progress. The project manager must know how to conduct reviews to ensure the quality of the project. There are many technical issues in every software project which require a strong technical skills and experiences to manage them. In addition, you must demonstrate your skills to the project team. They are looking for you to give them direction, to lead them and help them to accomplish their works accordingly. As their leader, you should be able to organize all activities of the project so that they can happen seamlessly.

As a recently graduates, why do you need to hurry? You have a lot of time to learn and you need to let time helps you to build your skills and knowledge. I rather see that you become the “Best” software project manager five years from now than become a “Pathetic” project manager today.