Man-month là gì? Kinh nghiệm tính chi phí dự án phát triển phần mềm

If you've ever worked on a software development project under a time crunch, then you may have heard the phrase "mythical man month."

Man-month là gì?

Man-month là đại lượng dùng thường xuyên trong các dự án CNTT, dự án xây dựng nhà ở, công trình...

Man-month là khối lượng công việc mà người thợ (kỹ sư) phải hoàn thành trong 1 tháng. Tương tự có man-day là chi phí sức lao động tính theo ngày công.

Trong estimate document của kĩ sư, cần tính toán số nhân công để đưa ra được số tiền dự toán cần thiết. Nhân công nghĩa là số lượng công việc tính trên 1 người, được tính bằng đơn vị man-month hoặc man-day. Để tính toán nhân công, ta lấy man-month(man-day) x số nhân công. Có nghĩa là, thù lao của kĩ sư là số tiền được trả ứng với số giờ lao động, chứ không phải ứng với sản phẩm được hoàn thành. Bởi vậy những người có năng lực kĩ thuật cao sẽ có năng lực làm việc cao, và chỉ cần số nhân công ít để hoàn thành công việc. Trong estimate document có rất nhiều cách tính toán man-month, man-day.  Hơn nữa, giá của 1 man-month phụ thuộc và thay đổi theo kinh nghiệm cũng như khả năng kĩ thuật.

Dự toán (Estimate) là gì?

Có thể các bạn đã biết những bước cơ bản để phát triển một hệ thống phần mềm như : Design, code, testing… Nhưng đó chỉ là những bước được tiến hành khi công ty phát triển chính thức nhận được dự án từ khách hàng.

Các bạn có biết giai đoạn TRƯỚC KHI NHẬN ĐƯỢC DỰ ÁN TỪ KHÁCH HÀNG còn cần trải qua rất nhiều những giai đoạn khác không? Trong đó có một công đoạn rất quan trọng đó chính là Estimate.

Estimate là gì chính là câu hỏi rất phổ biến đối với những người đi làm, cả kỹ thuật lẫn kinh doanh. Với từ estimate này thì nó được ứng dụng nhiều trong giao tiếp, trong nhiều ngành nghề khác nhau. Về nghĩa của estimate thì cũng khá mở rộng, tùy vào mỗi trường hợp, tùy vào câu danh từ hay động từ cũng như tùy vào mỗi ngành nghề mà bạn có thể sử dụng với nghĩa phù hợp nhất. Thông thường thì estimate có thể hiểu theo những nghĩa như sau:

  • Sự nhìn nhận, sự ước đạt
  • Đánh giá, ước đạt, Dự kiến
  • Số lượng ước đoán
  • Số tiền ước đạt
  • Bản kê giá thành
  • Bản ước lượng
  • Sự ước tính
  • Ước lượng, nhìn nhận

Tính toán số tiền dự toán

Khi đưa ra số tiền dự toán, trước tiên cần tìm số nhân công nhìn từ góc độ quy mô của công việc. Như đã nói ở trên, nhân công được tính bằng lấy số nhân công đó nhân với giá của man-month hoặc man-day sẽ ra được số tiền dự toán. Tuy trên công thức là quy chuẩn về mặt lý thuyết, song có nhiều trường hợp cần cộng thêm các chi phí khác cũng như nhân công cho đội ngũ quản lí, tư vấn, giám sát… rồi mới đưa ra được số tiền dự toán. Hơn nữa, ngay trước khi hoàn thành cũng có thể xảy ra những thay đổi không thể dự đoán được nên thông thường sẽ thêm vào khoảng 20% nhân công thực tế rồi mới tính toán và đưa ra số tiền dự toán.

Hợp đồng khoán sản phẩm

Trong nhiều trường hợp, kĩ sư sẽ nhận công việc với cách tính toán nhân công như phía trên, nhưng cũng có trường hợp làm theo hợp đồng khoán sản phẩm.Trong hợp đồng khoán sản phẩm, phía khách hàng sẽ quyết định giá của sản phẩm. Khi đó, khách hàng cũng sẽ quyết định số nhân công dự tính nên trong trường hợp này rõ ràng để khách hàng viết hợp đồng khoán sản phẩm sẽ có hiệu quả hơn. Ngoài ra, dù trong trường hợp dùng hợp đồng khoán sản phẩm thì phía kĩ sư nhận công việc cũng cần tính toán số tiền dự toán và xác nhận xem có sự khác biệt so với số tiền phía khách hàng đưa ra hay không.

Điều kiện tiền đề của việc estimate

Khi thực hiện estimate, không chỉ việc viết estimate document mà bằng cả việc quyết định những điều kiện tiền đề sẽ giúp tránh được những phiền toái, vấn đề về sau này. Theo các mục phía dưới, cần quyết định những điều kiện tiền đề được thống nhất và hiểu rõ bởi cả 2 bên khách hàng và kĩ sư.

Xem thêm: Bạn biết gì về điều kiện tiền đề trong báo giá (Estimation) khi triển khai dự án phần mềm?

Các loại chi phí trong bảng dự toán

