Tôi nghĩ điều đầu tiên nhận ra là có một sự khác biệt giữa nhanh nhẹn và nhanh nhẹn. Từ từ đưa ra các kỹ thuật và đặc điểm nhanh - các nhóm chức năng chéo, lập kế hoạch thích ứng, phân phối tiến hóa / tăng dần, lặp lại theo thời gian và thậm chí giới thiệu các khái niệm từ Lean rất khác so với giới thiệu Extreme Lập trình, Scrum hoặc Crystal.
Bạn đề cập rõ ràng sự tham gia của khách hàng. Có, nhiều phương pháp của Agile kêu gọi sự tham gia của khách hàng, nhưng điều đó không bắt buộc phải nhanh nhẹn. Trong mọi chương trình liên quan đến chính phủ / quốc phòng, tôi luôn có một người quản lý chương trình hoặc dự án là điểm liên lạc với khách hàng. Người này trở thành "tiếng nói của khách hàng". Nó có thể bị chậm lại khi họ giao tiếp hoặc gửi email hoặc gọi điện thoại và làm rõ, nhưng bạn có thể có một người (hoặc một nhóm, nếu bạn cũng có phó thủ tướng) đó là đại diện khách hàng của nhóm của bạn. Phải thừa nhận rằng nó không hoàn toàn giống nhau. Nhưng không phải là nhanh nhẹn về việc linh hoạt và phản ứng với thay đổi?
Bạn cũng đề cập đến một vài khái niệm chính: các yêu cầu được xác định trước, có các yêu cầu tính năng "ném qua tường", thiếu ưu tiên vì "tất cả chúng đều quan trọng", và các dự án chi phí cố định và / hoặc lịch trình cố định. Mỗi trong số này có thể được giải quyết theo những cách khác nhau.
Nếu bạn nghĩ rằng bạn có tất cả các yêu cầu của bạn ở phía trước, rất có thể bạn không. Yêu cầu thay đổi. Chỉ vì bạn có một đặc tả "đã hoàn thành và đã ký" không có nghĩa là nó được đặt trong đá. Đưa ra bất kỳ tài liệu yêu cầu nào bạn có, nắm bắt chúng theo cách bạn cảm thấy thoải mái và / hoặc theo cách thức được quy định trong hợp đồng và cung cấp các yêu cầu, thiết kế và kiến trúc. Ngoài ra, hãy xem liệu bạn có thể coi đây là những tài liệu sống hay không (một tài liệu thiết kế mà tôi thấy hôm nay tại nơi làm việc được dán nhãn là Bản sửa đổi G, có nghĩa là bản cập nhật thứ 8 của nó). Hỏi về số tiền bạn có thể để lại như TBD trong bất kỳ lần lặp nào và bao nhiêu cần phải được cải thiện ngay bây giờ - có thể có một số cho và nhận.
Hãy nhanh nhẹn với tài liệu của bạn. Đừng lặp lại những nỗ lực giữa "những gì nhóm của bạn muốn" và "những gì khách hàng muốn". Ví dụ: nếu khách hàng của bạn muốn một đặc tả yêu cầu phần mềm truyền thống và nhóm của bạn muốn sử dụng các câu chuyện của người dùng, hãy thử điều chỉnh SRS truyền thống và sử dụng các mục hành động và danh sách các mục hành động thay vì các câu chuyện của người dùng để bạn không mất thời gian xây dựng cả "hệ thống sẽ ..." và "phải có thể vì". Điều này không có kỷ luật về phía nhóm, tuy nhiên, để thích ứng với sự khác biệt giữa các dự án. Chụp các vấn đề trong phản xạ.
Khi bạn bắt đầu phát triển, bạn có thể chạy 5 hoặc 6 lần lặp và sau đó mời khách hàng của bạn đến cơ sở của bạn để xem một tập hợp con thực hiện của bạn. Rửa sạch và lặp lại quá trình này. Đó không phải là sự tham gia liên tục được yêu cầu bởi một số phương pháp, nhưng bạn có lợi thế về khả năng hiển thị cao. Nếu khách hàng của bạn nói không, ít nhất bạn đã thử. Nếu họ nói có, bạn có thể khai sáng cho họ là nhanh nhẹn. Trong một dự án tôi đã thực hiện, khách hàng đã truy cập trang web cứ sau vài tháng (thường là 3-5 tháng). Họ sẽ xem chúng tôi trải qua kiểm tra QA, họ sẽ thảo luận về mối quan tâm với các kỹ sư và kinh doanh với văn phòng chương trình / dự án. Đó là một cơ hội cho tất cả mọi người để có được trên cùng một trang.
Thử nghiệm và bảo trì xảy ra giống như trên dự án nhanh nhẹn khác. Tạo quy trình kiểm tra của bạn và khiếm khuyết tài liệu theo cách thích hợp, theo dõi số liệu theo nghĩa vụ hợp đồng và kết quả kiểm tra tài liệu. Nếu bạn muốn theo TDD, hãy cho nó. Tích hợp liên tục là một ý tưởng tốt. Trong các cuộc họp trạng thái dự án, người quản lý dự án của bạn có thể sử dụng thông tin này để nói rằng "chúng tôi đã thực hiện các yêu cầu N, kiểm tra M, vượt qua các bài kiểm tra X" và cập nhật về tình trạng và tình trạng dự án cho những người có tiền.
Nói về tiền, chúng ta có vấn đề chi phí cố định và / hoặc lịch trình cố định.
Đối phó với một lịch trình cố định là khá đơn giản. Đưa ra yêu cầu của bạn, bạn biết bạn có thể hoàn thành bao nhiêu lần lặp. Khối lượng công việc của bạn cho mỗi lần lặp được đặt khá nhiều về các tính năng để thực hiện, kiểm tra và tích hợp. Điều này có thể khó khăn, nhưng không thể phá vỡ các tính năng và gán chúng cho các lần lặp trước. Điều này quay trở lại quan điểm của tôi về việc mời khách hàng - nếu bạn có một năm và đang sử dụng các vòng lặp 2 tuần, có thể mời khách hàng hàng quý (và mời họ hàng quý) và cho họ thấy kết quả của công việc trước đó. Hãy cho họ thấy mức độ ưu tiên của bạn đối với các yêu cầu, kế hoạch tương lai của bạn và cách bạn sắp xếp lịch trình.
Đối phó với một ngân sách cố định là tương tự. Bạn biết bạn có bao nhiêu thời gian, bao nhiêu tài nguyên cho dự án, chi phí bao nhiêu và do đó mọi người có thể làm việc bao nhiêu giờ cho mỗi lần lặp. Đó chỉ là vấn đề đảm bảo mọi người theo dõi điều này một cách cẩn thận. Nếu công ty của bạn có thể ăn chi phí làm thêm giờ, hãy cho nó. Mặt khác, đảm bảo mọi người đều làm việc trong khoảng thời gian thích hợp và sử dụng các kỹ năng quản lý thời gian và quyền anh thời gian tốt để giữ cho mọi người làm việc hiệu quả. Giờ làm việc hiệu quả hơn là những gì bạn cần để giảm chi phí - cung cấp nhiều tài liệu và phần mềm giá trị gia tăng hơn mà không phải trả chi phí cho các cuộc họp và chi phí chung.
Cuối cùng, không nhất thiết phải là Agile, mà là áp dụng những điều khiến Agile trở nên tốt và nhanh nhẹn. Có thể đáp ứng các thay đổi trong yêu cầu, có thể cung cấp phần mềm thường xuyên ngay cả khi khách hàng không muốn, chỉ tạo tài liệu bổ sung giá trị (cùng với bất cứ điều gì bạn có nghĩa vụ sản xuất theo hợp đồng), v.v.