Nếu sếp đưa cho bạn một số chức năng và yêu cầu ước lượng cần khoảng thời gian bao lâu để hoàn thành thì bạn sẽ ước lượng như thế nào?
Đa số chúng ta thường hay ước lượng theo cảm tính, không dựa trên một phương pháp nào cả.
Do đó, 90% trường hợp bạn sẽ trễ tiến độ dự án.
Đừng xem nhẹ việc này, nếu thường xuyên trễ tiến độ, cấp trên sẽ đánh giá thấp năng lực của bạn kể cả khi bạn giỏi kỹ năng lập trình.
Vì vậy, mình sẽ giới thiệu cho bạn một phương pháp ước lượng không quá phức tạp nhưng mang lại hiệu quả nhanh chóng.
Bạn có thể dễ dàng áp dụng ngay sau khi xem xong bài viết.
1. Phương pháp ước lượng hiệu quả
Phương pháp này có tổng cộng 5 bước và chủ yếu tính toán dựa trên 2 yếu tố, đó là: độ phức tạp và độ bất ổn định.
Để biết rõ hơn, chúng ta hãy cùng đến với bước đầu tiên.
1.1 Ước lượng độ phức tạp
Bước đầu tiên, bạn chuyển đổi yêu cầu thành từng công việc cụ thể.
Mỗi công việc được xác định bằng 1 độ phức tạp tương ứng.
Giả sử, bạn nhận được yêu cầu làm chức năng Authentication cho trang web. Bạn có thể chia nó thành nhiều công việc như hình bên dưới:
![chia thành nhiều công việc nhỏ hơn](https://letdiv.com/wp-content/uploads/2023/11/chia-thanh-nhieu-cong-viec.webp)
Vậy độ phức tạp là gì?
Độ phức tạp bao gồm nhiều giá trị từ dễ đến rất khó.
Bên cạnh mỗi độ phức tạp là thời gian cần thiết để hoàn thành.
![độ phức tạp](https://letdiv.com/wp-content/uploads/2023/11/do-phuc-tap.webp)
Ví dụ, làm giao diện login có độ phức tạp dễ. Như vậy thời gian cần thiết để hoàn thành là 1 ngày.
Nếu cảm thấy các giá trị thời gian không phù hợp, bạn có thể tự ý tùy chỉnh.
![Có thể tùy chỉnh độ phức tạp](https://letdiv.com/wp-content/uploads/2023/11/co-the-tuy-chinh-do-phuc-tap.webp)
Tuy nhiên, các vấn đề phát sinh trong khi làm việc là không thể tránh khỏi.
Trong bước thứ 2, bạn cần phải ước lượng độ bất ổn định cho mỗi công việc.
1.2 Ước lượng độ bất ổn định
Trước tiên, bạn định nghĩa bảng hệ số bất ổn định dùng chung cho toàn bộ dự án.
Hệ số càng lớn thì độ bất ổn định càng lớn.
![Độ bất ổn định](https://letdiv.com/wp-content/uploads/2023/11/do-bat-on-dinh.webp)
Sau đó, bạn ước lượng mức độ phát sinh của mỗi công việc.
Ví dụ, làm giao diện login khá đơn giản nên mình sẽ ước lượng nó có độ bất ổn định thấp.
Nghĩa là thời gian tối đa để hoàn thành được tính toán dựa trên thời gian cần thiết nhân với hệ số bất ổn định tương ứng.
![Tính toán thời gian tối đa](https://letdiv.com/wp-content/uploads/2023/11/tinh-toan-thoi-gian-toi-da.png)
Còn đối với công việc thứ 2, mình chưa có kinh nghiệm làm kiểu nghiệp vụ này trước đó, nhưng logic không phức tạp, nên có thể ước lượng hệ số bất ổn định của nó là bình thường.
![Xác định độ bất ổn định công việc thứ 2](https://letdiv.com/wp-content/uploads/2023/11/xac-dinh-do-bat-on-dinh-cong-viec-thu-2.webp)
Công việc thứ 3 cần sự hỗ trợ của backend khá nhiều. Giả sử, năng lực bạn backend trong công ty vẫn chưa tốt cho lắm, lập trình thường xuyên có lỗi, nên công việc này có độ bất ổn định cao.
![Xác định độ bất ổn định công việc thứ 3](https://letdiv.com/wp-content/uploads/2023/11/xac-dinh-do-bat-on-dinh-cong-viec-thu-3.webp)
Sau khi đã ước lượng xong độ bất ổn định cho các công việc, bạn chuyển sang bước thứ 3, là tính toán mọi thứ thành những con số cụ thể.
1.3 Tính toán
Cột đầu tiên mình thêm vào là thời gian cần thiết để hoàn thành.
Giá trị cột này được tính toán dựa trên độ phức tạp mà chúng ta đã thiết lập từ trước.
![Tính toán thời gian cần thiết](https://letdiv.com/wp-content/uploads/2023/11/tinh-toan-thoi-gian-can-thiet.webp)
Cột thứ 2 là thời gian tối đa để hoàn thành, được tính toán dựa trên thời gian cần thiết nhân với hệ số bất ổn định.
![Tính toán thời gian tối đa](https://letdiv.com/wp-content/uploads/2023/11/tinh-toan-thoi-gian-toi-da.webp)
Như vậy, bạn đã có đầy đủ thông tin tổng ngày cần thiết và tổng ngày tối đa để để hoàn thành tất cả công việc.
![Tính tổng ngày](https://letdiv.com/wp-content/uploads/2023/11/tinh-tong-ngay.webp)
Tuy nhiên, nếu các giá trị này vượt quá thời hạn cho phép thì bạn cần phải làm gì tiếp theo?
Chúng ta hãy cùng chuyển sang bước thứ 4 là Tối Ưu.
1.4 Tối Ưu
Các công việc có độ phức tạp từ khó trở lên cần được phân tích lại để chuyển thành các công việc có độ phức tạp nhỏ hơn.
![Chuyển đổi thành các công việc có độ phức tạp nhỏ hơn](https://letdiv.com/wp-content/uploads/2023/11/chuyen-doi-thanh-cac-cong-viec-co-do-phuc-tap-nho-hon.webp)
Bạn làm tương tự đối với các công việc có độ bất ổn định từ cao trở lên.
Đôi lúc sẽ có những công việc không thể tách nhỏ hơn, vốn dĩ bản chất của chúng có độ phức tạp lớn hoặc độ bất ổn định cao thì bạn cứ để như vậy.
Càng ít số lượng công việc có độ phức tạp lớn hoặc độ bất ổn định cao trở lên thì thời gian ước lượng sẽ càng chính xác.
1.5 Theo dõi số liệu thực tế và cải tiến
Bước cuối cùng quan trọng không kém là theo dõi tiến độ thực tế, từ đó bạn mới có cơ sở dữ liệu để ước lượng ngày càng chính xác hơn.
![Theo dõi thời gian thực tế](https://letdiv.com/wp-content/uploads/2023/11/theo-doi-thoi-gian-thuc-te.webp)
Bạn lưu ý, không nên thay đổi hệ thống đo lường mà chúng ta đã quy định từ đầu.
![Hệ thống đo lường](https://letdiv.com/wp-content/uploads/2023/11/he-thong-do-luong.webp)
Nếu phải thay đổi, bạn sẽ cần làm lại từ con số 0, tại vì những dữ liệu cũ không còn chính xác nữa.
2. Kết luận
Ước lượng là một trong những kỹ năng cần thiết trong khi phân tích dự án.
Ngoài ra còn có những kỹ năng khác như là thiết kế tài liệu, thiết kế giao diện,…
Bạn sẽ được đào tạo chuyên sâu những kỹ năng này trong các khóa học lập trình của LetDiv.
Nếu quan tâm bạn có thể đăng ký học thử 2 chương đầu tiên hoàn toàn miễn phí!