Nếu ai đó cung cấp cho bạn một tuyên bố chưa được xác minh liên quan đến các hoạt động phát triển phần mềm, bạn có phản hồi với trích dẫn cần thiết hay không? [đóng cửa]


14

Gần đây tôi đã tham dự một bài giảng được đưa ra bởi Greg Wilson (Nhà khoa học trưởng về phần mềm mộc). Từ tóm tắt:

Ý tưởng tuyên bố về thực tiễn phát triển phần mềm nên dựa trên bằng chứng vẫn còn xa lạ với các nhà phát triển phần mềm, nhưng điều này cuối cùng đã bắt đầu thay đổi: bất kỳ học giả nào tuyên bố rằng một công cụ hoặc thực tiễn cụ thể làm cho việc phát triển phần mềm nhanh hơn, rẻ hơn hoặc đáng tin cậy hơn bây giờ dự kiến ​​sẽ sao lưu yêu cầu đó với một số loại nghiên cứu thực nghiệm.

Nhìn chung, bài giảng rất nhiều thông tin và khiến tôi suy nghĩ khá sâu sắc về cách tiếp cận phát triển của mình. Đặc biệt, bây giờ tôi thấy mình đang tìm kiếm trích dẫn để sao lưu rất nhiều báo cáo. Trước đây, tôi đã có thói quen đơn giản là lặp lại những sự thật được cung cấp, có lẽ là một lưu ý về tinh thần để kiểm tra nó sau.

Nói một cách thẳng thắn, tôi đã được cả tin .

Đây là một ví dụ được lấy từ bài giảng:

"Nếu hơn 25% mã cần tái cấu trúc, thì việc viết lại nó sẽ nhanh hơn".

Nghe có vẻ hợp lý, nhưng nó có đúng không? Nghiên cứu ủng hộ điều này ở đâu? Có đúng với tất cả các ngôn ngữ? Và như thế.

OK, hoàn toàn có thể đưa điều này đến mức cực đoan và không tin bất cứ ai trừ khi bạn tự mình lấy nó từ những nguyên tắc đầu tiên. Đó là cách điên rồ (hoặc có thể là toán học ;-)). Nhưng, nếu ai đó đến với bạn bằng một tuyên bố dọc theo dòng chữ "Này, bằng cách thực hiện điều này trong [ngôn ngữ chọn thời điểm], chúng tôi sẽ có thể tăng năng suất bằng cách [chọn nhiều trong số 10]%", bạn có xu hướng chỉ chấp nhận nó, hoặc bạn sẽ yêu cầu bằng chứng đã được chứng minh?

Nếu đó là cái sau (và tôi hy vọng là vậy) thì

  1. bạn sẽ đi đâu để tìm bằng chứng này?
  2. bạn sẽ nghiêm ngặt đến mức nào?

Nói tóm lại, nếu ai đó đưa ra cho bạn một tuyên bố chưa được xác minh, bạn sẽ trả lời với "cần dẫn nguồn" chứ?


2
Trong bao nhiêu lĩnh vực, ngoài khoa học, con người có đòi hỏi bằng chứng thực nghiệm không? Theo quan sát của tôi, không nhiều như tôi muốn.
David Thornley

1
Làm thế nào về một số ý kiến ​​về các phiếu bầu gần? "Quá cục bộ" và "Không phải là một câu hỏi thực sự" không thực sự tự giải thích trong bối cảnh này.
Inaimathi

1
Vâng, tôi cũng muốn biết lý do đằng sau số phiếu gần.
Robert Harvey

@Robert Cảm ơn bạn đã chỉnh sửa. Ít viêm hơn về phản xạ.
Gary Rowe

1
Câu hỏi tuyệt vời. Tôi đã thấy giáo sư Wilson phát biểu tại CUSEC năm ngoái và cũng bị ảnh hưởng rất nhiều bởi những gì ông nói. Phần tốt nhất là khi một sinh viên thách thức anh ta trích dẫn yêu cầu của mình rằng các yêu cầu nên được trích dẫn, và anh ta đã làm mà không bỏ lỡ một nhịp.
Matthew đọc

Câu trả lời:


3

Vấn đề với các loại báo cáo này là ngay cả khi bạn có bằng chứng thực nghiệm hỗ trợ cho yêu cầu bồi thường, sẽ rất khó để xác định liệu nghiên cứu dẫn đến bằng chứng áp dụng cho tình huống hiện tại của bạn.

Hầu hết mọi thứ trong nghề đều có một sự cảnh báo, hoặc một số vì vậy mọi cải tiến ở một nơi đều có khả năng trở thành một sự bất đồng ở một nơi khác.

