Lời khuyên về việc thuyết phục sếp rằng đánh giá mã là một điều tốt [đã đóng]


20

Giả sử một người làm việc trong một công ty giả định có một số nhà phát triển hiếm khi làm việc cùng nhau trong các dự án và ông chủ không tin rằng các đánh giá mã là đáng giá thời gian và chi phí.

Các đối số khác nhau có thể được trình bày trong kịch bản này sẽ mô tả lợi ích của việc xem xét mã là gì? Hơn nữa, các đối số tiềm năng chống lại đánh giá mã ở đây là gì và làm thế nào để có thể phản biện?

Câu trả lời:


25

Nếu bạn phải tự biện minh cho những thứ cơ bản như vậy, bạn có một vấn đề lớn hơn.

Bạn là chuyên gia, nhóm của bạn nên quyết định những gì bạn sử dụng thực hành. Có lẽ bạn nên bắt đầu thuyết phục sếp về nguyên tắc rất quan trọng đó.

Sếp của bạn có nhiệm vụ quyết định LÀM GÌ và quan trọng hơn là TẠI SAO làm việc đó. Bạn nên chăm sóc của CÁCH xây dựng nó

(điều đó không có nghĩa là bạn không thể đề xuất những gì và tại sao làm những việc trong công ty của bạn). Một ông chủ tuyệt vời nên khuyến khích nhân viên của mình tham gia vào chiến lược doanh nghiệp)

Tuy nhiên đây là cách tôi xem các đánh giá mã ngang hàng:

Bởi vì lập trình là một công việc trí tuệ rất chuyên sâu, một người không thể đảm bảo mọi thứ đều hoàn hảo. Do đó, xem xét mã đảm bảo rằng:

  • lỗ hổng hoặc lỗi được tìm thấy trước khi ứng dụng được vận chuyển
  • giáo dục lẫn nhau liên tục giữa các nhà phát triển (gần như miễn phí) đã đạt được
  • tiêu chuẩn tôn trọng mã để bảo trì ứng dụng dễ dàng hơn
  • mã phù hợp với yêu cầu

Mọi người đều đang nhận được lợi ích trực tiếp của nó:

  • nhà phát triển tăng kiến ​​thức của anh ấy / cô ấy và có thể truyền lại cho đồng đội của anh ấy / cô ấy
  • khách hàng / người dùng có ít lỗi hơn và chi tiêu ít hơn cho việc bảo trì
  • ông chủ có nhiều khách hàng / người dùng hạnh phúc hơn và chi tiêu ít hơn trong các khóa đào tạo

1
Bạn có thể đề cập đến việc nó bắt được trung bình 65% lỗi và không chỉ vậy mà nó còn bắt được rất nhiều lỗi mà các bài kiểm tra đơn vị thường không làm được.
Spudd86

Bạn có một liên kết đến nghiên cứu để chia sẻ, vì vậy tôi có thể sử dụng nó trong tương lai?

2
Từ slide 21 trong bài thuyết trình của Greg Wilson có tên "Bits of Evidence" , anh khẳng định "Việc kiểm tra nghiêm ngặt có thể loại bỏ 60-90% lỗi trước khi thử nghiệm đầu tiên được thực hiện. (Fagan 1975)" Anh ấy có những trích dẫn tuyệt vời. :)
Scott Whitlock

7

Đánh giá mã có thể khiến nhiều nhà phát triển quen thuộc với cùng một mã. Đây là một điều tốt. Điều gì sẽ xảy ra nếu tác giả ban đầu quyết định nghỉ việc hoặc tệ hơn, một cái gì đó xấu xảy ra với anh ta. Nếu đánh giá mã được thực hiện thường xuyên, những người khác có thể tiếp quản nhanh chóng.

Các đồng nghiệp có thể phát hiện ra các lỗi tiềm ẩn hoặc các vấn đề về hiệu suất trong quá trình xem xét mã. Điều này làm giảm QA và nỗ lực phát triển. Điều này có thể bù cho chi phí bổ sung liên quan đến đánh giá mã.

Mã đánh giá thúc đẩy chia sẻ kiến ​​thức. Các đồng nghiệp có thể nói về những cách tốt hơn hoặc cách thay thế để làm công cụ. Bản thân tôi đã học được rất nhiều từ các đồng nghiệp của mình thông qua các đánh giá mã.

