25 điểm bởi GN⁺ 2025-02-19 | 1 bình luận | Chia sẻ qua WhatsApp

> “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
  • 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

 
GN⁺ 2025-02-19
Ý 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

    • Có thể so với việc ước lượng sản xuất phim. Có những công ty bán bảo hiểm hoàn thành cho các bộ phim
    • Bảo hiểm hoàn thành tốn khoảng 2% chi phí sản xuất. Thường được dùng cho phim độc lập có ngân sách từ 3 triệu đến 70 triệu USD
    • Công ty bảo hiểm sẽ gánh một phần chi phí vượt mức, nhưng nếu quá lớn thì họ sẽ sa thải đạo diễn và tiếp quản việc sản xuất. Cách này tạo ra hiệu quả thực sự
    • Các công ty bảo hiểm hoàn thành ước lượng dựa trên dữ liệu quá khứ. Họ có chi phí thực tế của rất nhiều bộ phim
    • Họ lưu chi tiết chi phí của từng cảnh. Ví dụ, với một cảnh rượt đuổi bằng ô tô, họ sẽ tham chiếu chi phí của 100 cảnh tương tự trước đó trong cơ sở dữ liệu
    • Họ cũng có thông tin về đạo diễn, nhà sản xuất và diễn viên, rồi so sánh chi phí quay cảnh của họ với đồng nghiệp
    • Đây không phải khoa học tên lửa, mà là nghiệp vụ thẩm định bảo hiểm
  • 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

    • Khách hàng có thể không thực sự biết họ muốn gì. Dù có hỏi kỹ trước thế nào cũng không lấy được thông tin này
    • Tuyệt đối nên từ chối tính phí theo dự án, chỉ nên tính phí theo thời gian
  • Các dự án DIY lúc nào cũng như vậy

    • Người ta hay bàn nhiều về tài sản sở hữu, nhưng công cụ và linh kiện chiếm rất nhiều chỗ
    • Tác giả đã có sẵn rất nhiều công cụ nhưng vẫn còn thiếu vài món
    • Cuối cùng thì số lần phải ghé cửa hàng đồ kim khí sẽ giảm bớt, nhưng xưởng làm việc sẽ đầy ắp đồ đạc
  • 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

    • Tai nghe chống ồn không phải là thiết bị bảo vệ thính lực. Thiết bị bảo vệ thính lực tạo ra một rào cản vật lý giữa nguồn ồn và tai
    • Tai nghe chống ồn sẽ nghe âm thanh xung quanh và tạo ra sóng âm ngược pha. Vì không hoàn hảo nên chúng không bảo vệ tai đủ tốt
  • Câu chuyện hay đấy. Nhưng trải nghiệm của tôi gần như ngược hẳn

    • Không phải 90% là việc dễ, mà 90% là loay hoay tìm cách
    • Rất nhiều khi cùng một loại sản phẩm lại được nhiều công ty khác nhau làm đi làm lại
  • Câu này làm tôi nhớ đến: "thực tại có những chi tiết đáng kinh ngạc"

    • Những thứ mình chưa biết vẫn sẽ như vậy cho đến khi mình tiến đủ gần với cái mới
  • 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

    • Thợ xây thì cắt đại một cái lỗ cho ống nước rồi đi ra hút thuốc
    • Điều này khớp với trải nghiệm trước đây của tôi
  • 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

    • Hầu hết đồng nghiệp của tôi làm xong dự án rất nhanh, rồi tốn nhiều thời gian cho khâu xử lý hậu kỳ
    • Tôi đầu tư rất nhiều thời gian ở giai đoạn đầu nên không cần xử lý hậu kỳ
  • 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ý do thợ ống nước có thể lấy 300 USD chỉ trong vài phút để lắp máy giặt là vì họ biết cách khoan lỗ vào ống thoát nước
  • 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?

    • Tôi không phản đối việc xem công việc khám phá như một bài tập thu thập yêu cầu
    • Chỉ cần đi cửa hàng đồ kim khí một lần với một danh sách mua sắm lớn và một bộ câu hỏi còn mở thì công việc sẽ hiệu quả và đơn giản hơn nhiều