Tôi có nên nói với ai đó rằng cam kết của họ gây ra hồi quy?


115

Khi bạn theo dõi và sửa lỗi hồi quy, tức là một lỗi khiến mã hoạt động trước đó ngừng hoạt động kiểm soát phiên bản, điều đó hoàn toàn có thể tìm kiếm ai đã thực hiện thay đổi đã phá vỡ nó.

Có đáng để làm điều này? Là nó mang tính xây dựng để chỉ ra điều này cho người thực hiện cam kết? Liệu bản chất của sai lầm (trên thang đo sự vô tâm đơn giản đối với sự hiểu lầm cơ bản về mã mà họ đã thay đổi) có thay đổi hay không đó là một ý tưởng tốt?

Nếu đó là một ý tưởng tốt để nói với họ, những cách tốt để làm điều đó mà không gây ra sự xúc phạm hoặc khiến họ phải phòng thủ?

Giả sử, vì lý do tranh luận, lỗi này đủ tinh vi để các thử nghiệm tự động của máy chủ CI không thể phát hiện ra.


119
Đừng gửi CC cho cả nhóm khi bạn gửi cho anh ấy / cô ấy email này.
quant_dev

26
Tất nhiên nói với anh ta, ngoại giao hoặc / và với một trò đùa. Trong công ty tôi đang làm việc tại chúng tôi có một bảng điều khiển với tên của mỗi nhà phát triển. Mỗi khi ai đó mắc lỗi liên quan đến kho lưu trữ (quên cam kết điều gì đó, quên gắn thẻ, không biên dịch, v.v.), nhà phát triển sẽ nhận được "+". Khi anh ấy có "+++", anh ấy phải trả tiền bữa sáng cho ngày hôm sau. Thật kỳ lạ, vì hệ thống đã được đưa vào vị trí nên có ít bữa sáng "bắt buộc" hơn :-)
Jalayn

26
@Jalayn - không phải với một trò đùa - điều đó chỉ gây khó chịu cho mọi người
user151019

29
"Giả sử, vì lý do tranh luận, rằng lỗi này đủ tinh vi đến mức các thử nghiệm tự động của máy chủ CI không thể phát hiện ra." Tại sao không? Đây có phải là một cái gì đó mà bạn không có một bài kiểm tra? Nếu đúng như vậy, điều đầu tiên bạn nên làm là viết một bài kiểm tra (hoặc một vài bài kiểm tra) mà bây giờ vẫn chưa vượt qua khi lỗi được sửa. Nếu nó không thể được kiểm tra, tại sao không?
Thomas Owens

18
@Thomas Owens Vì đó không phải là câu hỏi tôi đang hỏi. :-P Trong một thế giới lý tưởng, sẽ không có lỗi nào xâm nhập vào hệ thống, vì lần đầu tiên chúng tôi viết mã hoàn hảo và sẽ có một bộ kiểm tra tự động đầy đủ trong trường hợp chúng tôi không làm. Tuy nhiên, đây không phải là một thế giới lý tưởng, vì vậy tôi đang hỏi bạn nên làm gì khi một lỗi xâm nhập vào mã của bạn.
Scott

Câu trả lời:


38

Nếu bạn chỉ tiếp cận họ để nói với họ về một sai lầm mà họ đã gây ra thì trừ khi bạn là nhà ngoại giao giỏi nhất thế giới, sẽ rất khó để không chỉ nghe như "Ha! - hãy nhìn vào sai lầm này bạn đã mắc phải!". Chúng ta đều là con người và những lời chỉ trích rất khó thực hiện.

Mặt khác, trừ khi thay đổi là hoàn toàn tầm thường và rõ ràng là sai, tôi thường thấy thật hữu ích khi nói chuyện với người thực hiện thay đổi ban đầu như một phần của cuộc điều tra của tôi chỉ để đảm bảo rằng tôi hoàn toàn hiểu những gì đang diễn ra, do đó tôi thường kết thúc việc xử lý những tình huống này bằng cách đến gặp người đã nói và có một cuộc trò chuyện giống như thế này:

