Một người tốt nghiệp viết cho tôi: “Em mới bắt đầu việc làm đầu tiên của em trong một công ti phần mềm nhỏ. Người chủ bảo chúng em: “Mọi thứ chúng tôi làm ở đây là viết mã và kiểm thử, chừng nào các anh làm chúng giỏi, các anh sẽ có việc làm ở đây.” Em muốn giải thích cho ông ấy tầm quan trọng của tổ chức công việc như dự án và có người quản lí dự án phần mềm nhưng em không muốn làm ông ấy bực mình. Xin thầy lời khuyên.”

Đáp: Bạn là người mới với việc làm này và chính vị trí của bạn không phải là để nói cho người chủ phải làm gì. Ông ấy có thể có lí do tập trung chỉ vào viết mã và kiểm thử như kinh doanh của ông ấy. Trước khi bạn có quan hệ tốt với ông ấy hay chứng minh giá trị của bạn cho công ti, sẽ là quá sớm mà đi diễn đạt ý kiến của bạn vào lúc này. Bạn cần thời gian để hiểu kinh doanh của công ti trước khi đưa ra bất kì gợi ý nào. Tuy nhiên nếu bạn được hỏi, bạn có thể đưa ra giải thích đơn giản kiểu thế này:

Dự án phần mềm làn nỗ lực để đạt tới một mục đích xác định trong một giới hạn thời gian. Dự án phần mềm cần người để mà việc (thiết kế, viết mã, kiểm thử v.v.) và công ti phải trả tiền cho họ vì công việc của họ. Điều đó có nghĩa là với mọi dự án, công ti phải đặt ra một số tiền để chi cho nỗ lực này. Nếu dự án đem tới nhiều tiền hơn số tiền chi ra, công ti làm ra tiền. Nếu không thế thì công ti mất tiền. Mọi dự án đều có mục đích mà dự án phải đạt tới. Nếu dự án đạt tới nó, dự án là thành công, nếu không thì dự án thất bại. Mọi dự án đều có thời gian nào đó để đạt tới mục đích của nó. Nếu dự án hoàn thành đúng thời gian, dự án là thành công, nếu không công ti phải chi nhiều tiền hơn cho mọi người hoàn thành dự án. Càng mất nhiều thời gian, công ti càng phải chi nhiều tiền và chi phí cao hơn cho dự án. Nếu chi phí dự án cao hơn số tiền công ti có thể kiếm được từ khách hàng, công ti mất tiền.

Để giảm rủi ro của việc mất tiền, công ti cần có ai đó quản lí dự án. Người quản lí dự án lập kế hoạch dự án bằng việc ước lượng bao nhiêu người được cần tới và họ cần bao lâu để hoàn thành dự án. Bằng việc có ước lượng, người quản lí dự án có thể yêu cầu công ti dành ra một số tiền để tiêu vào dự án tương ứng. Người quản lí dự án đảm bảo rằng tổ dự án sẽ đạt tới mục đích trong thời gian và tiền mà bạn được cho phép dùng để cho công ti có thể sinh lời được. Đó là lí do tại sao công việc phần mềm nên được tổ chức như dự án và có người quản lí dự án để đảm bảo thành công thay vì chỉ viết mã và kiểm thử. Không tổ chức công việc như dự án, người chủ công ti không nhìn thấy được tiến bộ và không thể giám sát công việc hiệu quả được.

Là ai đó quản lí nhiều dự án phần mềm và quản lí tổ chức phần mềm lớn, ý kiến của tôi là mọi dự án phần mềm đều phải có người quản lí dự án. Tôi không tin rằng các dự án có thể thành công mà không có ai đó chịu trách nhiệm và đảm nhiệm cho điều được chuyển giao. Tất nhiên, trong cách tiếp cận Agile không có vai trò của người quản lí dự án nhưng có các vai trò của người thầy Scrum, người chủ sản phẩm, người ra quyết định về cái gì cần được làm và đảm bảo tổ vận hành đầy đủ và có hiệu quả. Chính theo nghĩa thường là người quản lí có kinh nghiệm sẽ giảm rủi ro của dự án thất bại. Tại sao đặt kinh doanh của công ti vào rủi ro bằng việc không có vai trò của người quản lí dự án?

Ngày nay phần lớn các dự án phần mềm đang ngày càng lớn hơn và phức tạp hơn. Vì số các hoạt động tăng lên phức tạp hơn, nhu cầu về người quản lí dự án có đủ tư cách trên dự án cũng tăng lên. Người quản lí dự án có kinh nghiệm có thể làm công việc tốt hơn nhiều trong việc quản lí dự án lớn và phức tạp hơn là nhóm những người lập trình chỉ viết mã và kiểm thử. Bên cạnh đó, người quản lí dự án có kinh nghiệm sẽ quản lí hiệu quả hơn mức độ thay đổi tăng lên điều tới cùng các dự án lớn hơn và phức tạp hơn.

—-English version—-

Is software project manager important?

A graduate wrote to me: “I just start my first job in a small software company. The owner tells us: “Everything we do here is code and test, as long as you do them well, you will have a job here.” I want to explain to him the important of organize work as project and having software project manager but I do not want to offend him. Please advice.”

Answer: You are new on the job and it is not your position to tell the owner what to do. He may have reason to focus only on code and test as his business. Before you have a good relationship with him or demonstrate your value to the company, it is too early to express your opinion at this time. You need time to understand the business of the company before making any suggestion. However if you are asked, you may offer a simple explanation like this:

A software project is an effort to achieve a specific goal within a time limit. Software project needs people to do the work (Design, code, test etc.) and company must pay them for their work. It means that for every project, company must set aside an amount of money to spend on the effort. If the project brings in more money than the amount of money spends, the company makes money. If not the company loses money. Every project has a goal which the project must achieve. If the project achieves it, the project is a success, if not the project fail. Every project has a certain time to achieve its goal. If the project complete on time, the project is a success, if not the company has to spend more money for people to complete the project. The more time, the more money the company has to spend and the higher cost for the project. If the project cost is higher than the amount of money the company can get from customers, the company loses money.

To reduce the risk of losing money, company needs to have someone to manage the project. Project manager plans the project by estimating how many people is needed and how long they need to complete the project. By having estimates, project manager can request company to set aside some money to be spent on the project accordingly. The project manager makes sure that the project team will achieve the goal within the time and money allowed so the company can be profitable. That is why software work should be organized as project and has a project manager to ensure success instead of just code and test. Without organizing work as project, company owner does not have visibility of progress and cannot monitor work effectively.

As someone who manages many software projects and manages a large software organization, my opinion is all software projects must have a project manager. I do not believe that projects can be successful without someone responsible and accountable for what is delivered. Of course, in Agile approach there is no role for Project Manager but there are roles of Scrum Master, Product Owner who makes decision on what to be done and ensure the team is fully functional and is effective. It is common sense that a competent project manager will reduce the risk of a failed project. Why put a company business at risk by not having a project manager role?

Today most software projects are getting bigger and more complex. As the number of activities grows more sophisticated, so does the need for a qualified project manager on the project. An experienced project manager can do much better job in managing a large and complex project than a group of programmers just code and test. In addition, an experienced project manager will more effectively manage the increased level of change that comes with larger and more complex projects.