Tôi tin chắc rằng khối lượng công việc thường xuyên trong phát triển phần mềm là - và nên - tương đối nhỏ, nếu không nói là không đáng kể và đây là vấn đề cơ bản của ước tính phần mềm.
Hãy để tôi mô tả làm thế nào tôi đi đến kết luận này và cho tôi biết nếu tranh luận có bất kỳ sai sót nghiêm trọng nào:
Tất cả những gì có thể được ước tính với độ chính xác cao là công việc thường xuyên, có nghĩa là những việc đã được thực hiện trước đó. Tất cả các loại công việc khác liên quan đến nghiên cứu và sáng tạo thực sự không thể được ước tính, ít nhất là không chính xác, giả sử, +/- 20 phần trăm.
Phát triển phần mềm là tất cả về việc tránh các nhiệm vụ lặp đi lặp lại. Một trong những nguyên tắc cơ bản của nó là DRY (đừng lặp lại chính mình). Bất cứ khi nào một lập trình viên thấy mình làm những việc lặp đi lặp lại, đó là lúc tìm thấy một sự trừu tượng để tránh sự lặp lại này. Những tóm tắt này có thể là những điều đơn giản như trích xuất mã lặp lại vào một hàm hoặc đặt nó vào một vòng lặp. Chúng cũng có thể phức tạp hơn như tạo một ngôn ngữ cụ thể cho miền. Trong mọi trường hợp, thực hiện chúng sẽ liên quan đến nghiên cứu (đã có ai làm điều này trước đây chưa?) Hoặc sáng tạo.
Từ hai điểm này tôi rút ra kết luận trên.
Trên thực tế tôi đã tự hỏi khá lâu tại sao mối quan hệ này không được đề cập trong mọi cuộc thảo luận, bài đăng trên blog hoặc bài viết về ước tính phần mềm. Có quá lý thuyết không? Là giả định của tôi sai? Hoặc nó quá tầm thường - nhưng sau đó, tại sao hầu hết các nhà phát triển mà tôi biết tin rằng họ có thể thực hiện ước tính với độ chính xác +/- 20% hoặc tốt hơn?