"phần mềm được thực hiện khi nó được thực hiện, không sớm hơn, không muộn hơn."
Điều này đúng, nhưng với mỗi nhiệm vụ mà các nhà phát triển của bạn bắt đầu thực hiện, mọi người trong tổ chức của bạn có hiểu Định nghĩa Hoàn thành cho từng nhiệm vụ không?
Có vẻ như một trong những vấn đề lớn nhất của bạn là Ước tính , nhưng các nhà phát triển chỉ có thể cung cấp ước tính thực tế khi họ có một "định nghĩa hoàn thành rõ ràng và được xác định rõ ràng". (Bao gồm các vấn đề về quy trình của công ty - ví dụ: tài liệu người dùng, gói công việc trên một bản phát hành chính thức, v.v.)
Không có gì đáng ngạc nhiên khi việc ước tính quá mức đang gây ra vấn đề, vì hầu hết các nhà phát triển đều thấy rằng việc ước tính thời gian cần thiết để hoàn thành một nhiệm vụ là khó khăn nhất mà họ được hỏi.
Tuy nhiên, hầu hết các nhà phát triển có xu hướng xử lý hợp lý (mặc dù lạc quan ) về số lượng nỗ lực họ có thể bỏ ra, trong một khoảng thời gian nhất định.
Vấn đề thường là các nhà phát triển đấu tranh để tạo ra mối quan hệ giữa một nhiệm vụ và tổng số nỗ lực cần có khi họ xử lý thông tin không đầy đủ - đặc biệt nếu họ bị áp lực phải đưa ra tất cả các câu trả lời trước một nhiệm vụ thực sự lớn .
Điều này tự nhiên dẫn đến ước tính thời gian trở nên mất kết nối với thực tế và họ mất đi những thứ như quy trình xây dựng và tài liệu người dùng.
Ngắt kết nối có xu hướng bắt đầu ngay từ đầu khi nhiệm vụ được mô tả; và nó thường được kết hợp bởi một người không có kỹ thuật lập ra một danh sách các yêu cầu mà không có bất kỳ manh mối nào về số lượng nỗ lực cần thiết.
Đôi khi những người trong quản lý cấp cao chỉ định các nhiệm vụ và hoàn toàn bỏ qua các vấn đề về quy trình của công ty; Không có gì lạ khi quản lý cấp cao nghĩ rằng những việc như xác định các bài kiểm tra hoặc tạo bản dựng được phát hành chính thức hoặc cập nhật tài liệu người dùng chỉ xảy ra một cách kỳ diệu mà không mất thời gian hay công sức. cần thiết.
Đôi khi các dự án thất bại trước khi một nhà phát triển thậm chí đã viết một dòng mã bởi vì ai đó, ở đâu đó không thực hiện đúng công việc của họ.
Nếu nhóm phát triển không tham gia vào việc đồng ý các yêu cầu hoặc nắm bắt các tiêu chí chấp nhận, thì đó là sự thất bại của quản lý - bởi vì điều đó có nghĩa là ai đó không hiểu biết về mã và các vấn đề kỹ thuật đã khiến doanh nghiệp đưa ra một bộ yêu cầu chưa hoàn chỉnh, và để dự án mở để giải thích sai, phạm vi leo, mạ vàng, vv
Nếu nhóm phát triển có liên quan đến việc nắm bắt và đồng ý các yêu cầu, thì đó có thể là một thất bại của nhóm, người chịu trách nhiệm làm rõ các chi tiết (và tiêu chí chấp nhận - tức là "Giao hàng trông như thế nào? Khi nào nó được thực hiện ?" ). Nhóm phát triển cũng chịu trách nhiệm nói KHÔNG khi có các vấn đề ngăn chặn khác hoặc nếu một yêu cầu chỉ là không thực tế.
Vì vậy, nếu các nhà phát triển có liên quan đến việc nắm bắt các yêu cầu:
- Đội có cơ hội ngồi lại với người quản lý sản phẩm để làm rõ các yêu cầu / định nghĩa thực hiện không?
- Đội có hỏi đủ câu hỏi để làm rõ các yêu cầu ngụ ý / giả định không? Làm thế nào thường là những câu hỏi được trả lời thỏa đáng?
- Đội có yêu cầu tiêu chí Chấp nhận (định nghĩa hoàn thành) trước khi đưa ra ước tính không?
- Làm thế nào tốt tiêu chí chấp nhận thường được nắm bắt cho mỗi nhiệm vụ? Đây có phải là một tài liệu mơ hồ với chi tiết thưa thớt hay nó mô tả chức năng hữu hình và từ ngữ mà một nhà phát triển có thể dịch rõ ràng thành một bài kiểm tra?
Cơ hội là năng suất của nhóm của bạn không phải là vấn đề; nhóm của bạn có thể đang nỗ lực hết sức có thể để phát triển. Các vấn đề thực sự của bạn có thể là một hoặc nhiều điều sau đây:
- Yêu cầu không đầy đủ và mơ hồ.
- Yêu cầu / nhiệm vụ quá lớn ở nơi đầu tiên.
- Giao tiếp kém giữa đội ngũ phát triển và quản lý cấp trên.
- Thiếu các tiêu chí chấp nhận được xác định rõ ràng trước khi các nhiệm vụ được giao cho nhóm.
- Đặc điểm kỹ thuật không đầy đủ hoặc mơ hồ / mơ hồ của các bài kiểm tra chấp nhận. (tức là Định nghĩa Xong)
- Không đủ thời gian phân bổ để xác định / đồng ý tiêu chí chấp nhận.
- Các nhà phát triển đã không cân nhắc thời gian để kiểm tra mã cơ sở hiện tại hoặc sửa các lỗi hiện có
- Các nhà phát triển đã kiểm tra mã cơ sở hiện tại nhưng không nêu ra các lỗi như Chặn các vấn đề trước khi đưa ra các ước tính về các yêu cầu
- Quản lý đã thấy các vấn đề / lỗi và quyết định rằng các lỗi không cần phải sửa trước khi viết mã mới.
- Các nhà phát triển chịu áp lực chiếm 100% thời gian của họ, mặc dù có thể 20% (hoặc một số tương tự) thời gian của họ có thể bị chiếm bởi các cuộc họp, phiền nhiễu, email, v.v.
- Các ước tính được thỏa thuận theo mệnh giá và không ai điều chỉnh phòng cho lỗi hoặc dự phòng (ví dụ: "Chúng tôi đã quyết định việc này sẽ mất 5 ngày, vì vậy chúng tôi sẽ mong đợi nó được thực hiện trong 8.").
- Ước tính được mọi người (nhà phát triển và quản lý) coi là số duy nhất thay vì số "phạm vi" thực tế - nghĩa là
- Ước tính trường hợp tốt nhất
- Ước tính thực tế
- Ước tính trường hợp xấu nhất
... Danh sách có thể còn dài hơn thế nữa.
Bạn cần thực hiện một số "tìm hiểu thực tế" và tìm hiểu chính xác lý do tại sao các ước tính luôn bị ngắt kết nối với thực tế. Là phần mềm cơ sở hiện có xấu? Có thiếu bảo hiểm thử nghiệm đơn vị? Các nhà phát triển của bạn có tránh giao tiếp với quản lý không? Quản lý có tránh giao tiếp với các nhà phát triển không? Có sự mất kết nối giữa kỳ vọng quản lý và kỳ vọng của nhà phát triển khi nói đến "Định nghĩa hoàn thành" không?