Đánh giá mã giúp củng cố các hướng dẫn mã hóa theo sau bởi nhóm. Nếu đội không có, điều đó cần phải được sửa chữa. Mã có nghĩa là được viết một lần và đọc nhiều lần. Hướng dẫn mã hóa là một bước để mã có thể đọc được. Mã có nghĩa là có thể đọc được bởi các đồng nghiệp. Cách nào tốt hơn là có các đánh giá mã để đảm bảo khả năng đọc?


4

Rất nhiều câu trả lời tuyệt vời ở đây. Một số điều tôi sẽ thêm:

Khi bạn phải giải thích mã cho người khác, thường trong quá trình giải thích, nhà phát triển có thể đột nhiên nhận ra anh ta có lỗi. Tôi đã thấy điều đó xảy ra hết lần này đến lần khác rằng nhà phát triển ngừng chết trong các bài hát của anh ấy và nói "oh chờ đã sai" trước khi người đánh giá hiểu rõ điều đó đủ để thấy lỗi.

Biết mã của bạn sẽ được người khác kiểm tra giúp bạn có thêm động lực để sử dụng các tiêu chuẩn mã hóa (giúp bảo trì dễ dàng hơn) hoặc sử dụng các phương pháp "cao bồi" ít hơn mà không ai ngoại trừ chính bạn (và đôi khi không phải là chính bạn) sẽ hiểu. Bạn không muốn xấu hổ khi bạn hiển thị mã của mình cho người khác, vì vậy bạn sẽ làm việc đó tốt hơn ngay từ đầu. Do yếu tố lúng túng, nó để lại ít mã nhận xét: "Tôi không biết tại sao điều này hoạt động nhưng không gây rối với nó." trong cơ sở mã.

Các nhà phát triển có nhu cầu giám sát hoặc đào tạo sâu rộng hơn dễ dàng được xác định. Những kẻ bất tài hoàn toàn cũng vậy. Càng sớm tìm thấy và giải quyết các vấn đề về hiệu suất, toàn bộ nhóm càng có lợi và chất lượng của ứng dụng sẽ càng cao. Thật tốt khi tìm hiểu thông tin này trước khi bạn đưa anh chàng mới cần đào tạo và phân công anh ta vào phần khó nhất, quan trọng nhất trong ứng dụng của bạn.

Đôi khi chỉ là vấn đề sửa chữa một nhận thức sai lầm sẽ lưu lại sai lầm tương tự ở một loạt các nơi khác. Ví dụ, gần đây chúng tôi đã xem xét một số SQL cho các báo cáo phức tạp và thấy rằng một số nhà phát triển mới của chúng tôi có cùng sự hiểu lầm về nơi tìm một phần thông tin cụ thể trong cơ sở dữ liệu (phải thừa nhận rằng nơi họ chọn có vẻ hợp lý là vấn đề thiết kế cơ sở dữ liệu chúng tôi cũng cần sửa) sẽ rất quan trọng để viết chính xác tất cả các báo cáo. Bằng cách tìm ra vấn đề và sửa nó trong các báo cáo đầu tiên họ đã viết, nó đã lưu lỗi tương tự xảy ra trong phần còn lại của các báo cáo. Và một cái gì đó mà các nhà phát triển lớn tuổi (trong thời gian làm việc ở đây không phải tuổi tác) đã quá quen với việc họ không nghĩ rằng nó cần được giải thích.

Người cao niên có thể học từ mã tinh vi hơn được viết bởi người cao niên (những người có xu hướng hiểu rõ hơn về bẫy lỗi và trường hợp cạnh) và người cao niên có thể học từ các kỹ thuật mới được sử dụng bởi đàn em mà họ chưa tiếp xúc.

Đôi khi những người làm việc trên các phần khác nhau nhưng có liên quan của ứng dụng nhận ra rằng họ đang đi theo hai hướng khác nhau và loại trừ lẫn nhau. Ooops, dễ dàng hơn để sửa chữa bây giờ.

Thật không dễ dàng để lén lút trong các giá trị được mã hóa cứng sẽ thay đổi theo thời gian chỉ để làm cho mọi thứ hoạt động ngay bây giờ. Điều này ngăn chặn rất nhiều lỗi trong tương lai, chẳng hạn như những thứ thay đổi vào đầu mỗi năm tài chính.

Đôi khi tôi đã bị mắc kẹt trong cách làm một cái gì đó và học một kỹ thuật mới, đó là những gì tôi muốn từ việc xem xét mã của người khác.

Nếu bạn quen với cách các thành viên khác trong nhóm của bạn nghĩ (xem xét mã nào sẽ giúp bạn hiểu điều đó), thì việc khắc phục sự cố sau này sẽ dễ dàng hơn vì bạn sẽ bắt đầu với cách hiểu về cách Joe sẽ tiếp cận với loại đó vấn đề.