Những người trong chiến hào biết sự khác biệt thông qua kinh nghiệm và thường không có kinh phí / thời gian / tài nguyên để cố gắng chứng minh điều đó thông qua một nghiên cứu khoa học.

Những người cố gắng chứng minh điều đó thông qua một nghiên cứu khoa học rõ ràng có nguồn lực để dành cho những nghiên cứu đó và do đó rất có khả năng bán cho bạn một cái gì đó vì vậy tôi sẽ nói rằng bạn nên áp dụng nghiêm ngặt hơn kinh nghiệm cá nhân của mình vào bất cứ điều gì tuyên bố được hỗ trợ bởi nghiên cứu thực nghiệm.

Nếu ai đó nói với bạn "Nếu hơn 2% mã cần tái cấu trúc, bạn sẽ nhanh chóng viết lại", bạn sẽ biết rằng đó là sai như thể ai đó đã nói với bạn "Chỉ khi hơn 98% mã cần tái cấu trúc, thì đó là nhanh hơn để viết lại nó ". Số lượng thực tế phụ thuộc vào những gì bạn đang làm và khoảng cách lý tưởng của mã hiện tại.

Ý tưởng rằng sau một thời điểm nhất định, việc tái cấu trúc hạt nhân dễ dàng hơn rõ ràng là đúng trong nhiều trường hợp, nhưng tỷ lệ phần trăm thực tế là một ví dụ mà bạn cần xem xét qua lăng kính về kinh nghiệm và tình huống hiện tại của chính bạn.


+1 để phân tích kỹ lưỡng về tuyên bố ví dụ. Bạn có thực sự nghĩ rằng tất cả các nghiên cứu khoa học có một góc độ thương mại phải được khai thác, mặc dù? (Tha thứ cho sự ngây thơ của tôi nhưng tôi thực sự tò mò về điều này)
Gary Rowe

@Gary: Tất cả mọi thứ đều hoàn hảo không, nhưng rất khó nếu không thể xác định được sự thiên vị của một nghiên cứu từ bên ngoài. Chắc chắn là như vậy khi không có số liệu thống nhất bao gồm toàn bộ tình huống
Bill Bill

8
Nếu ai đó cung cấp cho bạn một tuyên bố chưa được xác minh liên quan đến các hoạt động phát triển phần mềm, bạn có phản hồi với trích dẫn cần thiết hay không?

Không, tôi đăng nó ở đây và xem nếu nó nhận được bất kỳ upvote. Bằng chứng xã hội tốt hơn là không có bằng chứng!


2
Bạn có thể nhận được một nơi nào đó với mô hình này, nhưng tôi rùng mình khi nghĩ về một lập trình viên trích dẫn giấy. Đây là một nguồn.
Inaimathi

@Inaimathi: ít nhất là đáng tin cậy như wikipedia, nếu không muốn nói là như vậy!
Steven A. Lowe

+1 để tìm kiếm bằng chứng - luôn luôn lời khuyên tốt. Có bao nhiêu upvote trước khi bạn tin nó? ;-)
Gary Rowe

1
@Gary: trên SO, mười. trên trang web này, hai mươi. trên meta, một trăm - trừ khi nó liên quan đến kỳ lân và bánh quế, trong trường hợp đó phải là sự thật
Steven A. Lowe

Yêu tài liệu tham khảo kỳ lân - phải lấy cho tôi một trong số chúng
Gary Rowe

4

Nhiều nhà phát triển dựa trên quyết định từng khoảnh khắc của họ về kinh nghiệm trong các chiến hào làm việc với mã và khách hàng mà mã đó phục vụ.

Khi một lớp hoặc phương thức trở nên bị phân mảnh bởi các sửa lỗi và yêu cầu thay đổi của khách hàng đến mức không thể nhận ra, đôi khi, một nhà phát triển sẽ đưa ra quyết định viết lại thay vì tái cấu trúc, theo lý thuyết rằng anh ta sẽ tiết kiệm thời gian và công sức trong thời gian dài , bởi vì mã kết quả sẽ có chất lượng cao hơn.

Loại trí tuệ kinh nghiệm này là thứ mà bộ phận nhân sự gọi là "vốn nhân lực". Đó là một trong những điều làm cho các nhà phát triển có kinh nghiệm trở nên có giá trị và là một trong những lý do khiến các công ty tốt làm mọi thứ để cố gắng và duy trì tuổi thọ của người dân của họ.