Tôi: Tôi đang làm việc với lỗi này trong đó ... tóm tắt về lỗi ... và tôi nghĩ rằng tôi đã theo dõi vấn đề để thay đổi bạn đã thực hiện. Bạn có thể nhớ những thay đổi này là gì? / bạn có chút thời gian để giải thích về sự thay đổi này không?

Sau đó, một trong hai:

Họ: Chắc chắn, đó là để xử lý ... tình huống mà tôi không biết ...

Hoặc một cái gì đó dọc theo dòng:

Họ: Không xin lỗi tôi không nhớ, có vẻ sai với tôi.

Bằng cách cùng nhau điều tra sự thay đổi / lỗi, người đi làm ban đầu sẽ học hỏi từ những sai lầm của họ mà không cảm thấy như họ đang bị chỉ trích *, và cũng có một cơ hội khá tốt là bạn cũng sẽ học được điều gì đó.

Nếu người đi làm ban đầu không ở xung quanh hoặc bận rộn thì bạn có thể tự mình lướt qua và tự mình tìm ra, tôi thường thấy rằng việc nói chuyện với người ban đầu thực hiện thay đổi sẽ nhanh hơn.

* Tất nhiên điều này chỉ có hiệu quả nếu bạn thực sự quan tâm đến sự giúp đỡ của người khác. Nếu bạn chỉ sử dụng điều này như một phương pháp được ngụy trang mỏng manh để nói với ai đó về một sai lầm mà họ đã gây ra thì điều này có lẽ tồi tệ hơn là chỉ cởi mở về nó.


"Họ: Chắc chắn, đó là để xử lý ... tình huống mà tôi không biết ..." Tôi có một vấn đề với tbh này. Nếu họ đã ghi lại sự thay đổi một cách hiệu quả, thì tình huống đó không phải là điều bạn có thể không biết.
cám dỗ

1
@teemar Đủ công bằng - thay thế "không biết" bằng "chưa nghĩ đến" hoặc bất cứ điều gì bạn muốn - quan điểm của tôi là mặc dù bạn có thể tự mình tìm ra điều này (ví dụ: bằng cách xem tài liệu), nó thường nhanh hơn chỉ để hỏi. Ngoài ra rất nhiều mã không phải là tài liệu tốt như nó phải được.
Justin

170

Hãy quyết đoán không hung hăng. Luôn ưu tiên nói điều gì đó giống như "đoạn mã này không hoạt động" so với "mã của bạn không hoạt động". Chỉ trích mã, không phải người viết mã.

Tốt hơn nữa, nếu bạn có thể nghĩ ra giải pháp, hãy sửa nó và đẩy chúng - giả sử bạn có một hệ thống kiểm soát phiên bản phân tán. Sau đó hỏi họ xem bản sửa lỗi của bạn có hợp lệ cho lỗi mà họ đã sửa không. Nhìn chung, hãy cố gắng tăng cả kiến ​​thức lập trình của bạn và của họ. Nhưng làm điều đó mà không có cái tôi của bạn cản trở.

Tất nhiên, bạn nên sẵn sàng lắng nghe các nhà phát triển khác đến với bạn với cùng một vấn đề và hành động như bạn mong muốn họ đã làm.


107
+1. Phương pháp yêu thích cá nhân: "Trước khi tôi gặp rắc rối với điều này, có lý do gì bạn làm theo cách này không?"
pdr

67
+1. "Chỉ trích mã, không phải người viết mã."
c_maker

11
+1, Đó là lời khuyên rất giống với những gì cố vấn hôn nhân của tôi đã nói với vợ tôi và tôi, khi có khiếu nại về những gì đối tác của bạn đang làm, hãy tránh từ BẠN , nó quá đối đầu.
maple_shaft

3
+1, nhưng tôi không nghĩ từ "bạn" là đối đầu. Cần phải có một sự hiểu biết rõ ràng về quyền sở hữu. Cá nhân tôi đã có người liên tục cam kết mã đã phá vỡ bản dựng vì họ không hiểu rằng họ là người gây ra nó. Tôi thích cách tiếp cận của @ pdr ... tuyên bố này không mang tính đối đầu nhưng nó có chữ "bạn" trong đó.
Tim Reddy