2

Cũng như chia sẻ kiến ​​thức được đề cập bởi những người khác, hãy tìm các ví dụ về các lỗi đã được tìm thấy trong quá trình đánh giá mã và đo thời gian họ sửa chữa - điều này bao gồm thời gian nghiên cứu vấn đề và phát hành phiên bản vá cũng như thời gian thực tế sửa lỗi.

Lấy chi phí này, có lẽ sẽ mất ít nhất vài ngày nỗ lực, và tương phản với thời gian bạn đã dành cho việc xem xét mã và hành động dựa trên kết quả.

Điều này sẽ cho sếp của bạn thấy rằng các đánh giá mã có giá trị chi phí.


2

Nhận xét mã có thể:

  • Dẫn đến sự phát triển của một thư viện mã có thể được chia sẻ
  • Cung cấp quy ước đặt tên thống nhất cho các biến, hằng, bảng cơ sở dữ liệu
  • Trợ giúp hợp lý hóa quy trình
  • Cũng có thể dẫn đến đánh giá quá trình khám phá và thu thập yêu cầu
  • Dẫn đến sự phát triển của các vật dụng chúng ta có thể bán dưới dạng addons cho các ứng dụng. ( Xây dựng nó một lần được trả tiền mỗi khi chúng tôi thực hiện nó )
  • Dẫn đến sản phẩm mới

Nhược điểm

  • Chúng tôi không có thời gian cho việc đó

Nếu đó là sự thật thì tại sao chúng ta luôn có thời gian để làm hai hoặc ba lần cho cùng một khách hàng nhưng chúng ta không bao giờ có đủ thời gian để làm điều đó ngay lần đầu tiên.


0

Nếu bạn cần tham khảo một tài liệu thì tôi sẽ không tìm kiếm gì ngoài "Hoàn thành mã". Trong đó, cuốn sách mô tả có bao nhiêu lỗi được bắt gặp với các bài kiểm tra đơn vị so với đánh giá ngang hàng. Thật đáng kinh ngạc. Các bài kiểm tra đơn vị, nếu bộ nhớ phục vụ tôi đúng, chỉ bắt được ~ 30% tất cả các lỗi trong khi các đánh giá ngang hàng chính thức bắt ~ 70%.

Lấy thông tin đó, cho anh ta thấy trong cuốn sách và kháng cáo về mặt tài chính của anh ta. Phải mất nhiều thời gian hơn và tốn kém hơn nhiều để cho phép các lỗi thông qua hơn là bắt chúng sớm.


0

Làm thế nào về việc chạy một bản demo (dự án loại "chuột mickey" một tuần) được thực hiện song song bởi hai nhóm, một nhóm sử dụng xem lại mã, nhóm còn lại thì không.

Vào cuối tuần, đánh giá chất lượng công việc của mỗi nhóm, tôi khá chắc chắn rằng những người đánh giá mã sẽ ra mắt càng tốt.


4 người trong mỗi đội = 8 người = 2 tháng lương. Điều này sẽ mất khá nhiều sự thuyết phục khéo léo trong nhiều tổ chức :)
Michael Durrant


0

Khi trình bày nó, tập trung vào bức tranh lớn hơn.

Liệt kê các lợi ích (mã tốt hơn, ít lỗi hơn, ít viết lại hơn, v.v.) và đề cập đến đánh giá mã là một trong những kỹ thuật mà bạn muốn giới thiệu.

Tôi sẽ làm cho nó trở thành một phần của bức tranh lớn hơn về làm thủ công phần mềm

  • mã đánh giá
  • kiểm tra
  • hồi tưởng
  • chia sẻ kiến ​​thức
  • giáo dục
  • đánh giá sách
  • bài giảng vào giờ ăn trưa

Hãy chuẩn bị để tự làm rất nhiều công việc trong việc thúc đẩy các nguyên tắc này.
Hầu hết tất cả đều không mong đợi sự thuyết phục là một điều "một cuộc họp và thực hiện".
Bạn nên xây dựng trường hợp theo thời gian với sự bình tĩnh và nhất quán. Khi bạn cảm thấy khó chịu nhất bởi các lỗi đã được sửa chữa bằng các kỹ thuật tốt hơn, thường là thời điểm tồi tệ nhất để đưa ra trường hợp của bạn vì bạn có nhiều khả năng quá xúc động và ít lý trí hơn. Điều này có vẻ hơi trái ngược nhưng đó là những gì tôi đã học được hơn 30 năm lập trình. Rõ ràng là ymmv.

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.