13 Mar, 2021
Quản lí dự án phần mềm
Viễn kiến dự án là chiều hướng của dự án. Nó là “la bàn” hướng dẫn tổ đi tới theo cùng một hướng. Viễn kiến phải được trao đổi cho các thành viên tổ vào lúc bắt đầu của dự án để cho tổ cái nhìn về dự án và cách họ phải làm việc cùng nhau để đạt tới viễn kiến đó.
Một số người quản lí dự án đưa ra viễn kiến cho tổ rồi chuyển sang các hoạt động khác. Trong trường hợp đó, tổ có thể mất cái nhìn về viễn kiến bởi vì họ bao giờ cũng bận rộn với công việc riêng của họ. Người quản lí dự án giỏi sẽ không để bất kì cái gì làm sao lãng họ khỏi viễn kiến bởi vì nếu họ trở nên bị sao lãng, dự án có thể không thành công như được mong đợi. Thành viên tổ làm việc tốt nhất khi họ có mọi thông tin họ cần để làm nhiệm vụ của họ nhưng họ cũng cần thông tin về cách các nhiệm vụ của họ khớp vào trong viễn kiến của dự án. Có khả năng đặt các nhiệm vụ của họ vào trong hoàn cảnh lớn hơn cung cấp động cơ và giúp cho các thành viên ra quyết định tốt hơn.
Một số người quản lí không biết cách lập kế hoạch dự án hay tạo ra viễn kiến. Họ thậm chí không biết cách dự án nên được thực hiện thế nào cho nên họ không muốn chia sẻ kế hoạch của họ với bất kì ai. Họ cảm thấy bất an về vị trí của họ cho nên họ thường che giấu đằng sau“bận việc” và né tránh nói chuyện với các thành viên tổ. Khi thành viên tổ hỏi, họ bao giờ cũng tìm cớ rằng họ bận thế và không có thời gian. Cái cớ thường được dùng nhất là “phải đi họp với những người quản lí khác” cho nên việc dự họp trở thành công việc hàng ngày của họ. Những người quản lí này không tin cậy vào tổ của họ nhưng coi họ là “thuộc cấp” thay vì là người có khả năng làm công việc. Khi mọi người thiếu viễn kiến hay thông tin, họ lấp vào lỗ hổng bằng niềm tin riêng của họ và thỉnh thoảng cả tin đồn. Tin đồn cho thông tin sai và thường tốn nhiều thời gian để sửa nó.
Người quản lí dự án cần biết về trạng thái hay tiến bộ của dự án để cho họ có thể báo cáo với người quản lí cao hơn. Không có viễn kiến hay kế hoạch dự án để giám sát, nhiều người dựa vào các cuộc họp với cá nhân nơi từng thành viên báo cáo cho họ thay vì họp tổ. Trong trường hợp này, các thành viên chỉ cung cấp một phần thông tin mà người quản lí cần biết. Nhiều vấn đề quan trọng vẫn còn bị ẩn kín trong cuộc họp trạng thái này. Chẳng hạn, thành viên tổ có thể ngần ngại thừa nhận rằng họ có vấn đề, hay đối diện với khó khăn, hay nói về thông tin mà người quản lí dự án cần biết. Không có bức tranh rõ ràng về dự án, những người quản lí này không thể ra quyết định tốt được. Thỉnh thoảng, họ không muốn báo cáo tình trạng xấu cho nên họ để mọi sự xảy ra và khi nó thành tồi tệ nhất, họ đổ lỗi cho người của họ.
Người quản lí dự án giỏi bao giờ cũng giám sát các hoạt động để đảm bảo rằng mọi hành động được thực hiện để đạt tới viễn kiến. Người đó thu thập và đánh giá dữ liệu theo lịch biểu và ngân sách để nhận diện rủi ro và đáp ứng với chúng nhanh chóng. Người đó có cuộc họp hàng tuần với tổ để chia sẻ tiến bộ và giữ cho mọi người tập trung vào nhiệm vụ được phân công của họ. Người đó biết rằng dự án phần mềm thường có vấn đề; thành viên tổ bao giờ cũng đối diện với các chướng ngại như giải quyết với thay đổi; không có đủ thời gian cho các nhiệm vụ v.v. Do đó, người đó phải huỷ bỏ mọi sao lãng để giữ cho tổ tập trung vào điều họ làm.
Người quản lí dự án giỏi không làm việc một mình mà bao giờ cũng đưa tổ vào các hoạt động dự án. Lúc bắt đầu dự án, người đó đưa tổ vào thảo luận về các mục tiêu của dự án. Người đó đòi hỏi các thành viên tổ cho ý kiến của họ để có được gợi ý tốt nhất. Bằng việc đưa tổ tham gia vào sớm; người đó tạo ra ý thức về làm việc tổ, điều cho phép các thành viên cảm thấy rằng gợi ý của họ là quan trọng. Khi các thành viên tổ cảm thấy họ là quan trọng, họ làm việc chăm chỉ để đạt tới viễn kiến điều đưa họ vượt qua các chướng ngại và phấn đấu vì thành công.
Một số người quản lí dự án coi bản thân họ là “ông chủ” và quản lí dự án là về việc ra mệnh lệnh. Đây là sai lầm. Khi họ ra lệnh cho thành viên tổ làm cái gì đó, họ không cho người đó cơ hội để nghĩ về cái gì cần làm và làm nó thế nào. Trong trường hợp này, các thành viên tổ bị giới hạn làm đích xác như người quản lí bảo họ làm. Họ sẽ phát triển thói quen chỉ chờ đợi chỉ dẫn và trở thành phản ứng thay vì tích cực. Họ không thể phân tích các nhiệm vụ hay học cái gì mới và đó là lí do tại sao nhiều dự án bị trễ. Chúng bị trễ vì các thành viên tổ chờ đợi người quản lí bảo họ điều phải làm và không có chỉ đạo, không cái gì sẽ xảy ra. Người quản lí giỏi không cho mệnh lệnh mà cho chỉ dẫn. Cho chỉ dẫn không phải là bảo ai đó điều phải làm, mà bảo họ đích xác điều người đó muốn được làm. Trong trường hợp này, thành viên tổ phải nghĩ về cách làm nó. Thay vì một cách máy móc chỉ làm nhiệm vụ, thành viên tổ sẽ phải nghĩ về qui trình, thủ tục và mọi chi tiết về cách làm nó. Trong trường hợp này, họ phải học nghĩ và tích cực hơn trong cải tiến kĩ năng của họ. Các thành viên tổ giỏi bao giờ cũng nghĩ khi họ được trao chỉ dẫn. Họ bao giờ cũng nhận diện các cách khác nhau để làm nhiệm vụ và cân nhắc cách nào là tốt hơn. Khi các thành viên tổ đi tới giải pháp của họ, họ cảm thấy thoải mái. Điều đó khuyến khích họ học nhiều hơn và điều đó nâng cao lòng tin của họ vào điều họ làm. Nếu cái gì đó xảy ra cho công việc của họ, họ sẽ tự tin bảo vệ bản thân họ. Cho chỉ dẫn là giải pháp tốt nhất có tác dụng tốt cho hầu hết những người phát triển phần mềm.
—-English version—-
Software project management
A project vision is the direction of the project. It is the “Compass” that guides project team to move forward to the same direction. The vision must be communicated to team members at the beginning of the project to give the team a view about the project and how they must work together to achieve that vision.
Some project managers issue the vision to the team then move on to other activities. In that case, the team may lose sight of the vision because they are always busy with their own works. Good project managers will not letting anything distract them from the vision because if they become distracted, the project may not be successful as expected. Team members work best when they have all the information they need to do their tasks but they also need information about how their tasks fit into the vision of the project. Being able to put their tasks into a bigger context provides motivation and helps members make better decisions.
Some managers do not know how to plan projects or create vision. They do not even know how the project should be done so they do not want to share their plans with anyone. They feel insecure about their positions so they often hide behind “Busy works” and avoid talking with team members. When team member asks, they always find excuse that they are so busy and do not have time. The most used excuse is “Having to go to meetings with other managers” so attending meetings become their daily work. These managers do not trust their teams but consider them as “subordinates” rather than people who are capable of doing the work. When people lack a vision or information, they fill in the gaps with their own beliefs and sometime rumors. Rumor gives misinformation and often consumes a lot of time to correct it.
Project managers need to know about status or progress of the project so they can report to higher managers. Without a vision or project plan to monitor against, many rely on individual meetings where each member reports to them instead of team meetings. In this case, members only provide a fraction of the information a manager needs to know. Many important issues remain hidden in this status meeting. For example, team member may be reluctant to admit that they have problems, or facing difficulties, or talk about the information that a project manager needs to know. Without a clear picture of the project, these managers cannot make good decision. Sometime, they do not want to report bad status so they let things happen and when it is getting worst, they blame their own people.
A good project manager always monitors activities to ensure that every action is done to achieve the vision. He collects and evaluates data on schedule and budget to identify risks and respond to them quickly. He has weekly meeting with the team to share progress and keep everyone focus on their assigned tasks. He knows that software projects often have problems; team members always face obstacles such as dealing with changes; not having enough time for tasks etc. Therefore, he must eliminate any distractions to keep the team focus on what they do.
Good project manager does not work alone but always involve the team into project activities. At the beginning of the project, he brings the team together to discuss the objectives of the project. He asks team members for their opinions to get the best suggestions. By engage the team early; he creates a sense of teamwork that allows members to feel that their suggestions are important. When team members feel they are important, they work hard to achieve the vision which lead them to overcome obstacles and strives for success.
Some project managers consider themselves as “Bosses” and project management is about giving orders. This is a mistake. When they order team member to do something, they are not giving the person the opportunity to think about what to do or how to do it. In this case, team member is limited to do exactly as manager tell them to. They will develop habit of only wait for instruction and become reactive instead of active. They cannot analyze tasks or learn anything new and that is why many projects are late. They are late because team members are waiting for managers tell them what to do and without the direction, nothing will happen. A good manager does not give orders but instructions. Giving instructions is not telling somebody what to do, but telling them exactly what he wants to be done. In this case, team member must think on how to do it. Rather than mechanically just doing a task, team member will have to think about the process, the procedure and all the details on how to do it. In this case, they must learn to think and be more active in improving their skills. Good team members always think when they are given an instruction. They always identify different ways of doing the task and consider which way is better. When team members come up with their solution, they feel good. It encourages them to learn more and it improves their confidence in what they do. If something happen to their work, they will be confident to defend it themselves. Giving instructions is the best solution that works well for most software developers.