Nợ kỹ thuật nên được lên lịch như một tính năng hoặc một việc vặt (hoặc một lỗi)?


19

Tôi đã thêm một vài câu chuyện của người dùng giải quyết một số khoản nợ kỹ thuật vào bảng Theo dõi Pivotal của tôi. Tôi nên xem chúng như các tính năng (giữ mức vận tốc của tôi) hay là việc vặt / lỗi (giảm vận tốc của tôi)? Tôi hiểu rằng về lâu dài, tôi sẽ không tạo ra bất kỳ sự khác biệt nào, nhưng mỗi khi tôi thêm một câu chuyện nợ kỹ thuật, tôi phải đưa ra quyết định.

Một vài suy nghĩ:

  • Chúng không thực sự là lỗi, chúng không phá vỡ bất cứ thứ gì
  • Người dùng không yêu cầu bất cứ điều gì vì việc triển khai ở mức độ thấp không ảnh hưởng đến họ, nhưng điều đó sẽ giúp phát triển lâu dài dễ dàng hơn
  • Nếu bạn xác định các tính năng như những câu chuyện mà thêm giá trị cho người sử dụng, cũng a) họ không là người dùng sẽ không thấy bất kỳ lợi ích trực tiếp, nhưng sau đó b) họ làm vì họ làm cho phát triển tương lai / bảo trì càng tốt mà không giá trị thêm, không phải bây giờ

Tôi không quyết định có thực sự làm việc hay không, hoặc khi nào lên lịch, tôi chỉ cần biết những gì tôi nên gọi là nợ kỹ thuật trong công cụ quản lý dự án của mình và tại sao.


Câu trả lời:


17

Nó là một tính năng.

As a [Developer], 
I want to [refactor the whizbang library] 
in order to [simplify maintenance and speed execution]

Nó được xác định và lên lịch và theo dõi như bất kỳ tính năng nào khác.

Nếu việc triển khai tính năng này không đủ giá trị (cho khách hàng hoặc cho bạn) để nó được lên lịch, thì đó là một vấn đề khác.


1
Aha. Câu trả lời tuyệt vời. Tôi đã không nghĩ đến những câu chuyện được viết từ quan điểm của mình, nhưng nó có ý nghĩa với tôi đặc biệt là một nhà phát triển nội bộ, vì tôi cũng phải đóng vai trò là khách hàng. Cảm ơn!
Rebecca Scott

5
Tôi phải không đồng ý. Từ quan điểm này, thực tế mọi thứ - thậm chí là thiết lập IDE của tôi hoặc nhận tài khoản SCM - sẽ trông giống như một "tính năng" ...
Péter Török

2
@Peter - Không nhất thiết. Thiết lập IDE của bạn là nỗ lực không thể tránh khỏi; những thứ khác chỉ rơi vào danh mục "những thứ được hoàn thành". Nhưng thay thế một khung hoặc một cái gì đó là rất khác nhau. Doanh nghiệp nên nhận thức được những gì bạn sẽ làm, lợi ích cho họ và họ nên được phép ưu tiên nó so với công việc khác. Vì vậy, nó là một tính năng trong mọi ý nghĩa.
pdr

4
Chắc chắn là một tính năng nên thêm giá trị cho sản phẩm? Tái cấu trúc không thêm giá trị nào, nó chỉ đơn giản cho phép các nhà phát triển làm việc với nó hiệu quả hơn và giảm nguy cơ lỗi. Giá trị gia tăng từ loại điều này sẽ là một hiệu ứng phụ. Gọi đây là một tính năng đơn giản sẽ là một cách trình bày nó để chủ sở hữu sản phẩm có thể ưu tiên nó hơn.
David Neale

3
-1 Thất bại trong công việc của bạn không bao giờ được coi là một tính năng.
Martin Wickman

18

(Trả nợ) nợ kỹ thuật không phải là một tính năng , bởi vì khách hàng không đủ điều kiện để đưa ra quyết định về nó . Quan trọng nhất là khách hàng không thể quyết định khi nào nó kết thúc và ngoài ra, khách hàng hoàn toàn phụ thuộc vào bạn để giải thích các lợi ích. Theo đánh giá của bạn là có nợ kỹ thuật, và bạn phải quyết định cách khắc phục và khi nào bạn hoàn thành. Nợ kỹ thuật đang ảnh hưởng đến vận tốc (tương lai) của bạn, chứ không phải nhận thức của khách hàng về phần mềm. Nếu không có nợ, bạn sẽ làm việc hiệu quả hơn. Và vận tốc bạn đã đo được cho đến nay là sai, vì bạn nên mất nhiều thời gian hơn để giữ cho mã được giữ nguyên.