3
Âm thanh như bạn có thể đang giới thiệu một lỗi mới. Khắc phục sự cố của họ có thể đã khắc phục sự cố trước đó mà bạn không biết. Tại sao không đến gặp họ và hỏi tại sao họ viết mã theo cách mà họ đã làm. Nó có thể tiết lộ rằng có một ngôn ngữ kỳ quặc / thiết kế / vm mà nó đang che đậy. Đi và cho họ thấy cái tôi của bạn ["đây là cách tôi có thể làm tốt hơn" sẽ không giúp họ]
monksy

70

Vâng, luôn luôn . Là một lập trình viên, công việc của bạn là học hỏi từ những sai lầm.

Cho họ biết những sai lầm họ mắc phải sẽ giúp họ trở thành một lập trình viên giỏi hơn và giảm cơ hội mắc lỗi trong tương lai. NHƯNG hãy lịch sự và đừng tạo ra vấn đề lớn, tất cả chúng ta đều tạo ra lỗi thường xuyên. Tôi thấy một email lịch sự là một cách rất không đối đầu để cho mọi người biết.


3
Phần "học hỏi từ những sai lầm" không phải là hoàn toàn đúng. Số lượng lớn lỗi là những thứ như thiếu trình xác nhận chẳng hạn. Đây là những điều chỉ xảy ra, ngay cả với các nhà phát triển có kinh nghiệm. Bạn sẽ không học được nhiều từ nó. Đó là lý do tại sao chúng ta cần phải có một QA tử tế.
Falcon

2
@Falcon Cái nhìn sâu sắc "chúng ta cần có một QA đàng hoàng" là một ví dụ về học hỏi từ những sai lầm. Bạn có thể tiếp tục bằng cách suy nghĩ về "tại sao chúng ta không có QA / tại sao QA của chúng ta bỏ lỡ vấn đề này"
MarkJ

2
@Falcon "Đây là những điều vừa xảy ra" <--- đây chỉ là kiến ​​thức bạn có được từ những sai lầm lặp đi lặp lại nhưng tầm thường. Bạn đã có kinh nghiệm khi biên dịch và mọi thứ không hoạt động, điều đầu tiên bạn kiểm tra chính tả và tiếng nổ của mình, trong vòng 10 giây, lỗi đã biến mất. Bạn có kiến ​​thức rằng "đây là những điều vừa xảy ra", đôi khi đó là lý do tại sao bạn có thể gỡ lỗi trong 10 giây chứ không phải 10 giờ.
Gapton

@Gapton và MarkJ: Đó là những điểm tốt! Tôi đã không nghĩ về điều đó.
Falcon

"Là một lập trình viên, công việc của bạn là học hỏi từ những sai lầm." -> "Là một con người ..." Học hỏi từ những sai lầm của bạn không phải là một cái gì đó cụ thể cho lĩnh vực này.
Burhan Ali

23

Cách xây dựng là tìm lỗi, sửa lỗi và thực hiện các hành động để tránh các lỗi tương tự phát sinh trong tương lai.

Nếu nó liên quan đến việc giải thích mọi người làm thế nào để không giới thiệu lỗi, hãy tìm nó.

Một lần, tôi làm việc trong một nhóm mà người quản lý dự án không bao giờ nói với một nhà phát triển cụ thể rằng anh ta đã mắc lỗi: anh ta đã tổ chức một cuộc họp với toàn đội nơi anh ta giải thích rằng một lỗi đã được thực hiện và một quy trình mới đã được xác định để đàn áp Đó là loại sai lầm. Theo cách đó, không ai bị kỳ thị.


4
+1 cho "thực hiện các hành động để tránh các lỗi tương tự phát sinh trong tương lai". Đó là phần quan trọng nhất, IMO.
một CVn

1
The constructive way is to find the bug, fix it and take actions to avoid similar bugs to arise in the future.-> Tiền đề câu hỏi là bạn đã sửa lỗi.
Hugo

1
Có, nhưng hãy cẩn thận về việc giới thiệu quy trình mới. Nếu bạn giới thiệu quá nhiều quá trình và gọi quá nhiều cuộc họp, điều đó sẽ làm chậm tốc độ phát triển và tinh thần của toàn công ty. Tôi đã thấy quá nhiều cửa hàng phản ứng thái quá với sai lầm của một người. Chỉ khi sai lầm là biểu hiện của một quy trình bị hỏng thì quy trình mới phải phù hợp.
Jacob

