> “Bạn nghĩ sẽ mất bao lâu để làm xong việc đó?”
- Đây là câu hỏi mà các lập trình viên phần mềm sợ hãi và ghét bỏ, và chiếc máy giặt của tôi đã khiến tôi phải nhìn lại nó
- Khó khăn của việc ước lượng công sức phần mềm (Software Effort Estimation) mà máy giặt đã chỉ ra
- Trong quá trình lắp đặt máy giặt khi chuyển đến nhà mới, tôi đã tốn nhiều thời gian hơn dự kiến
- Một việc vốn thường chỉ mất 10 phút, lần này lại mất tới 4 giờ
- Những trở ngại (blocker) không thể lường trước đã xuất hiện và làm chậm quá trình lắp đặt
- Tôi nhận ra rằng quá trình này rất giống với lý do khiến việc ước lượng công sức trong phát triển phần mềm trở nên khó khăn
- Trở ngại và cách giải quyết
- Trở ngại 1: Không có lỗ để đi dây điện nên không thể подключить máy giặt vào nguồn điện
- Giải pháp 1: Mua một mũi khoan cưa lỗ 60mm ở cửa hàng kim khí để khoan lỗ
- Trở ngại 2: Máy khoan dân dụng không thể dùng với mũi khoan cưa lỗ
- Giải pháp 2: Mượn một máy khoan mạnh hơn để sử dụng
- Trở ngại 3: Ống thoát nước và cấp nước ngắn hơn dự kiến khi dùng ở ngôi nhà mới
- Giải pháp 3: Định mua ống nối dài mới nhưng rồi nhận ra ống hiện có không thể nối dài, nên lại phải mua ống mới
- Trở ngại 4: Nắp kim loại được siết chặt trên vòi nước không thể tháo ra
- Giải pháp 4: Mua một chiếc cờ lê lớn hơn để tháo nắp
- Trở ngại 5: Đầu nối xả (spigot) của đường thoát nước bị chặn bởi một vách PVC
- Giải pháp 5: Dùng máy khoan đục thủng vách PVC rồi nối ống thoát nước vào
- Sau tổng cộng 5 lần ghé cửa hàng kim khí và 4 giờ làm việc, cuối cùng tôi cũng lắp đặt máy giặt bình thường
- Trở ngại 1: Không có lỗ để đi dây điện nên không thể подключить máy giặt vào nguồn điện
- Vì sao việc ước lượng công sức phát triển phần mềm lại khó
- Ngay cả với công việc quen thuộc, nếu môi trường khác đi thì khả năng phát sinh biến số ngoài dự kiến là rất cao
- Lý do các ước lượng dựa trên kinh nghiệm quá khứ thường sai là vì tồn tại những “ẩn số chưa được biết đến (Unknown Unknowns)”
- Một vài ví dụ:
- Thư viện định dùng không còn được bảo trì nữa nên phải tự sửa trực tiếp
- Công cụ phát triển được cập nhật khiến cách làm cũ không còn áp dụng được
- Phiên bản OS thay đổi làm cho các dependency cũ không còn hoạt động bình thường
- Một component mới được thêm vào hạ tầng nhưng hoạt động khác với dự đoán
- Kết luận
- Trải nghiệm ở ngôi nhà mới cho thấy việc ước lượng công sức trong phát triển phần mềm khó đến mức nào
- Trước khi bắt đầu phát triển, cần khảo sát yêu cầu kỹ lưỡng nhất có thể, nhưng việc xuất hiện các blocker ngoài dự kiến là điều không thể tránh khỏi
- Dù một dự án phần mềm trông có vẻ như một công việc quen thuộc, trong môi trường mới vẫn có thể xuất hiện những thách thức hoàn toàn khác
- Cần điều chỉnh lịch trình và nguồn lực một cách linh hoạt để tính đến những biến số như vậy
1 bình luận
Ý kiến trên Hacker News
Ước lượng phần mềm đúng là một trò đùa. Vì không có hình phạt nào cho việc ước lượng thiếu
Bài viết rất hay, nhưng lại thiếu một khác biệt chính so với kinh nghiệm làm phần mềm
Các dự án DIY lúc nào cũng như vậy
Học được cách giữ thẳng trong 25 phút sau khi khoan và sự tuyệt vời của tai nghe chống ồn
Câu chuyện hay đấy. Nhưng trải nghiệm của tôi gần như ngược hẳn
Câu này làm tôi nhớ đến: "thực tại có những chi tiết đáng kinh ngạc"
Khi tác giả khoan lỗ cho dây điện, họ lắp vừa khít một miếng chèn nhựa gọn gàng
Hầu hết đồng nghiệp đều ngạc nhiên khi tôi nói rằng khâu khảo sát và kiểm kê trước khi bắt đầu dự án chiếm rất nhiều thời gian
Một điểm thú vị đáng cân nhắc vào lần tới khi bạn ngạc nhiên vì giá của thợ kỹ thuật
Làm sao khi bạn thậm chí còn không biết cần đặt câu hỏi gì trước khi bắt đầu một dự án phần mềm?