Đây là điều mà tôi đã suy nghĩ từ bao giờ kể từ khi tôi đọc câu trả lời này trong chuỗi ý kiến lập trình gây tranh cãi :
Công việc của bạn là đưa mình ra khỏi công việc.
Khi bạn viết phần mềm cho chủ nhân của mình, bất kỳ phần mềm nào bạn tạo sẽ được viết theo cách mà bất kỳ nhà phát triển nào cũng có thể chọn và hiểu với một nỗ lực tối thiểu. Nó được thiết kế tốt, được viết rõ ràng và nhất quán, được định dạng sạch sẽ, được ghi lại ở nơi cần thiết, xây dựng hàng ngày như mong đợi, được kiểm tra vào kho lưu trữ và được phiên bản phù hợp.
Nếu bạn bị xe buýt đâm , bị sa thải, bị sa thải hoặc nghỉ việc, chủ nhân của bạn sẽ có thể thay thế bạn trong một thông báo và anh chàng tiếp theo có thể bước vào vai trò của bạn, nhận mã của bạn và đứng dậy và chạy trong vòng một tuần. Nếu anh ấy hoặc cô ấy không thể làm điều đó, thì bạn đã thất bại thảm hại.
Thật thú vị, tôi đã thấy rằng có mục tiêu đó đã làm cho tôi có giá trị hơn đối với các nhà tuyển dụng của tôi. Tôi càng phấn đấu để được dùng một lần, tôi càng trở nên có giá trị đối với họ.
Và nó đã được thảo luận một chút trong các câu hỏi khác, chẳng hạn như câu hỏi này , nhưng tôi muốn đưa nó lên một lần nữa để thảo luận từ quan điểm trống rỗng hơn " đó là một mùi mã !! " - quan điểm chưa thực sự được đề cập ở độ sâu chưa.
Tôi đã là một nhà phát triển chuyên nghiệp trong mười năm. Tôi đã có một công việc trong đó mã được viết đủ tốt để được chọn bởi một nhà phát triển mới tốt, nhưng trong hầu hết các trường hợp trong ngành, dường như mức độ sở hữu rất cao (cả quyền sở hữu cá nhân và nhóm) là định mức. Hầu hết các cơ sở mã dường như thiếu tài liệu, quy trình và "tính mở" sẽ cho phép nhà phát triển mới chọn chúng và nhanh chóng làm việc với chúng. Dường như luôn có rất nhiều mánh khóe và hack bất thành văn mà chỉ có ai đó biết rõ về cơ sở mã ("sở hữu" nó) mới biết.
Tất nhiên, vấn đề rõ ràng với điều này là: nếu người đó thoát hoặc "bị xe buýt đâm" thì sao? Hoặc ở cấp độ đội: điều gì sẽ xảy ra nếu cả đội bị ngộ độc thực phẩm khi họ ra ngoài ăn trưa trong đội của họ, và tất cả họ đều chết? Bạn có thể thay thế nhóm bằng một nhóm các nhà phát triển ngẫu nhiên mới tương đối không đau đớn không? - Trong một số công việc trước đây của tôi, tôi không thể tưởng tượng điều đó xảy ra. Các hệ thống đầy rẫy những mánh khóe và hack mà bạn " chỉ cần biết ", rằng bất kỳ nhóm mới nào bạn thuê sẽ mất nhiều thời gian hơn chu kỳ kinh doanh có lãi (ví dụ: các bản phát hành ổn định mới) để mọi thứ trở lại. Nói tóm lại, tôi sẽ không ngạc nhiên nếu sản phẩm sẽ phải bị bỏ rơi.
Rõ ràng, mất toàn bộ một đội sẽ rất hiếm. Nhưng tôi nghĩ có một điều tinh tế và độc ác hơn trong tất cả những điều này - đó là điểm khiến tôi suy nghĩ để bắt đầu chủ đề này, vì tôi chưa từng thấy nó được thảo luận trong các điều khoản này trước đây. Về cơ bản: Tôi nghĩ rằng nhu cầu cao về quyền sở hữu mã thường là một chỉ số về nợ kỹ thuật . Nếu thiếu quy trình, giao tiếp, thiết kế tốt, nhiều thủ thuật và hack nhỏ trong hệ thống mà bạn "chỉ cần biết", v.v. - điều đó thường có nghĩa là hệ thống đang dần dần mắc nợ kỹ thuật ngày càng sâu hơn.
Nhưng vấn đề là - quyền sở hữu mã thường được trình bày như một loại "lòng trung thành" đối với một dự án và công ty, như một hình thức tích cực "chịu trách nhiệm" cho công việc của bạn - vì vậy nó không được ưa chuộng để lên án nó. Nhưng đồng thời, khía cạnh nợ kỹ thuật của phương trình thường có nghĩa là cơ sở mã đang ngày càng ít mở hơn và khó làm việc hơn. Và đặc biệt khi mọi người tiến lên và các nhà phát triển mới phải thế chỗ, chi phí nợ kỹ thuật (tức là bảo trì) bắt đầu tăng vọt.
Vì vậy, theo một nghĩa nào đó, tôi thực sự nghĩ rằng đó sẽ là một điều tốt cho nghề nghiệp của chúng ta nếu mức độ cao về nhu cầu sở hữu mã được xem công khai như một mùi công việc (trong trí tưởng tượng lập trình viên phổ biến). Thay vì nó được coi là "nhận trách nhiệm và niềm tự hào" trong công việc, nó nên được xem nhiều hơn là "cố thủ chính mình và tạo ra bảo mật công việc nhân tạo thông qua nợ kỹ thuật".
Và tôi nghĩ rằng thử nghiệm (thử nghiệm suy nghĩ) về cơ bản nên là: nếu người đó (hoặc thực sự là toàn bộ đội) sẽ biến mất khỏi khuôn mặt Trái đất vào ngày mai. Đây sẽ là một tổn thương khổng lồ - có thể gây tử vong - cho dự án, hoặc chúng tôi có thể đưa người mới đến, khiến họ đọc doccos và trợ giúp các tệp và chơi xung quanh với mã trong vài ngày - và sau đó quay lại kinh doanh trong một vài tuần (và trở lại năng suất đầy đủ trong một tháng hoặc lâu hơn)?