@jacob - Tôi đồng ý.
mouviciel

19

Nói chung, .

Không ai nên phòng thủ nếu bạn khéo léo về nó. Một cách dễ dàng để xử lý nó là yêu cầu họ kiểm tra lại sự thay đổi của bạn trước khi bạn đưa nó trở lại trung kế (hoặc bất cứ điều gì có liên quan đến hệ thống kiểm soát phiên bản của bạn). Mọi người sẽ đánh giá cao nếu bạn lưu chúng trong vài phút bằng cách sửa các lỗi rõ ràng, nhưng họ sẽ không đánh giá cao nếu bạn sửa một cái gì đó không bị hỏng và cuối cùng phá vỡ mã của họ. Cho họ cơ hội để xem xét sự thay đổi của bạn nói với họ rằng bạn không muốn giẫm lên chân họ và cho họ cơ hội phản đối những thay đổi của bạn.

Nếu đó là một thay đổi lớn thay vì chỉ là một lỗi đánh máy, thì tốt nhất là bạn nên cho tác giả ngẩng cao đầu trước khi bạn cố gắng sửa nó. "Joe, tôi đã hợp nhất công cụ của riêng tôi ngày hôm qua và tìm thấy thứ gì đó mà tôi không chắc là tôi hiểu. Nó trông giống như một lỗi, nhưng tôi muốn chạy nó trước khi tôi làm hỏng mã của bạn. Bạn có thể xem qua tôi?"

Mối quan hệ của bạn với tác giả là một yếu tố lớn. Nếu bạn không phiền tác giả sửa mã của bạn mà không cho bạn biết, và nếu bạn khá chắc chắn rằng cảm giác đó là tương hỗ, thì có lẽ không có gì đáng nói. Nếu đó là người có nhiều kinh nghiệm / thâm niên / trạng thái, bạn sẽ muốn cho họ biết rằng bạn sẽ thay đổi mã của họ. Nếu đó là một người có ít hơn, thì hãy xem xét liệu đó có phải là điều họ cần nghe để tránh lặp lại sai lầm hay nó có thể khiến họ bối rối không cần thiết.

Luôn nhớ rằng nếu bạn có thể tìm ra ai đã kiểm tra "lỗi", họ có thể dễ dàng tìm ra ai đã "sửa" mã của họ. Nếu bạn nghĩ rằng họ sẽ buồn / bực mình / bối rối khi tìm hiểu về sự thay đổi của bạn sau khi thực tế, bằng mọi cách hãy nói với họ trước.

Ngoài ra, sửa lỗi không phải là lựa chọn duy nhất của bạn. Bạn luôn có thể báo cáo lỗi trong trình theo dõi vấn đề của bạn. Chiến thuật một lần nữa được yêu cầu ở đây - báo cáo lỗi giúp toàn bộ nhóm nhìn thấy rõ hơn, nhưng nó cũng mang lại cho tác giả cơ hội sửa chữa lỗi lầm của mình. Báo cáo là tùy chọn tốt nhất nếu bạn không chắc chắn về cách tốt nhất để khắc phục sự cố hoặc nếu bạn không có thời gian để khắc phục.


2
Tôi thích câu "Tôi không hiểu lắm về điều này, bạn có thể giải thích cho tôi cách nó hoạt động không?" tiếp cận. Nếu đó là cố ý (và gần đây), thì lập trình viên ban đầu sẽ có thể giải thích khá rõ cách thức hoạt động của mã. Nếu đó là một lỗi, rất có thể là trong việc giải thích những gì mã làm, anh ấy sẽ phát hiện ra lỗi và ở giữa lời giải thích bạn sẽ nghe thấy một tiếng "oops". Dù bằng cách nào, bất cứ ai cũng khó có thể cảm thấy như họ đang có một ngón tay chỉ vào họ vì một lỗi có thể xảy ra.
một CVn

3
+1 cho "nó trông giống như một lỗi, nhưng tôi muốn chạy nó trước khi tôi làm hỏng mã của bạn."
Russell Borogove

6

Nếu tôi thực hiện một cam kết bao gồm một lỗi, bạn nên nói với tôi. Nếu tôi tìm thấy một cam kết của bạn có lỗi, tôi chắc chắn sẽ nói với bạn.