Tôi nghĩ bạn nên giao tiếp với khách hàng của mình, nhưng đó không phải là điều gì đó trong tầm kiểm soát của họ. Bạn có thể nói một cái gì đó như thế này: 'Chúng tôi đã sử dụng một vài phím tắt cho đến nay, mà chúng tôi sẽ phải sửa. Điều này có nghĩa là vận tốc của chúng tôi sẽ giảm xuống một chút trong vài lần lặp tiếp theo, nhưng điều này là để đảm bảo chúng tôi có phần mềm có thể bảo trì trong thời gian dài. '

Tiếp tục làm việc trên tính năng của khách hàng cũng sẽ giúp bạn tập trung vào việc cải thiện phần mềm cho khách hàng, thay vì nó trở thành một bài tập học thuật để tìm ra thiết kế hoàn hảo (đôi khi đây là điều mà cá nhân tôi phải vật lộn).


Đồng ý với điều này. Đây không phải là một tính năng vì đó không phải là mối quan tâm của khách hàng và đó không phải là điều họ nên biết (theo kinh nghiệm của tôi, khi khách hàng biết rằng bạn đang tái cấu trúc / sửa mã để trả nợ kỹ thuật, họ coi đó là lãng phí thời gian của họ và tiền , vì vậy tốt nhất là họ không biết bạn làm gì cả).
Wayne Molina

+1 Đây cũng là một quan điểm hợp lệ về vấn đề này. Tôi thích coi nó như một tính năng bởi vì sau đó nó hoạt động tốt với các cơ chế lập kế hoạch và theo dõi thông thường. Thật khó để giải thích cho khách hàng mặc dù.
Steven A. Lowe

+1, đây là câu trả lời duy nhất làm rõ cách tính toán vận tốc sẽ trở nên sai khi bạn tính "các nhiệm vụ phòng kỹ thuật" là các tính năng.
Doc Brown

15

IMHO một nhiệm vụ để loại bỏ nợ kỹ thuật chắc chắn không phải là một tính năng. Nó có thể được đưa vào bộ phận "lỗi", nhưng nó sẽ được kéo dài định nghĩa về các thuật ngữ, vì một lần nữa nó không dẫn đến những thay đổi hành vi mà người dùng có thể quan sát được.

Tôi sẽ chỉ gọi nó là một nhiệm vụ bảo trì. Trong bất kỳ dự án phát triển nào, có rất nhiều nhiệm vụ như vậy, như thiết lập môi trường dev / test, lắp ráp dữ liệu thử nghiệm, hợp nhất các nhánh trong SCM, v.v. Không ai trong số chúng có thể quan sát trực tiếp, nhưng không thực hiện chúng thường xuyên dẫn đến tăng sự phát triển chi phí và tỷ lệ lỗi trong thời gian dài.

Mặc dù có thể không cần thiết phải xử lý chúng như các nhiệm vụ riêng biệt (trừ khi chúng rất lớn và / hoặc bạn không chịu áp lực phải thực hiện các tính năng mới ngay bây giờ). Thông thường có thể tốt hơn nếu chỉ xác định khi một tính năng mới yêu cầu tái cấu trúc / viết bài kiểm tra đơn vị, v.v. và xử lý chúng như là một phần của việc phát triển tính năng mới. Điều này có thể dễ dàng hơn để giải thích cho cả người quản lý và người dùng cuối (nếu họ muốn biết bạn dành thời gian cho việc gì). Cập nhật: Hơn nữa, nó cũng giúp các nhà phát triển tập trung vào giá trị của tái cấu trúc. Thật dễ dàng để thực hiện tái cấu trúc cho mục đích tái cấu trúc, vì vậy việc tập trung vào giá trị gia tăng mà một phép tái cấu trúc cụ thể mang lại từ quan điểm của khách hàng là hữu ích IMHO.


1
Tôi đồng ý rằng việc tái cấu trúc nợ kỹ thuật nên được đưa vào khi được yêu cầu bởi một tính năng mới, nhưng tôi đọc câu hỏi này là thanh toán nợ kỹ thuật độc lập hoặc trước yêu cầu của một tính năng mới.
Steven A. Lowe

@Steven, đó cũng là cách giải thích của tôi. Liên kết hoàn trả nợ kỹ thuật với một tính năng liên quan chỉ là một gợi ý.
Péter Török

3

Tôi sẽ gọi nó là một improvement.

Không phải là một lỗi vì không có gì bị hỏng.

Cũng không phải là một tính năng bởi vì tái cấu trúc sẽ không phải là một yêu cầu của khách hàng của bạn. (vì nó hoạt động!).

Hầu hết các hệ thống theo dõi đều hỗ trợ một loại vấn đề improvementtheo mặc định, nếu không bạn có thể thay đổi các loại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.