Những gì bạn mô tả là - ít nhất là theo kinh nghiệm của tôi - một mô hình xuất hiện khá phổ biến của các đội đang cố gắng "trở nên nhanh nhẹn". Nó được mở cho cuộc tranh luận nếu đây thực sự là một phần của chính Agile hoặc là một sự thực thi sai lầm phổ biến của nó, chống lại các biểu hiện / nguyên tắc nhanh nhẹn hoặc hậu quả cố hữu của nó, v.v. Chỉ từ quan điểm thực nghiệm và chỉ dựa trên tập hợp kinh nghiệm mẫu nhỏ của riêng tôi (và những người tôi nói chuyện), nếu một nhóm nhanh nhẹn, dường như có cơ hội cao hơn so với cơ hội chạy theo mô hình này. Hãy để nó ở đó và tập trung vào ví dụ cụ thể của bạn.
Có hai khía cạnh riêng biệt với những gì bạn mô tả:
- Thiếu hiểu biết / tầm nhìn chung và do đó không hiệu quả
- Cách đo lường thành công / tiến độ và tổng chi phí
Đi sai đường hoặc chạy trong vòng tròn
Theo kinh nghiệm của tôi, lý do chính cho điều này xảy ra là trong nỗ lực sản xuất mã nhanh chóng, các nhóm tích cực đẩy các trường hợp sử dụng hoặc yêu cầu mà họ đã biết hoặc có thể dễ dàng tìm ra. Hãy nghĩ về nó theo cách này: 10-20 năm trước, mọi người đã cố gắng viết các thông số kỹ thuật khổng lồ và nghĩ về mọi thứ trước và thường thất bại. Họ hoặc mất quá nhiều thời gian hoặc bỏ qua một cái gì đó. Một trong những điều học được trong quá khứ là trong phát triển phần mềm có những điều bạn không thể biết và mọi thứ thay đổi rất nhiều, do đó ý tưởng lặp lại nhanh chóng và tạo ra một số đầu ra hợp lý nhanh chóng. Đó là một nguyên tắc rất tốt. Nhưng ngày nay, chúng ta ở một thái cực khác: "Tôi không quan tâm đến điều này bởi vì đó là một phần của lần chạy nước rút tiếp theo" hoặc "Tôi không gửi lỗi đó, tôi xử lý nó khi nó xuất hiện trở lại".
- Tập hợp tất cả các trường hợp sử dụng cấp cao , yêu cầu, phụ thuộc và hạn chế bạn có thể tìm thấy. Đặt nó trong một số wiki để tất cả các bên liên quan và nhà phát triển có thể nhìn thấy chúng. Thêm vào họ khi một cái gì đó mới xuất hiện. Nói chuyện với các cổ đông và người dùng của bạn. Sử dụng danh sách này làm danh sách kiểm tra trong khi phát triển để ngăn chặn việc triển khai những thứ không đóng góp cho sản phẩm cuối cùng hoặc là cách giải quyết / hack để giải quyết một vấn đề nhưng gây ra ba vấn đề mới.
- Xây dựng một khái niệm cấp cao . Tôi không nói về việc thiết kế giao diện hoặc lớp, mà thay vào đó phác họa sơ bộ miền vấn đề. Các yếu tố chính, cơ chế và tương tác trong giải pháp cuối cùng là gì? Trong trường hợp của bạn, nó sẽ làm cho nó rõ ràng khi sử dụng jquery-workaround giúp như một bước trung gian và khi nó chỉ gây ra công việc bổ sung.
- Xác thực khái niệm của bạn bằng cách sử dụng danh sách bạn thu thập. Có bất kỳ vấn đề rõ ràng trong đó? Liệu nó có ý nghĩa? Có những cách hiệu quả hơn để đạt được cùng một giá trị người dùng mà không gây ra nợ công nghệ lâu dài?
Đừng làm quá. Bạn chỉ cần một cái gì đó để mọi người trong nhóm (bao gồm cả những người không phải là nhà phát triển) có một sự hiểu biết chung về con đường tốt nhất đến MVP của bạn là gì. Mọi người nên đồng ý rằng không có sự giám sát rõ ràng và nó thực sự có thể hoạt động. Điều này nói chung giúp ngăn chặn đi vào ngõ cụt hoặc phải làm lại điều tương tự nhiều lần. Agile có thể giúp bạn đối phó tốt hơn với những điều bất ngờ, không có gì phải bàn cãi khi bỏ qua những gì đã biết.
Lưu ý về sai lầm chi phí chìm : nếu bạn bắt đầu với một kiểu kiến trúc hoặc cơ sở dữ liệu, hầu hết mọi người đều do dự khi thay đổi nó giữa dự án. Vì vậy, đó là một ý tưởng tốt để đầu tư một chút thời gian để có một "dự đoán tốt nhất có giáo dục" trước khi bắt đầu thực hiện công cụ. Các nhà phát triển có xu hướng muốn viết mã nhanh chóng. Nhưng thường có một vài giả, nguyên mẫu sống, ảnh chụp màn hình, khung dây, vv cho phép lặp lại nhanh hơn so với viết mã. Chỉ cần lưu ý rằng mỗi dòng mã được viết hoặc thậm chí các bài kiểm tra đơn vị làm cho việc thay đổi khái niệm tổng thể của bạn trở nên khó khăn hơn.
Đo lường thành công
Một khía cạnh hoàn toàn riêng biệt là cách bạn đo lường tiến độ. Giả sử mục tiêu của dự án của bạn là xây dựng một tòa tháp cao 1m bằng những thứ nằm xung quanh. Xây dựng một ngôi nhà thẻ có thể là một giải pháp hoàn toàn hợp lệ nếu ví dụ thời gian đưa ra thị trường quan trọng hơn sự ổn định. Nếu mục tiêu của bạn là xây dựng một cái gì đó tồn tại lâu dài, sử dụng Lego sẽ tốt hơn. Vấn đề là: những gì được coi là hack và những gì một giải pháp tao nhã phụ thuộc hoàn toàn vào cách đo lường thành công của dự án .
Ví dụ của bạn về "tải" là khá tốt. Tôi đã có những thứ như thế này trong quá khứ nơi mọi người (bao gồm bán hàng, PO, người dùng) đồng ý rằng điều đó thật khó chịu. Nhưng nó không có tác động đến sự thành công của sản phẩm và không gây ra nợ dài hạn. Vì vậy, chúng tôi đã bỏ nó đi vì có nhiều thứ có giá trị hơn để làm với các tài nguyên dev.
Lời khuyên của tôi ở đây là:
- Giữ tất cả mọi thứ, ngay cả những lỗi nhỏ, như vé trong hệ thống vé của bạn . Đưa ra quyết định chủ động những gì trong phạm vi dự án và những gì không. Tạo các mốc quan trọng hoặc lọc các hồ sơ tồn đọng của bạn để bạn luôn có một danh sách "đầy đủ" tất cả mọi thứ vẫn cần phải hoàn thành.
- Có một trật tự quan trọng nghiêm ngặt và điểm cắt rõ ràng trong đó dự án có thể được coi là thành công. Mức độ ổn định / chất lượng mã / tài liệu nào mà sản phẩm cuối cùng thực sự cần? Cố gắng dành mỗi ngày làm việc tốt nhất có thể bằng cách chọn từ đầu. Khi làm việc trên một vé, hãy cố gắng giải quyết hoàn toàn mà không giới thiệu vé mới (trừ khi nó có ý nghĩa đối với những thứ sau khi được ưu tiên do mức độ ưu tiên thấp hơn). Mỗi cam kết sẽ đưa bạn về phía trước về phía mục tiêu cuối cùng của bạn, không đi ngang hoặc lùi. Nhưng để nhấn mạnh một lần nữa: đôi khi một bản hack tạo ra công việc bổ sung sau này vẫn có thể là một mạng lưới tích cực cho dự án!
- Sử dụng PO / người dùng của bạn để tìm ra giá trị người dùng nhưng cũng có nhà phát triển của bạn tìm ra chi phí công nghệ . Những người không phải là nhà phát triển thường không thể đánh giá được chi phí dài hạn thực sự (không chỉ là chi phí thực hiện!), Vì vậy hãy giúp đỡ họ. Hãy nhận biết vấn đề ếch sôi: rất nhiều vấn đề nhỏ, không liên quan có thể theo thời gian có thể khiến một đội bị giữ lại. Cố gắng định lượng hiệu quả làm việc nhóm của bạn.
- Giữ một mắt trên mục tiêu / chi phí tổng thể. Thay vì suy nghĩ từ chạy nước rút đến chạy nước rút, thay vào đó hãy suy nghĩ "chúng ta có thể làm một nhóm làm mọi thứ cần thiết cho đến khi kết thúc dự án" . Nước rút chỉ là một cách để phá vỡ mọi thứ và có điểm kiểm tra.
- Thay vì muốn hiển thị một cái gì đó sớm, hãy vẽ khóa học của bạn trên con đường nhanh nhất đến một sản phẩm khả thi tối thiểu có thể được cung cấp cho người dùng. Tuy nhiên, chiến lược tổng thể của bạn sẽ cho phép kết quả có thể kiểm chứng ở giữa.
Vì vậy, khi ai đó làm điều gì đó không phù hợp với mục tiêu thực hiện cuối cùng của bạn, lý tưởng nhất là đừng xem xét câu chuyện đã hoàn thành. Nếu có lợi khi đóng câu chuyện (ví dụ để nhận phản hồi từ khách hàng), ngay lập tức mở một câu chuyện / lỗi mới để giải quyết các câu chuyện ngắn. Hãy minh bạch rằng việc dùng các phím tắt không làm giảm chi phí, nó chỉ che giấu hoặc trì hoãn chúng!
Mẹo ở đây là tranh luận với tổng chi phí của dự án: ví dụ, nếu PO đẩy mạnh việc sử dụng các phím tắt để đưa ra thời hạn, hãy định lượng số lượng công việc phải hoàn thành sau đó để xem xét dự án đã hoàn thành!
Ngoài ra, hãy cẩn thận với tối ưu hóa dựa trên tiêu chí : nếu nhóm của bạn được đo bằng số lượng câu chuyện họ có thể hiển thị khi xem xét nước rút, cách tốt nhất để đạt được "điểm số" tốt là cắt mọi câu chuyện thành mười câu chuyện nhỏ. Nếu nó được đo bằng số lượng bài kiểm tra đơn vị được viết, nó sẽ có xu hướng viết nhiều bài không cần thiết. Đừng đếm các câu chuyện, thay vào đó hãy đo lường xem có bao nhiêu chức năng người dùng cần thiết hoạt động, chi phí của khoản nợ công nghệ được giải quyết trong phạm vi dự án là bao nhiêu, v.v.
Tóm lược
Để đun sôi nó xuống: Đi nhanh và tối thiểu là một cách tiếp cận tốt. T ông vấn đề là trong việc giải thích "nhanh" và "tối thiểu". Bạn nên luôn luôn xem xét chi phí dài hạn (trừ khi bạn có một dự án mà điều này không liên quan). Sử dụng một phím tắt chỉ mất 1 ngày nhưng tạo ra nợ công nghệ là 1 tháng sau ngày giao hàng khiến công ty của bạn mất nhiều hơn một giải pháp mất 1 tuần. Ngay lập tức bắt đầu viết bài kiểm tra có vẻ nhanh, nhưng không phải nếu khái niệm của bạn bị sai sót và họ đưa ra một cách tiếp cận sai.
Và hãy ghi nhớ "dài hạn" nghĩa là gì trong trường hợp của bạn: Tôi biết nhiều hơn một công ty đã phá sản bằng cách cố gắng viết mã tuyệt vời và do đó vận chuyển quá muộn. Một kiến trúc tốt hoặc mã sạch - từ góc độ công ty - chỉ có giá trị nếu chi phí để đạt được nó thấp hơn chi phí không có nó.
Mong rằng sẽ giúp!