Chúng tôi chỉ cải thiện khi chúng tôi hiểu lỗi của chúng tôi. Đó là cách chúng tôi sản xuất mã tốt hơn trong tương lai.


5

Bạn đang nhận được câu trả lời tuyệt vời ở đây.

Tôi chỉ có thể thêm một kỹ thuật tôi đã học được từ người quản lý một lần khi tôi mắc lỗi.

Tôi là chuyên gia tư vấn trung niên với bằng tiến sĩ. và cô ấy là người quản lý trẻ mà không có, vì vậy có thể có một độ dốc uy tín nhận thức. Dù sao đi nữa, cô rõ ràng đã có kinh nghiệm với tình huống này và biết cách xử lý nó.

Cô ấy đề cập với tôi với giọng điệu gần như xin lỗi rằng dường như có vấn đề, và liệu tôi có thời gian để xem xét nó không?

Thường thì đủ, lỗi là của tôi và cô ấy biết điều đó. Đó là kỹ năng.


5

Tôi nghĩ rằng có một vấn đề sâu sắc hơn về câu hỏi này. Vâng, người nộp đơn chắc chắn nên được biết về hậu quả của sự thay đổi của họ, để họ có thể hiểu những gì đã xảy ra và không làm điều tương tự một lần nữa. Tuy nhiên, bối cảnh câu hỏi của bạn chỉ ra rằng bạn đã chuẩn bị và gửi bản sửa lỗi mà không có kiến ​​thức của người gửi ban đầu rằng họ thậm chí còn gây ra sự cố. Trong đó có một vấn đề sâu xa hơn: tại sao người nộp đơn không biết về hồi quytại sao họ không tự sửa nó? Tình huống bạn mô tả có thể cho thấy sự thiếu trách nhiệm hoặc cảnh giác đối với người nộp ban đầu, đây là mối quan tâm tiềm năng đối với hiệu suất và động lực chung của họ.

Kinh nghiệm kỹ thuật phần mềm của tôi đã dạy tôi sở hữu tất cả các thay đổi mã của mình, không chỉ các dự án tôi chịu trách nhiệm, trong suốt quá trình sản xuất, bao gồm nhận thức được tác động của chúng, bao gồm cả hệ thống xây dựng của bạn và (rõ ràng) hành vi sản phẩm.

Nếu sự thay đổi của ai đó đã gây ra sự cố, điều đó không có nghĩa là người đó là một kỹ sư tồi, nhưng thường thì họ phải chịu trách nhiệm và tham gia vào việc sửa chữa bất cứ điều gì sai. Ngay cả khi họ không "có lỗi", ví dụ mã của họ đã phát hiện ra một lỗi tiềm ẩn đã tồn tại trong cơ sở mã trong nhiều năm, họ nên là một trong những người đầu tiên nhận thức được vấn đề với sự thay đổi của họ. Ngay cả khi người gửi ban đầu không phải là người phù hợp để sửa lỗi, họ vẫn nên được kết nối chặt chẽ với vòng đời thay đổi của họ.


4

Sức kéo tốt cho câu hỏi của bạn! Mọi người bảo bạn làm gì. Bạn có nên nói không? ĐÚNG! Bất cứ khi nào câu hỏi hỏi "tôi có nên giao tiếp nhiều hơn không?", Câu trả lời hầu như luôn luôn là CÓ!

Nhưng để thêm một cái gì đó khác nhau: tiền đề của bạn là thiếu sót.

Một đồng nghiệp đã thực hiện một cam kết không phá vỡ CI, nhưng dẫn bạn phát hiện ra một vấn đề.

Chúc mừng! Bạn tìm thấy một lỗi mới, không phải là hồi quy. Nghiêm túc, bạn có kiểm tra thủ công mọi kịch bản và dòng mã không được bao gồm trong thử nghiệm tự động (hoặc thủ công được tiêu chuẩn hóa) khi bạn cam kết không?