Có vẻ không công bằng hoặc thậm chí thực tế khi yêu cầu các nhà phát triển có kinh nghiệm đưa ra một nghiên cứu và dữ liệu thực nghiệm làm bằng chứng cho thấy các kỹ thuật của họ là hợp lệ. Kinh nghiệm không hoạt động theo cách đó. Trái lại, kinh nghiệm là một cái gì đó của "cảm giác." Trong thế giới tái cấu trúc, chúng ta thường gọi nó là "mùi".

Cuối cùng, một tuyên bố như "Nếu hơn 25% mã cần tái cấu trúc, thì việc viết lại nhanh hơn" không thể được chứng minh là hoạt động trong mọi trường hợp, vì vậy, tuyên bố [cần dẫn nguồn] thực sự là một cách để thông báo cho người lập trình giáo điều. tìm cách ép buộc quan điểm của anh ấy với người khác rằng không phải lúc nào cũng là "Con đường của anh ấy hay xa lộ".


Ahh, vốn nhân lực và nguồn nhân lực tốt, những cụm từ sinh đôi tuyệt vời đó thúc đẩy quá trình phi nhân hóa đang diễn ra ở khắp mọi nơi ...
Aaronaught

@Aaronaught: Việc thực hiện một khái niệm đôi khi có thể thiếu từ vựng cao cả được sử dụng để mô tả nó. Đó là lý do tại sao những người hoài nghi đôi khi yêu cầu bằng chứng.
Robert Harvey

Nó sẽ không phải là một điều tốt cho việc thực hiện các khái niệm cụ thể bị thiếu?
Aaronaught

+1 để sử dụng tốt biện pháp phòng thủ "cần dẫn nguồn" chống lại một lập trình viên giáo điều - rất hữu ích
Gary Rowe

4

Tôi nghĩ với bất cứ điều gì bạn không bao giờ biết cho đến khi bạn thử nó. Ngay cả với bằng chứng để sao lưu một tuyên bố, luôn có thể bẻ cong sự thật theo lợi ích của quan điểm của bạn. Điều đó được nói rằng bạn không nên thử mọi thứ mới chạm vào nhau. Hãy phán xét tốt nhất của bạn. Hãy nhớ rằng, nếu một cái gì đó nghe có vẻ quá tốt là có thể đúng. Luôn tự hỏi tại sao bạn cần phải áp dụng một cái gì đó? Bạn phải đạt được gì? Liệu nó có ý nghĩa từ một doanh nghiệp tiềm năng? Không bao giờ mù quáng ngoại trừ một cái gì đó trên đức tin.


+1 để hỏi "tại sao bạn cần chấp nhận một cái gì đó". Đôi khi lùi lại từ cạnh hàng đầu là một điều tốt.
Gary Rowe

Tôi thấy rằng quá thường xuyên các nhà phát triển bị cuốn vào điều tốt nhất tiếp theo mà không phân tích nó và hiểu làm thế nào nó có thể mang lại lợi ích và ngăn chặn họ. Tôi đã thấy các tình huống trong đó các tổ chức chấp nhận một cái gì đó như Asp.Net MVC trên Asp.Net Webforms nhưng không chấp nhận TDD.
Carlosfocker

3

Ví dụ từ bài giảng là một heuristic, một quy tắc của ngón tay cái và không có gì nữa. Điều đó nên được ngầm rõ ràng.

Heuristic giống như bất cứ điều gì khác: chúng phải tuân theo một bối cảnh nhất định và phụ thuộc vào bất kỳ số giả định không có căn cứ nào, và tính hữu dụng của chúng có thể rất không xác định. Càng nhiều phán đoán tùy tiện đi vào việc tìm kiếm chúng hữu ích cũng như đi vào xây dựng chúng ở nơi đầu tiên.

Điều đó có nghĩa là họ không có giá trị? Tôi sẽ không nói như vậy cả.

Heuristic là một trong những cách tiếp cận mà chúng ta có thể thực hiện để giải quyết các vấn đề hoàn thành NP, và trong nhiều khía cạnh, công nghệ phần mềm tự nó là một vấn đề hoàn chỉnh NP.


Điểm tốt. =)
Pablo

1

Nó phụ thuộc. :) Khi tuyên bố của ai đó mâu thuẫn lặp đi lặp lại, phản ánh và kinh nghiệm được xác minh cá nhân, thì có, tôi muốn xem một số loại tài liệu tham khảo của một nghiên cứu. Mặt khác, nếu ai đó lặp lại một ý tưởng bạn đã thấy và sống nhiều lần, sẽ không có nhiều phản ứng kích động (không có nghĩa là ý tưởng đó không thể sai được).

