[XP] Sở hữu Tập thể mã nguồn

Sở hữu tập thể mã nguồn

Sở hữu tập thể mã nguồn động viên mọi người đóng góp ý tưởng mới cho tất cả các phần dự án. Bất cứ lập trình viên nào cũng có thể thay đổi bất kỳ dòng mã lệnh để thêm chức năng, sửa lỗi, cải tiến thiết kế hoặc tái cấu trúc. Không một ai trở thành “cổ chai” đối với những thay đổi cả.

Sở hữu mã nguồn tập thể thật khó để hiểu lúc đầu. Gần như không thể mường tượng ra toàn bộ nhóm có thể chịu trách nhiệm về thiết kế hệ thống. Việc không có một kiến trúc sư trưởng để giữ cho một vài ngọn lửa đang cháy có thể không có khả năng hoạt động.

Nhưng thật không bình thường khi hỏi kiến trúc sư thì lại nhận được câu trả lời sai. Đó không là lỗi của người lãnh đạo các lập trình viên. Tâm trí một người không thể kiểm soát được bất cứ hệ thống không hiển nhiên. Những lập trình viên phải thay đổi hệ thống một cách khó khăn mà không  lợi gì cho tầm nhìn của của kiến trúc sư trưởng. Liệu bạn có nhận ra nó hay là thiết kế của bạn đã được phân bố trong đội của mình. Nếu toàn đội có trách nhiệm về quyết định thiết kế, thì họ có nên được nhận thẩm quyền không?

Hướng giải quyết cho mỗi nhà phát triển là tạo kiểm thử đơn vị cho mã lệnh của họ. Phát hành vào kho lưu trữ mã lệnh (code repository) tất cả mã lệnh bao gồm cả kiểm thử đơn vị chạy 100%. Kiểm thử tự động kiểm soát hết mã thêm vào, lỗi đã sửa, và tính năng cũ khi thay đổi. Bây giờ, ta có thể tin tưởng kiểm thử sẽ theo dõi toàn bộ kho lưu trữ mã lệnh. Trước khi mã lệnh được phát hành nó phải vượt qua toàn bộ kiểm thử.

Một khi diễn ra điều này, bất kể ai cũng có thể thay đổi bất cứ phương thức nào của bất kỳ lớp nào và phát hành nó vào kho lữu trữ mã lệnh khi cần. Khi kết hợp với tích hợp thường xuyên các nhà phát triển hiếm khi nhận ra một lớp đã được mở rộng hay sửa chữa.

Trong thực tế thì sở hữu tập thể thường đáng tin cậy hơn là để cho một người chịu trách nhiệm những lớp cụ thể. Đặc biệt là khi một người có thể rời dự án bất cứ khi nào.

 Nguồn XP

Người dịch: Nguyễn Văn Tèo |  Biên tập: Phạm Anh Đới

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *