2010-01-26 27 views
13

Tôi làm việc trên một dự án nhanh bằng Scrum.Phát triển nhanh như thế nào, bạn xử lý mã "ít được kiến ​​trúc tốt" như thế nào từ kết quả tập trung chạy nước rút

Chạy nước rút đã đến và biến mất và chúng tôi đã đạt được các mốc quan trọng thành công. Hệ thống hoạt động tốt, đủ để đáp ứng các yêu cầu của khách hàng hiện tại.

Tuy nhiên, chúng tôi còn lại với một hệ thống cần phải tái cấu trúc, phần lớn sự phát triển được thực hiện với ít chú ý đến tương lai (thay vì tập trung vào chạy nước rút).

Cách tốt nhất để giải quyết vấn đề này? Sprint (s) dành riêng cho tái cấu trúc?

Trả lời

25

Có, thỉnh thoảng một trong số đó đôi khi không phải là điều xấu. Nhưng nếu bạn nhanh nhẹn sử dụng Scrum, thì có lẽ bạn đang cố gắng theo dõi Phát triển theo hướng thử nghiệm (TDD), và điều quan trọng là bạn nhớ rằng trình tự là màu đỏ xanh- refactor, không chỉ màu đỏ-xanh lá cây. Mã chất lượng kém không phải là đầu ra của sự phát triển nhanh, nhưng của nghèo phát triển nhanh nhẹn.

+0

1 More nếu tôi có thể - nó làm cho tôi buồn khi nhanh nhẹn được một đại diện của mã kém kiến ​​trúc, khi nhanh nhẹn với TDD là * explicitely * được thiết kế để cải thiện kiến trúc mã thông qua cải tiến liên tục. –

+2

Tôi không đồng ý, TDD thường không tương đương với hệ thống kiến ​​trúc tốt. Ngoài ra, TDD nên được sử dụng như một cách tiếp cận "khi thích hợp". Trong khi tôi đồng ý với vật liệu khúc xạ màu đỏ-xanh lá cây, tôi tin rằng một * nhiều * người bị treo lên trên điều này và kết quả là - kéo dài phát triển đáng kể. TDD tuyệt vời để tập trung vào các phần nhỏ của ứng dụng. Nó rõ ràng sẽ mở rộng và phát triển thành một luồng công việc được thiết kế tốt hơn, nhưng điều đó không thực sự luôn dẫn đến thiết kế macro tốt. Sprint cấp độ khúc xạ là rất quan trọng cho việc này. – Chance

+2

@Chance: (1) ** Bất kỳ phương pháp ** nào được áp dụng hoặc áp dụng sai sẽ dẫn đến hệ thống được viết và viết kém. (2) TDD là một phương pháp phát triển thường được áp dụng trong một quá trình nhanh tổng thể, và nhận xét của tôi nếu bạn đọc nó nói về đầu ra của ** phát triển nhanh **, chứ không phải đặc biệt là TDD. Nếu bạn cố gắng sử dụng TDD để giải quyết các vấn đề cấp cao hơn như những kiến ​​trúc, bạn sẽ thất bại. TDD không bao giờ ** tương đương với các hệ thống kiến ​​trúc tốt, giống như một bài kiểm tra lái xe không bao giờ đo khả năng nấu một món trứng tráng! Nhưng TDD thực hiện tốt thì ** không ** làm trầm trọng thêm tình hình. –

3

Nơi tôi làm việc, chúng tôi sẽ chạy nước rút dành riêng cho lỗi và technical debt. Nó hoạt động tốt để cải thiện mọi thứ và có tinh thần cải tiến liên tục ở một mức độ nào đó.

Điều gì đó cũng phải suy ngẫm ở đây là có hay không có những cải tiến mà khách hàng muốn nhưng không yêu cầu. Liệu khách hàng có vẻ thực sự hạnh phúc với hệ thống hiện tại hay nó hoạt động tốt đến mức anh ta không muốn phàn nàn?

7

Bạn không nhất thiết phải dành toàn bộ chạy nước rút để tái cấu trúc, nó cũng có thể hoạt động ở cấp nhiệm vụ. Khi bạn có một câu chuyện yêu cầu làm việc với một số đoạn mã lông, bao gồm một nhiệm vụ tái cấu trúc trong câu chuyện đó như là một loại điều kiện tiên quyết để nhận được bất kỳ điều gì hợp lý được thực hiện với phần đó. Bằng cách đó, bạn thực hiện tiến bộ với các tính năng nhưng cũng nhận được một số tái cấu trúc được thực hiện từng bước.

5

Đối với nhóm của tôi, tôi thường bắt đầu chạy lại tái cấu trúc khoảng ba đến bốn tháng một lần. Xem xét chúng tôi chạy chạy nước rút trong 2 tuần, đó là một lần tái cấu trúc chạy nước rút khoảng bảy lần chạy nước rút.

Tôi chạy chạy nước rút tái cấu trúc giống như bất kỳ lần chạy nước rút nào khác - nghiêm ngặt 2 tuần thời gian giới hạn. Đôi khi chúng tôi thậm chí chạy chỉ 1 tuần tái cấu trúc chạy nước rút (khi một cái gì đó khẩn cấp đến cùng).

Lưu ý về chạy nước rút refactoring: đừng quá tham vọng:

  1. Nhận refactoring đó là một chu kỳ vô hạn: bạn sẽ luôn tìm thấy một cách tốt hơn để làm điều này.
  2. OK nếu bạn chỉ cấu trúc lại 10% những gì cần phải được cấu trúc lại.
  3. Điều chỉnh tái cấu trúc giống như bất kỳ câu chuyện nào khác để bạn buộc phải ưu tiên những gì cần cấu trúc lại và nhận ra vị trí trong mã của bạn cần được tái cấu trúc nhiều nhất. Sự khác biệt duy nhất là cho các câu chuyện tái cấu trúc, tôi cho phép các nhà phát triển đặt ra các ưu tiên.
  4. Một nhà cấu trúc lại một phần sẽ vẫn để mã của bạn ở trạng thái tốt hơn không có trình chỉnh sửa nào cả. Thêm vào đó, nó có xu hướng làm cho việc tái cấu trúc thêm dễ dàng hơn.
  5. Việc tái cấu trúc diễn ra ngay cả bên ngoài các lần chạy nước rút tái cấu trúc khi làm việc trên các câu chuyện, nhưng chỉ khi việc tái cấu trúc là một quả treo thấp không ảnh hưởng đến các câu chuyện được hoàn thành.

Đây là những gì cá nhân tôi sử dụng làm hướng dẫn để tái cấu trúc. Nó không chỉ làm cho tái cấu trúc quản lý mà còn phục vụ như một chỉ báo tốt cho khi bạn đang overdoing nó.

8

Bạn có định nghĩa về 'đã hoàn thành' không?

Khi bạn đã hoàn thành việc mã hóa và đã sẵn sàng để kiểm tra, bạn nên đã gặp nét đội bạn 'làm'

Định nghĩa này nên giữa những thứ khác bao gồm gặp gỡ bạn chuẩn mực chấp nhận/xem xét mã/xét nghiệm/và đáp ứng các tiêu chuẩn mã hóa đã thỏa thuận.

Nếu sau một vài lần chạy nước rút, cơ sở mã của bạn cần được tái cấu trúc nghiêm túc, tôi sẽ đề xuất định nghĩa của bạn về đánh giá nhu cầu đã thực hiện.

Dưới đây là một bài báo từ Scrum Alliance vào việc xác định bạn 'definition of done'

Các vấn đề liên quan