Giống như các dự án xây dựng, dự án phần mềm được phân rã thành nhiều hạng mục với các chi phí cụ thể, thí dụ:

  • Chi phí lập nhiệm vụ thiết kế (tư vấn, khảo sát, viết tài liệu thiết kế tổng quan).
  • Chi phí thiết kế bản vẽ chi tiết (mockup), phụ thuộc vào số phương án do khách yêu cầu. Thí dụ: Khách yêu cầu thiết kế 3 options cho 4 trang Home và 10 trang Landing Pages. Như vậy tổng số trang mockup sẽ là 3 x (4 + 10) = 42 trang.
  • Chi phí tài liệu kịch bản kiểm thử người dùng cuối (End-user Test Cases). Thông thường nhóm dự án sẽ dựng tài liệu kịch bản test nội bộ (internal test cases) vì việc triển khai đồng bộ giữa phát triển và test trong cùng thời điểm sẽ hiệu quả và nhanh chóng. Nếu phát sinh tài liệu kịch bản test người dùng cuối (thường sau khi kết thúc giai đoạn phát triển và chuyển sang giai đoạn nghiệm thu), thì đó là hạng mục ngoài hợp đồng.
  • Chi phí bảo trì. Lưu ý là bảo trì khác với bảo hành. Nếu không có ghi rõ trong hợp đồng thì mặc định dự án khi nghiệm thu sẽ chỉ có bảo hành, không có bảo trì. 

    Bảo trì chiếm một tỷ lệ trong biểu đồ tài chính của vòng đời sản phẩm (chú ý vòng đời sản phẩm khác với vòng đời dự án). Một nhận thức chung về bảo trì thường thấy: bảo trì đơn thuần là sửa lỗi (corrective action). Tuy nhiên, các nghiên cứu và khảo sát trong những năm qua đã chỉ ra rằng phần lới, trên 80%, bảo trì phần mềm được sử dụng cho các hành động khắc phục (preventive action) và nâng cấp.
     
  • Chi phí nâng cấp phần mềm. Cho dù là nâng cấp hay tối ưu một module, một tính năng, chi phí nâng cấp chiếm một tỉ lệ không nhỏ vì sẽ phải có nhiều người tham gia (viết code, kiểm thử lại toàn bộ, chạy thử trên sandbox, nghiệm thu...).
  • Chi phí tư vấn. Phần chi phí tư vấn có các loại công việc sau 
    • Thiết kế
    • Giám sát
    • Quản lý dự án
    • Thẩm định
    • Thẩm tra
    • Liên quan đến đấu thầu
    • Liên quan đến thanh quyết toán

Ngoài cách tính mon-day, man-month, thì chi phí tư vấn cũng được xác định theo phương pháp khác là nội suy định mức tương tự như chi phí quản lý dự án, bởi tư vấn thì chủ yếu là kỹ sư – chất xám – hợp đồng theo thời gian.

Về phạm vi estimate và ngoài phạm vi estimate

Cần phải giải thích rõ ràng xem phạm vi estimate của hệ thống là tới đâu, và vì có những trường hợp dùng văn bản thì sẽ không truyền tải được hết nên nếu có thể nên kèm theo cả một bản riêng về cấu trúc cấu thành hệ thống. Hơn nữa những mục không nằm trong hệ thống như hướng dẫn người dùng cũng cần quyết định trước xem có thực hiện hay không.

Kì hạn của dự án

Việc thiết lập thời gian hoàn thành sản phẩm cũng là rất quan trọng khi thực hiện estimate. Thí dụ như dù có là trường hợp 2 man-month đi chăng nữa thì việc tập trung hoàn thành trong 2 tháng sẽ khác với làm từ từ từng chút một trong 10 tháng. Thông thường thì nếu thời gian hoàn thành và giao nộp sản phẩm ngắn thì số tiền dự toán thường cao, còn nếu thời gian dài thì sẽ có thương lượng để giảm giá xuống.

Cách viết tài liệu dự toán (software cost estimation)

Cách viết estimate document có thể chia làm 2 loại lớn.

Cách viết nêu các mục theo công đoạn

Estimate document sẽ được chia thành các mục theo từng công đoạn. Viết số nhân công cho từng công đoạn rồi nhân với giá tiền là đã có thể tạo thành estimate document. Những mục như dưới đây thường được sử dụng trong nhiều trường hợp.

Cách viết khi hệ thống sử dụng phương thức khoán

Trong trường hợp các công đoạn chi tiết được viết ở một văn bản khác thì estimate document có thể viết bằng cách coi chi phí dự toán là chi phí thiết lập hệ thống và được khoán trả 1 lần.*

Trên đây tôi đã tóm tắt lại cách viết estimate document cho các kĩ sư. Vì việc viết estimate document theo số nhân công là đặc trưng phổ biến khi các kĩ sư estimate nên các bạn hãy ghi nhớ cách tính số nhân công. Ngoài ra cũng có trường hợp viết estimate document theo hình thức khoán nên cũng cần tùy thuộc và hoàn cảnh cụ thể để sử dụng cho phù hợp.

Tổng hợp từ Internet

Category