Bằng mọi cách, hãy để đồng nghiệp của bạn tham gia sửa chữa, với các bài kiểm tra để đảm bảo điều đó không thể xảy ra lần nữa. Bạn là cả hai anh hùng! Nhưng nếu bạn để lại bất kỳ sự đổ lỗi nào trong lời nói hoặc hành động, bạn có trách nhiệm gây ra một trong những căn bệnh tồi tệ nhất của tổ chức: trách nhiệm mà không chịu trách nhiệm.

Nếu bạn thực sự cần tìm một người dân, hãy nghĩ về anh chàng đã phạm mã gốc đã phá vỡ và để lại một cái bẫy cho người bạn không ngờ tới của bạn (rõ ràng là không có đủ phạm vi kiểm tra). Hy vọng rằng đó không phải là bạn!


2

Luôn coi người khác là người tốt hơn bạn, luôn nhìn thấy những đặc điểm tốt của người khác và luôn biết rằng tôi cũng có thể mắc lỗi.

Nói với họ khi đó chỉ có hai bạn.


+1 cho câu cuối cùng. Khen ngợi nơi công cộng, phê bình ở nơi riêng tư.
Scott C Wilson

2

Nếu ai đó bị xúc phạm khi bạn nói rằng anh ta đã phạm sai lầm, điều đó có nghĩa là anh ta nghĩ rằng anh ta là người khôn ngoan nhất trên trái đất và không có lỗi lầm nào, và khi bị chỉ trích, anh ta có cảm giác, như chúng ta đã nói ở Ba Lan, rằng 'vương miện đang rơi xuống đầu của anh ấy'.

Vì vậy, bạn không nên ngần ngại nói rằng ai đó đã phạm sai lầm. Thật là bình thường. Mọi người đều phạm sai lầm, thậm chí là tốt nhất! Chỉ những người không làm gì cũng không phạm sai lầm;)


1
Đó là tất cả trong cách bạn nói với người mà họ đã phạm sai lầm. Tôi luôn mắc lỗi và sẽ rất vui khi ai đó chỉ ra để tôi có thể cải thiện nhưng nếu bạn đến và nói với tôi "Dude, lần cam kết cuối cùng của bạn đã phá vỡ hoàn toàn mã. Tại sao bạn không thể kiểm tra lỗi của mình tốt hơn ? " Tôi tất nhiên sẽ bị xúc phạm.
The Jug

Có, tuy nhiên câu hỏi "Anh bạn, bạn đã chạy thử nghiệm Junit trước khi cam kết chưa?" là, tôi nghĩ, hoàn toàn chấp nhận được :)
Thủy thủ Danubian

+1 cho Chỉ những người không làm gì không có lỗi . Rõ ràng khi nó được khớp nối, nhưng tôi chưa từng thấy nó được đặt gọn gàng như vậy trước đây.
FumbleFingers

2

Ngoài những gì người khác đã nói, hãy đảm bảo rằng HOẠT ĐỘNG của họ đã gây ra lỗi. Chắc chắn đừng đổ lỗi cho người khác về lỗi lầm của bạn. Cho dù bạn có tiếp cận họ một cách khéo léo đến đâu, bạn vẫn sẽ chọc tức họ nếu bạn đổ lỗi cho họ vì những điều họ không làm. (Nói như một người liên tục đổ lỗi cho lỗi của người khác; có lần ai đó đến gặp tôi và nói rằng tôi đã làm điều gì đó hoàn toàn ngu ngốc và tôi đã đưa ra nhật ký cam kết và thấy rằng người cuối cùng chạm vào dòng mã đó là người đã đổ lỗi cho tôi. Bằng cách nào đó anh ta dường như vẫn nghĩ đó là lỗi của tôi vì ban đầu tôi đã viết những dòng này.)


2

Tại sao tôi không thấy một câu trả lời duy nhất ở đây phản ánh bình luận được bình chọn hàng đầu cho câu hỏi ??

Vâng, hoàn toàn nói với họ về điều đó, nhưng đừng làm điều đó trước toàn đội

Tiếp cận nhà phát triển 1: 1 và chỉ ra lỗi. Đừng làm cho nó một vấn đề lớn. Tôi luôn nghĩ rằng chỉ ra lỗi trước toàn đội là một ý tưởng tồi. Nó có thể làm việc cho một số nhà phát triển, nhưng nó không dành cho tất cả mọi người và có thể có tác động tiêu cực. Hãy nhớ rằng, tất cả chúng ta đã ở trong đôi giày của họ vào lúc này hay lúc khác, và như câu trả lời được bình chọn hàng đầu thứ 2 nói, bạn học được từ những sai lầm của mình