Ví dụ, cuốn sách "Hoàn thành mã" trích dẫn điểm số của các nghiên cứu trong mỗi chương để đưa ra quan điểm của mình, đôi khi về các vấn đề dường như nhỏ (như thụt đầu dòng và khoảng cách, hoặc độ dài tên biến). Tôi nhớ lại một số nhà phát triển (trẻ hơn) mà tôi đã giới thiệu cuốn sách nghĩ rằng mức độ chi tiết và bằng chứng đó là ngớ ngẩn. Nhưng một vài tháng sau với kinh nghiệm mã hóa sản xuất nhiều hơn và sau một vài đánh giá mã, một số nhà phát triển tương tự đã thành thật thừa nhận rằng có, ngay cả số lượng không gian thụt lề cũng không thành vấn đề. Ý kiến ​​tốt vấn đề. Vấn đề đóng gói. Vân vân.

Mặt khác, khi một nhà cung cấp tuyên bố một số IDE mới có năng suất cao hơn 50%, phản ứng đầu tiên của tôi là tăng $% ^ &!


1
Nó phụ thuộc, nhưng ngay cả các ví dụ hoàn chỉnh mã phụ thuộc vào tình huống của bạn. Ví dụ: Nếu bạn có một trình định dạng phân tích cú pháp và công cụ tìm khác biệt của bạn bỏ qua khoảng trắng thì đối số thụt lề trở nên khá tầm thường
Bill

1
+1 cho ví dụ về Mã hoàn thành (cũng đúng với Phát triển nhanh của cùng tác giả Steve McConnell).
Gary Rowe

@Bill Thật thú vị khi công nghệ cải thiện các vấn đề cần bằng chứng trước đó biến mất. Tôi tự hỏi nếu đây là một hiệu ứng làm giảm nhu cầu của chúng tôi để yêu cầu bằng chứng?
Gary Rowe

1
@, Tôi không nghĩ điều này (theo nghĩa chung) là một trường hợp cải thiện nhiều như biến thể. Các ví dụ hoàn chỉnh về mã chắc chắn đề cập đến một bộ công cụ cụ thể tại một thời điểm cụ thể để cả hai đều có loại, nhưng loại "khi nào cần cấu trúc lại" có liên quan nhiều đến tình huống hơn là với công nghệ. Hãy nghĩ về một phần mềm quan trọng an toàn trong một chiếc xe so với một giải pháp xử lý dữ liệu. Các yêu cầu thử nghiệm sẽ cao hơn rất nhiều trên hệ thống an toàn, vì vậy điểm tái cấu trúc luôn luôn sẽ cao hơn rất nhiều trước khi có lợi nhuận ròng.
Hóa đơn

1

Có phải đó là thứ gì đó phụ thuộc vào rất nhiều biến số vô hình (biến không có cách đo lường khoa học)?

Theo tôi, họ đang nói về một phương pháp thực nghiệm để đo lường cảm xúc. Một cái gì đó mà thậm chí Spock không thể thực hiện được. =)


1
+1 cho một thú vị về nó. Đặt ví dụ len lỏi (cố ý) sang một bên, nếu ai đó nói với bạn rằng Rails là một khung tốt hơn SpringMVC, bạn sẽ đi đến đâu để xác định tính hợp lệ của nó?
Gary Rowe

Như Benjamin Graham đã nói trong cuốn sách kinh điển về đầu tư ("Phân tích bảo mật"), các công cụ (đầu tư) đó phải được đo lường theo hai khía cạnh khác nhau, nhưng cô đơn: Định tính (vô hình, cảm xúc) và Định lượng (số thực, toán học , tính toán, logic).
Pablo

Định lượng là những gì bạn đang đo thông qua một phương pháp khoa học. Định tính là những gì bạn đo lường thông qua bản năng của riêng bạn. Không thể đánh giá cảm xúc so với cảm xúc mà không có cảm xúc về phân tích.
Pablo

Nói ít nhất, khi chúng ta nói về ý kiến ​​và sự khác biệt trong chúng, chúng ta không thể đồng ý về một phương pháp hợp lý, khoa học và hữu hình để đo lường sự trừu tượng.
Pablo

Câu trả lời của tôi là chúng ta chỉ có thể đo lường các khía cạnh kỹ thuật, không phải là những suy nghĩ / ý kiến ​​trừu tượng. Ngoài ra, tôi không có ý nói như một ass. Những bài đăng đó không có nghĩa là một loại phản ứng ngu ngốc.
Pablo
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.