Quản lí dự án phần mềm/4
Tuần trước, tôi có cuộc họp với vài sinh viên thuộc chương trình thạc sĩ về quản trị kinh doanh (MBA). Họ hỏi tôi tại sao nhiều dự án phần mềm thất bại và liệu người quản lí doanh nghiệp tốt nghiệp từ chương trình MBA có thể quản lí dự án phần mềm được không. Trước khi trả lời họ, tôi hỏi ý kiến của họ. Họ tin rằng vì họ được đào tạo về quản lí, họ có thể quản lí mọi thứ và đó là điều họ được dạy trong trường kinh doanh. Tôi KHÔNG đồng ý với quản điểm đó nên sau đây là thảo luận của tôi về quản lí dự án phần mềm:
Có nhiều lí do cho dự án phần mềm thất bại nhưng lí do hiển nhiên nhất là người quản lí dự án không có kinh nghiệm hay kĩ năng quản lí dự án. Nhiều người quản lí dự án hứa với khách hàng bất kì cái gì chỉ để làm hài lòng họ mà không thực sự biết sẽ mất bao nhiêu thời gian và cần bao nhiêu nỗ lực. Họ chấp nhận “lịch biểu phi thực tế” từ khách hàng rồi buộc tổ dự án phải tuân theo. Tất nhiên, đây là công thức cho thất bại bởi vì việc cần sáu tháng nhưng khách hàng chỉ cho bạn ba tháng thì bạn không thể hoàn thành được nó bằng làm việc cần cù hơn. Nhiều người quản lí không lập kế hoạch mà nhảy ngay vào viết mã để chứng minh cho người quản lí cấp cao rằng họ “rất tích cực”. Không lập kế hoạch cẩn thận, họ sẽ bỏ lỡ nhiều điều quan trọng và họ phải “làm lại từ đầu” cho chúng. Việc thiếu lập kế hoạch này làm tốn nhiều tiền cho công ti khi dự án phải chi tiêu nhiều hơn nó đáng phải chi tiêu.
Câu hỏi của tôi là: Chương trình MBA có dạy ước lượng phần mềm và lập kế hoạch phần mềm không?
Bởi vì nhiều người quản lí dự án không biết cách ước lượng lịch biểu, họ “lập lịch ngược” từ hạn chót đã cho và hi vọng mọi sự sẽ tốt. Chẳng hạn dự án bắt đầu từ tháng giêng và khách hàng cho họ sáu tháng thì bản kế hoạch sẽ trông như thế này: Tháng sáu: Chuyển giao phần mềm, Tháng năm: Kiểm thử phần mềm; Tháng ba và bốn: Viết mã; Tháng hai: Thiết kế và tháng giêng: Xây dựng tổ. Họ thêm ngày vào bản kế hoạch mà không biết gì về cách ước lượng thời gian cần cho từng pha. Thỉnh thoảng họ dùng kĩ thuật “lạc quan” từ các sách giáo khoa kinh doanh hàn lâm như ước chi phí bằng việc dùng công thức: Chi phí = Kích cỡ x độ phức tạp/năng suất. Đây là lí thuyết đúng nhưng KHÔNG THỂ cáp dụng được vào “dự án thực” bởi vì nó có ba nhân tố không biết: Kích cỡ, độ phức tạp và năng suất. Trong lớp học, các giáo sư cho sinh viên những nhân tố đó để tính chi phí nhưng trong thực tế, đặc biệt lúc bắt đầu dự án, khó mà ước lượng kích cỡ hay độ phức tạp của mã. Trong bất kì biến cố nào, mọi ước lượng chi phí đều có may rủi tiềm năng, không được kiểm điểm và điều chỉnh, công ti có thể đi tới ước lượng thấp cho phí và mất tiền. Điều này xảy ra nhiều trong công nghiệp ngày nay.
Câu hỏi của tôi là: Chương trình MBA có dạy lập lịch phần mềm và điều chỉnh ước lượng chi phí không?
Nhiều người quản lí dự án KHÔNG biết cách thu được yêu cầu từ khách hàng. Họ tin điều khách hàng nói cho họ là “đủ tốt”. Không trắc nghiệp hay tuân theo phương pháp phân tích yêu cầu để nhận diện điều khách hàng thực sự cần, họ sẽ làm việc với các yêu cầu được cho. Tất nhiên, khách hàng thay đổi ý của họ và thường thêm nhiều chức năng vào yêu cầu của họ. Những điều này gây ra nhiều thay đổi trong dự án và đến lượt nó, gây ra nhiều việc làm lại, nhiều thời gian, và cuối cùng làm chậm trễ dự án. Dự án phần mềm KHÔNG chỉ là lập trình mà đi tới giải pháp cho vấn đề doanh nghiệp. Để hiểu các yêu cầu phần mềm, người quản lí phải hiểu yêu cầu doanh nghiệp, các yêu cầu hệ thống, yêu cầu phần cứng bởi vì các yêu cầu phần mềm vận hành trên ba mức này.
Câu hỏi của tôi là: Chương trình MBA có dạy việc phát triển yêu cầu, vấn đề người dùng, vấn đề phần cứng, trắc nghiệm và kiểm nghiệm yêu cầu không? Nó có các kĩ thuật mô hình hoá bằng việc dùng công cụ phần mềm không?
Nhiều người quản lí dự án không được đào tạo về ước lượng tài nguyên như số người được cần tới, kĩ năng được cần tới của họ, cho nên họ lất bất kì ai sẵn có vào làm việc cho dự án. Khi dự án có người sai với kĩ năng hạn chế, năng suất sẽ bị ảnh hưởng. Nhiều người quản lí không biết cách thuê và giữ người then chốt, họ không biết về tất cả những kĩ năng cần để phát triển phần mềm nhưng nghĩ về những người phần mềm là những người lập trình. Không có tri thức kĩ thuật chi tiết về kiến trúc, thiết kế, phần cứng và giao diện hệ thống, họ có thể phân công người sai cho các nhiệm vụ mà những người này không đủ phẩm chất và kết quả có thể là thảm hoạ. Không có hồ sơ về con người với tri thức chuyên gia nào đó được cần để thực hiện công việc dự án sẽ thất bại.
Sai lầm thông thường khác là nhiều người quản lí không cho đủ thời gian cần thiết cho các thành viên tổ học về dự án trước khi họ bắt đầu. Học về các yêu cầu của dự án đòi hỏi thời gian và nên được xem xét trong kế hoạch dự án. Nhiều công ti có nhiều dự án yêu cầu kĩ năng tương tự cho nên họ dịch chuyển người then chốt của mình từ dự án này sang dự án khác dựa trên ưu tiên giữa các dự án. Kĩ thuật quản lí “luân chuyển người” này là phí hoài năng suất quí giá bởi vì các thành viên tổ mất thời gian để làm quen với dự án họ được phân công. Thực hành này cũng làm nảy sinh một dự án phải dừng làm việc tạm thời cho tới khi thành viên tổ quay lại từ dự án khác. Điều này đặc biệt mấu chốt khi một kĩ năng then chốt cần được tham gia vào và điều đó làm chậm lịch biểu dự án và đóng góp thêm vào việc làm mòn mỏi nhân viên vì mọi người phải làm quá nhiều thứ trong một thời kì kéo dài.
Nhiều người quản lí bận rộn thế và họ không theo dõi điều người của họ làm từng ngày. Họ không biết về hoạt động của nhân viên để cho họ có thể thúc bẩy các kĩ năng nhân viên cho có năng suất. Họ phân công người làm việc trên các nhiệm vụ tương ứng theo lịch biểu; chừng nào họ còn đáp ứng được lịch biểu thì không có vấn đề gì. Tuy nhiên, có các thành viên có thể hoàn tất nhiệm vụ 5 ngày trong 2 ngày và người khác có thể không hoàn thành được nhiệm vụ 3 ngày trong ít nhất 10 ngày do kĩ năng của họ và việc phân công. Không kiểm điểm các hoạt động trên cơ sở hàng ngày hay hàng tuần, người quản lí không biết ai cần giúp đỡ và ai không cần giúp đỡ cho tới khi vấn đề nảy sinh. Hiểu biết về phân phối công việc, về phân công nhiệm vụ và tri thức về kĩ năng là mấu chốt trong mọi dự án phần mềm.
Câu hỏi của tôi là: Chương trình MBA có dạy qui trình phát triển phần mềm, đào tạo kĩ năng, nhận diện kĩ năng và phân công công việc không?
Điều gì sẽ xảy ra khi cái gì đó xấu xuất hiện trong dự án phần mềm? Không có đào tạo đúng, nhiều người quản lí trở nên giận dữ, thay vì lãnh đạo và hỗ trợ tổ dự án, họ làm nản lòng nhân viên bởi yêu cầu rằng nhân viên phải làm những điều nào đó hay buộc tội nhân viên không làm việc chăm chỉ hơn. Điều này sẽ thêm sức ép cho môi trường làm việc linh động và làm giảm năng suất hay thành viên tổ, đến lượt mình sẽ làm chậm trễ dự án thêm nữa. Khi họ thấy rằng gần tới hạn chuyển giao nhưng tổ của họ vẫn còn đang viết mã, họ ra lệnh cho nhân viên bỏ qua vài thứ như kiểm điểm hay kiểm thử để tiết kiệm thời gian. Thiếu kiểm thử, phần mềm sẽ có nhiều lỗi rồi công ti phải sửa các lỗi này. Điều này sẽ yêu cầu nhiều thời gian hơn, nhiều nỗ lực hơn, nhiều tiền hơn và nhiều chậm trễ hơn. Tất nhiên, khách hàng KHÔNG hài lòng và có thể không muốn làm kinh doanh với công ti trong tương lai. Khi các vấn đề nảy xảy ra, nhiều người quản lí buộc tổ làm việc nhiều giờ hơn trong một thời gian kéo dài để sửa lỗi của lịch biểu không thực tế cho nên nhiều thành viên tổ rời khỏi dự án trước khi dự án được hoàn thành.
Câu hỏi của tôi là: Chương trình MBA có dạy cách quản lí người kĩ thuật không? Cách phối hợp công việc tổ? Cách nuôi dưỡng tổ thay vì lạm dụng họ?
Chúng ta có thể làm gì để tránh những sai lầm này?
Câu trả lời hiển nhiên là: Cung cấp đào tạo tốt hơn cho người quản lí phần mềm nhưng riêng một mình đào tạo có đủ không? Liệu có thể cho ai đó KHÔNG có tri thức phần mềm làm quản lí dự án phần mềm không? Liệu có thể cho một người kinh doanh tốt nghiệp MBA quản lí dự án phần mềm không? Người quản lí được đào tạo về doanh nghiệp có thể quản lí được mọi thứ không?
Tôi tin người quản lí phần mềm tốt PHẢI có cả kinh nghiệm kĩ thuật và doanh nghiệp. Họ phải làm việc trong phát triển phần mềm trong nhiều năm để họ hiểu mọi hoạt động bên trong một dự án. Họ phải nhận được đào tạo về ước lượng thời gian, nỗ lực và lập lịch biểu và thực tế thực hiện những việc này trong các dự án thực để cải tiến kĩ năng của họ. Họ phải hiểu rằng lập kế hoạch không bao giờ đứng yên nhưng thường xuyên phải được cập nhật vì mọi sự luôn thay đổi. Người quản lí tốt bao giờ cũng học cách thương lượng với khách hàng và không bao giờ phạm sai lầm uỷ nhiệm “ngày tháng lịch biểu không thực”. Bởi vì những yêu cầu này, người quản lí phần mềm GIỎI là rất khó tìm ra và đó là lí do tại sao nhiều công ti phần mềm toàn cầu sẵn lòng trả lương cao cho họ.
Tác phẩm, tác giả, nguồn
- Tác phẩm: Quản lý dự án
- Nguồn: Blog của giáo sư John Vu, Carnegie Mellon University.
- Wiki hóa: https://kipkis.com