Tôi thường thấy nó hoạt động tốt nhất khi bạn bắt đầu bằng một lời khen và sau đó gặp lỗi ... một cái gì đó như "cách khắc phục bạn đã thực hiện rất tốt, NHƯNG nó dường như đã bị hỏng x, y, z" hoặc "cảm ơn vì đã làm , b, c, NHƯNG dường như đang gây ra x, y, z "


2

Câu trả lời đơn giản: Có.

Câu trả lời dài hơn: Công việc cuối cùng của tôi là tại một công ty Agile đã sử dụng TDD với các công cụ CI để đảm bảo rằng những gì trong repo SVN của chúng tôi đều tốt, mã làm việc mọi lúc. Khi một cái gì đó được cam kết, máy chủ TeamCity của chúng tôi đã nhận được một bản sao, biên dịch và chạy thử nghiệm đơn vị. Nó cũng chạy thử nghiệm tích hợp hàng giờ. Nếu một cái gì đó được cam kết khiến CI thất bại, mọi người đều nhận được e-mail cho biết bản dựng đã bị hỏng dựa trên cam kết của một người cụ thể.

Điều đó không phải lúc nào cũng nắm bắt mọi thứ; Khốn cho chúng tôi, chúng tôi đã không thực thi bảo hiểm mã và ngay cả khi một cái gì đó được bao phủ bởi các bài kiểm tra đơn vị hoặc tích hợp, họ có thể không thực hiện đủ mã đó. Khi điều đó xảy ra, bất cứ ai có nhiệm vụ khắc phục sự cố đã biết (nếu QA bắt được) hoặc lỗi (nếu, dun-dun-dun, các khách hàng đã làm), sẽ chạy "đổ lỗi" (cho thấy ai đã sửa đổi lần cuối từng dòng của một tập tin mã) và xác định thủ phạm.

Gọi ai đó ra để kiểm tra mã bị hỏng không nhất thiết là điều xấu. Họ đã không thực hiện đúng công việc của mình và họ hoặc người khác phải quay lại và sửa lỗi. Việc này xảy ra mọi lúc; một thỏa thuận lớn như thế nào tùy thuộc vào mức độ dễ dàng sửa chữa, liệu lỗi có cho thấy người đó thậm chí không biên dịch hoặc chạy mã được đề cập và văn hóa doanh nghiệp nói chung. Điều quan trọng trong toàn bộ điều là một cái gì đó được học bởi người đã phạm sai lầm; nếu việc xây dựng bị phá vỡ do cùng một người lặp đi lặp lại, có một vấn đề sâu sắc hơn với người đó phải được giải quyết. Các bản dựng phá vỡ mọi lúc cho thấy có vấn đề với giao tiếp hoặc kiến ​​thức về quy trình của nhóm.


Khi mới bắt đầu, tôi đã làm việc, chúng tôi có một hệ thống tương tự. Điều buồn cười là khi bạn kiểm tra một số mã và các thử nghiệm thất bại, hệ thống xây dựng sẽ đổ lỗi cho lỗi thử nghiệm đối với người kiểm tra lần cuối trong một chỉnh sửa trên dòng kiểm tra / biên dịch thất bại. Vì vậy, nếu tôi xóa một chức năng mà bạn đang sử dụng và mã của bạn bây giờ không thể xây dựng. Build-Bot sẽ đổ lỗi cho bạn. Việc gọi tên chửi rủa và thân thiện sau đó đảm bảo rằng các lỗi xây dựng đã được khắc phục kịp thời và sự khó chịu của mọi người được hướng vào Build-Bot.
Stuart Woodward

2

Đúng. Yêu cầu người đó xem lại bản sửa lỗi mà bạn đã thực hiện đối với mã. Đôi khi tôi đã phát hiện ra rằng lỗi của người khác thực sự là một phần khó khăn của mã với một số hậu quả không thể nhìn thấy khác nếu lỗi được khắc phục đơn giản.


1

Có rất nhiều yếu tố chơi.

  • Làm thế nào nghiêm trọng là lỗi?
  • Mối quan hệ thâm niên giữa bạn và người phá vỡ là gì?
  • Làm thế nào bận rộn / căng thẳng là đội?
  • Bộ ngắt hoạt động trong phần cơ sở mã của họ hay của bạn?
  • Làm thế nào chắc chắn rằng bạn là một lỗi thực sự, và chắc chắn rằng bạn đã sửa lỗi như thế nào?

Nếu sự cố không đáng kể - lỗi đánh máy / suy nghĩ / cắt và dán - và trình ngắt là một đồng nghiệp bận rộn và bạn tự tin khi đánh giá vấn đề của mình, có lẽ bạn không cần phải chú ý đến vấn đề của họ. (ví dụ foo.x = bar.x; foo.y = bar.y, foo.z = bar.y).

Trong hầu hết các trường hợp khác, nên đề cập đến vấn đề này. Trong trường hợp không nghiêm trọng, bạn không cần phải làm gián đoạn những gì họ đang làm; chờ đợi và làm điều đó qua bữa trưa hoặc khi chạy vào chúng trong phòng nghỉ.

Tuy nhiên, nếu bản chất của lỗi cho thấy sự hiểu lầm nghiêm trọng (của nền tảng triển khai, chính sách cục bộ hoặc thông số kỹ thuật của dự án), tuy nhiên, hãy đưa nó lên càng sớm càng tốt.

Nếu bạn không chắc chắn về đánh giá của mình, hãy yêu cầu họ xem xét sửa lỗi của bạn, đặc biệt nếu đó không phải là mã mà bạn rất quen thuộc. (Tôi thực sự khuyên bạn nên nhóm nhà phát triển của mình áp dụng chính sách 'bạn thân mã' trong đó mọi thay đổi đều được xem xét bởi một người khác trước khi đăng ký, dù sao đi nữa.)


1

Điều gì xảy ra nếu bạn không nói với họ?

Nhược điểm

Họ có thể mắc lỗi tương tự ở những nơi khác vì họ không hiểu rằng điều đó đang gây ra vấn đề. Không chỉ vậy mà sẽ có thêm thời gian không cần thiết để liên tục sửa lỗi tương tự. Bạn không thể học hỏi từ những sai lầm mà bạn không biết bạn đã nade.

Thứ hai, họ nghĩ rằng họ đang làm một công việc tốt hơn họ. Khi mọi người không nhận thức được vấn đề của họ, họ khó có thể bị đổ lỗi vì nghĩ rằng họ đang làm tốt khi họ không làm. Ngay cả khi vấn đề là một sai lầm bất cẩn, mọi người tạo ra ít hơn trong số họ khi họ nhận thức được rằng những sai lầm được chú ý.

Tiếp theo nếu ai đó không tìm kiếm ai đã làm điều đó, làm sao bạn biết nếu bạn có một nhân viên có vấn đề cụ thể luôn luôn bất cẩn hoặc có những hiểu lầm cơ bản về sản phẩm? Một người có trách nhiệm muốn điều đó tiếp tục trong một đội mà anh ta hoặc cô ta được liên kết?

Nếu bạn sửa chữa và tiếp tục mà không thảo luận về nó, bạn có chắc chắn, bạn đã sửa nó một cách chính xác? Đôi khi nó là các bài kiểm tra cần thay đổi khi một yêu cầu thay đổi. Nếu đó là một cái gì đó không phải là một lỗi đánh máy khá nhỏ, bạn có thể thực sự chắc chắn một trong hai bạn có giải pháp chính xác không? Bạn có thể sẽ phá vỡ mã của anh ta mà không cần tư vấn.

Ưu

Mọi người không cảm thấy xấu hổ hay khó chịu với bạn vì đã chỉ ra những sai lầm của họ.

Tôi đoán rằng tôi đi xuống mạnh mẽ để nói với họ nhưng làm điều đó độc đáo và riêng tư. Không cần phải sỉ nhục công khai. Nếu người đó liên tục mắc lỗi tương tự hoặc đang phạm phải những sai lầm nghiêm trọng thể hiện sự thiếu hiểu biết, thì người giám sát cũng cần phải được nhận thức.

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.