Là nhà phát triển phần mềm bỏ qua chất lượng / tiêu chuẩn tốt hơn cho công ty? [đóng cửa]


10

Các nhà phát triển phần mềm chọn không đặt tối ưu hóa mã, tiêu chuẩn và thực tiễn tốt nhất làm ưu tiên hàng đầu, tạo mã hữu ích hơn so với các nhà phát triển muốn lo lắng về tối ưu hóa, thực hiện các tiêu chuẩn mã hóa và thực hành trên hoàn thành nhiệm vụ đúng hạn?

Làm thế nào để các phương pháp khác nhau so sánh khi nói đến đánh giá hiệu suất cá nhân?

Làm thế nào để những phong cách so sánh trong đánh giá ngang hàng?

Cách tốt nhất để tác động đến nhóm của bạn để triển khai các thực tiễn tốt hơn trong SDLC là gì?


2
@Haylem - Tôi nghĩ rằng chỉnh sửa ban đầu tôi thực hiện là tốt hơn. Nếu tiêu đề giống với câu đầu tiên, thì điểm của tiêu đề là gì?
BlackJack

1
@BlackJack Tôi đã mang lại tiêu đề của bạn và tinh chỉnh câu hỏi thêm một chút. Tôi nghĩ rằng ba chúng tôi đã bị bắt gặp dậm chân trên cùng một bài trong lịch sử chỉnh sửa. Nên tốt bây giờ.
Thomas Owens

4
SE không phải là nơi dành cho những lời ca ngợi về sếp của bạn. Tất cả chúng ta đều có ông chủ và hầu hết chúng ta đều có ai đó trong chuỗi chỉ huy mà họ nghĩ không thuộc về nơi đó (Không phải tôi, tôi nghĩ họ rất tuyệt / không thích). Nói về họ ở đây không tốt.
SoylentGray

1
@Chad: Mặc dù tôi đồng ý với tất cả những gì bạn nói, tôi không hoàn toàn chắc chắn rằng OP có ý chê bai ông chủ của mình (trực tiếp).
haylem

2
@Chad: Tôi đã đọc điều đó và trong khi tôi có thể hiểu được phản ứng của bạn, Jitendra không nói rằng tất cả những gì anh ta đã làm là sửa mã của mọi người. Nhưng tôi đồng ý với lập luận của bạn - và một số câu trả lời khác - rằng việc cung cấp các chức năng trước tiên có thể có tầm quan trọng lớn hơn một sản phẩm chưa hoàn thành với chất lượng hoàn hảo. Không ai sẽ phải duy trì một sản phẩm sẽ không bao giờ nhìn thấy ánh sáng vì nó bị giết sớm hoặc thất bại vẫn được sinh ra.
haylem

Câu trả lời:


32

Không, họ sẽ chỉ nhận được sự tôn trọng từ chủ sở hữu của dự án thời điểm này.

Họ sẽ bị vùi dập trong nhiều năm bởi:

  • người duy trì trong tương lai,
  • người thử nghiệm trong tương lai,
  • chủ dự án tương lai,
  • quản lý tương lai,
  • và khá nhiều người liên quan đến codebase trong tương lai.

Họ thậm chí có thể nhận được điều trị tương tự từ:

  • những người thử nghiệm hiện tại,
  • các nhà văn tài liệu kỹ thuật hiện tại.

@Ivan: Cảm ơn. Suy nghĩ lâu dài luôn chiến thắng.
haylem

@haylem - Tôi đồng ý với bạn vì mọi người đang thay đổi công việc nhanh chóng. vì vậy mã tốt hơn sẽ hữu ích cho những người mới tham gia để nhanh chóng vượt qua mã
Jitendra Vyas

Tất cả đều đúng, nhưng vì hiệu suất của họ, họ sẽ bị kéo dài ra xa khỏi những người đồng cảnh sống với nỗi đau còn sót lại. Đáng buồn nhưng là sự thật!
anon

6

Sai phân đôi: phẩm chất là trực giao.

                Chất lượng cao Chất lượng thấp

Phác thảo TUYỆT VỜI

Iffy không được hưởng lợi

5
Iffy tốt hơn hay tệ hơn Sketchy?
HLGEM

1
@HLGEM: Có lợi nhuận luôn tốt hơn không có lợi.
Donal Fellows

mà bỏ qua các chi phí trong tương lai được tạo ra bởi chất lượng sơ sài
Rudolf Olah

1
Chỉ định lợi nhuận chỉ ở mặt sau của nhà phát triển là một sự đơn giản hóa. Làm thế nào về quản lý sản phẩm, cơ sở hạ tầng triển khai? Không phải họ cũng có một vai trò trong lợi nhuận?
DavidS

5

Không. Thực tiễn tốt nhất là tốt nhất bởi vì theo định nghĩa , chúng giúp các dự án được thực hiện chính xác hơn, trong thời gian ngắn hơn, với sự điều chỉnh nhanh hơn, vì vậy việc bỏ qua chúng được đảm bảo để giảm lợi nhuận. Tất nhiên, người quản lý của bạn có thể quy định các thực tiễn mà họ cho là tốt nhất, nhưng thực tế là không, hoặc họ có thể đánh giá sai những gì khách hàng sẽ trả cho và những gì không - sau đó tất cả các cược đã tắt.

Tiêu chuẩn mã hóa là khó khăn hơn; có thể quy định quá nhiều chi tiết cho các lập trình viên của bạn, dẫn đến giảm hiệu quả. Nhưng với kinh nghiệm, việc đưa ra các hướng dẫn hữu ích từ quản lý vi mô qua đường hậu môn trở nên khá dễ dàng, do đó, áp dụng tương tự: các thực hành tốt nhất thực tế luôn luôn có giá trị, các thực hành tốt nhất giả thường không.

Tối ưu hóa mã thường không có giá trị thực hiện trừ khi bạn đã đo được các tắc nghẽn của mình là gì, xác nhận rằng thực hiện tối ưu hóa là cần thiết và đo lường rằng thủ thuật thông minh của bạn thực sự đáp ứng yêu cầu về hình thức. Mặt khác (phần lớn) nó không đáng làm, và do đó không tối ưu.


6
Thực tiễn tốt nhất không giúp hoàn thành tất cả các dự án một cách chính xác trong thời gian ngắn hơn. Chúng chỉ đơn giản là những thứ đã được quan sát để hoạt động tốt trên hầu hết các dự án hầu hết thời gian.
Thomas Owens

2
Tuân thủ mù quáng với "thực tiễn tốt nhất" hoặc cách làm việc tốt nhất được tuyên bố của bất kỳ ai khác là quy trình phát triển mã hóa sùng bái hàng hóa đối với quy trình mã hóa. Bạn phải có khả năng hiểu ý nghĩa của một thực tiễn, cho dù đó có thực sự là điều tốt nhất trong tình huống của bạn hay không và nếu không, điều gì nên thay thế nó.
Blrfl

5

Tôi có đồng ý với các nhà phát triển không quan tâm đến việc tối ưu hóa và thực hành mã không? Không.

Họ có làm công việc họ cần làm không? Đúng.

Một doanh nghiệp là kiếm tiền, và cách duy nhất để kiếm tiền là phát hành sản phẩm. Điều này thường có nghĩa là các dự án có lịch trình nghiêm ngặt, có nghĩa là những gì có thể là cách tốt nhất để làm một cái gì đó có thể không phải là cách nhanh nhất để làm một cái gì đó.

Mặc dù tôi không đồng ý với phong cách phát triển này, công ty có thể được coi là đáng kính nếu sản phẩm được phát hành.


Tôi đã quan tâm rất nhiều về tối ưu hóa mã trong công việc cuối cùng của mình nhưng các nhà phát triển đồng nghiệp của tôi không quan tâm nhưng họ đã thực hiện nhiều dự án hơn và khi tôi nói chuyện với người quản lý dự án, ông nói Khách hàng muốn dự án đúng hạn và ông không bao giờ thấy mã được viết như thế nào
Jitendra Vyas

1
@Jitendra - Nếu bạn dành cả ngày để tối ưu hóa những thứ đã được viết và không có chức năng mới nào thì tôi cũng sẽ không vui. Trừ khi việc tối ưu hóa mang lại cho bạn thứ gì đó ngoài số lượng dòng và ký tự trong mã nguồn ít hơn thì bạn không hoàn thành bất cứ điều gì.
SoylentGray

3
@Jitendra - Tôi không nói là không. Và viết mã của bạn một cách dễ đọc là tuyệt vời. Đi xung quanh 'sửa chữa' xem mã người khác khi bạn không có nhiệm vụ của riêng mình.
SoylentGray

1
@Chad - Đây không phải là viết lại mã của riêng tôi hoặc sửa mã của người khác mà là lần đầu tiên viết mã với sự chú ý đúng đắn về khả năng đọc tốt, nhận xét đúng cho nhà phát triển trong tương lai và sử dụng các cách thực hành tốt nhất giúp mã có thể sử dụng lại và tất cả đều mất thời gian sau đó viết mã lộn xộn mà chỉ nhà phát triển ban đầu mới có thể hiểu được. Mã tốt luôn luôn mất thời gian.
Jitendra Vyas

4
@Ivan: Tôi đã có kinh nghiệm trực tiếp với tâm lý này. Nó đi như thế này. Công ty bắt đầu một dự án greenfield. Hotshot Developer X ném các thứ lại với nhau càng nhanh càng tốt, sử dụng số lượng lớn ctrl + cctrl + v. Sản phẩm ra mắt theo thứ tự rất ngắn. Công ty đã sẵn sàng với Nhà phát triển X. Báo cáo lỗi và yêu cầu tính năng đến. Nhà phát triển X không thể theo kịp và bị đuổi việc / chuyển sang công việc tiếp theo. 3 năm phát triển tiếp theo là cánh cửa quay vòng của các nhóm kỹ sư mới, những người không thể đạt được bất kỳ tiến bộ nào và Công ty X mất tất cả các lợi thế thị trường mà nó từng có.
Greg Burghardt

4

Không, và tôi sẽ tìm ra con đường nhanh nhất cách xa công ty nói rằng đánh giá cao những tật xấu đó.


2
+1 cho ngắn gọn, chính xác và chính xác. Một công ty không quan tâm đến các tiêu chuẩn chất lượng là ngu ngốc, không biết gì hoặc lừa đảo.
Wayne Molina

3

Có và không, đó là một chút mơ màng nhưng đó là một thực hành tốt nhất và không phải là một thực hành hoàn hảo. Tốt nhất là bạn nên theo dõi họ liên tục, nhưng sẽ luôn có một tình huống mà doanh nghiệp muốn đưa ra nhu cầu của mình trước nhu cầu sản phẩm của bạn.

Bạn sẽ bị ghét bởi những người bảo trì nhưng được sếp yêu quý.


3

Thực tiễn tốt nhất có phần giống như lẽ thường, mọi người đều đồng ý rằng mọi người nên biết điều đó cho đến khi bất kỳ hai người bắt đầu thảo luận chi tiết. Không có hai người hoàn toàn đồng ý về định nghĩa và không có nguồn sự thật logic nào áp dụng cho tất cả các tình huống.

Bạn đang viết hệ thống hướng dẫn cho một vệ tinh không gian (có thể bạn không)? Vậy thì địa ngục Không có mã chất lượng / hiệu suất kém không bao giờ được chấp nhận trong loại công việc này.

Bạn đang viết một trang web vứt đi để thúc đẩy tiếp thị một lần (có thể bạn sẽ không làm điều này hoặc bạn sẽ không đặt câu hỏi, nhưng nó có nhiều khả năng hơn vệ tinh)? Sau đó, Hell Yes, đưa mảnh đó ra khỏi cửa thông qua bất kỳ phương tiện cần thiết nào để đáp ứng thời hạn, giám đốc tiếp thị tiếp theo có thể sẽ làm một cái gì đó khác với một công ty khác. NHỮNG GÌ BẠN KHÔNG PHẢI LÀ NGHỆ THUẬT HOẶC KHOA HỌC - NHẬN ĐƯỢC TRẢ TIỀN.

Mọi thứ khác ở giữa: có thể thương lượng, đặc biệt là miễn là nhà phát triển sẵn sàng hỗ trợ ban đầu.

Cho đến khi lần thứ hai xảy ra bất cứ điều gì linh thiêng mà bạn thích xảy ra và anh ấy / cô ấy / họ / nó xác định các thực tiễn phát triển theo cách kỳ diệu, sẽ có chỗ để tranh luận về bất kỳ dự án nào không chịu trách nhiệm trực tiếp cho các quyết định sống và chết không phải là quá quan trọng để được dùng một lần

Tất cả mọi thứ bên ngoài các thực tiễn tốt nhất được dán nhãn quan trọng trong cuộc sống thường giống như chính sách của công ty, thông số kỹ thuật của khách hàng hoặc ý kiến ​​cá nhân. Nhiều người trong số họ là ý kiến ​​cá nhân mà nhiều người hiện đang đồng ý, nhưng điều đó không làm cho nó trở thành một hướng dẫn bất di bất dịch cho mọi tình huống.


2

Họ kiếm được bao nhiêu tiền cho công ty. Nếu có một mức độ xem lại mã được đề cập, chi phí bảo trì sẽ tăng lên và ai đó sẽ không vui. Chi phí bảo trì dài hạn cao sẽ tốn kém hơn so với thực hiện trước.

Bao nhiêu sự tôn trọng họ có thể là trường hợp cụ thể. Tại một số điểm, tuy nhiên, sẽ có người chú ý.


2

Không quan tâm đến những điều này có thể làm cho công ty có nhiều tiền hơn trong thời gian ngắn, nhưng có thể khiến công ty tốn nhiều tiền hơn trong dài hạn về việc sửa lỗi nhiều hơn và mã hóa bảo trì.

Đôi khi một công việc nhanh chóng và bẩn thỉu có thể là cần thiết nếu có sự vội vàng với các công ty cạnh tranh để đưa các sản phẩm tương tự ra thị trường cùng một lúc, nhưng chi phí tương lai của các hành động đó nên được xem xét cẩn thận.


2

Tất cả phụ thuộc vào khách hàng.

Một khách hàng thích nhanh và bẩn (và thường rẻ hơn) không quan tâm rằng nó sẽ gặp vấn đề trong tương lai.

Hãy nghĩ đến việc xây dựng tủ.

Một số sẽ trả tiền, và đánh giá cao, chất lượng tốt tủ tùy chỉnh được xây dựng. Họ không bận tâm đến chi phí thêm của ngăn kéo gỗ cứng và phần cứng đỉnh cao. Họ không bận tâm sẽ mất thêm một tuần hoặc thậm chí một tháng để xây dựng và cài đặt mọi thứ.

Nhiều người sẽ không. Nhiều người sẽ lựa chọn những tấm ván rẻ tiền được sản xuất hàng loạt thứ bạn có được từ một cửa hàng hộp lớn. Họ muốn chúng được cài đặt trong 2 ngày. Một khoảng cách nhỏ ở đây và hoàn toàn chấp nhận được. Họ không quan tâm rằng họ sẽ sụp đổ sau 10 năm nữa.

Vì vậy, nếu người quản lý của bạn đang khen ngợi nhà phát triển hoàn thành công việc nhanh chóng và bẩn thỉu thì khách hàng của bạn sẽ không muốn chất lượng cao hoặc người quản lý đang nói dối khách hàng.

Chỉ có thời gian mới trả lời. Làm những gì các nhà quản lý muốn hoặc tìm một công việc khác.


1
tất nhiên phần mềm có thể đi kèm với sự hỗ trợ vì vậy làm cả hai có thể là một lựa chọn. tức là chúng tôi sẽ là người đầu tiên tiếp thị với v1 mặc dù đã biết vấn đề tuy nhiên số tiền chúng tôi kiếm được từ hình thức này sẽ cho phép chúng tôi khắc phục các sự cố trong tương lai, v.v.
jk.

1

Không bao giờ. IMO mã tối ưu hóa, thực hành tốt nhất, thực tế khéo léoMOST điều quan trọng cần có trong một codebase; không có nó, toàn bộ nó biến thành bùn và được giữ lại bằng băng keo. Đó là một thiết kế không bền vững. Nó giống như bỏ qua một khối u vì nó nhỏ và bạn đang khỏe mạnh; chắc chắn bây giờ bạn khỏe mạnh nhưng vài năm sau nó trở thành thiết bị đầu cuối vì bạn đã bỏ qua nó quá lâu.

Tôi không chỉ không đồng ý với các nhà phát triển không quan tâm đến những điều này, mà tôi không tôn trọng họ để khởi động. Một cách chắc chắn để khiến tôi cân nhắc rời khỏi một tổ chức, bất kể thời gian tôi ở đó bao lâu, là được bao quanh bởi một nhóm trong đó tôi là người duy nhất (nếu không phải là người duy nhất trong toàn công ty) quan tâm về các khái niệm kỹ thuật phần mềm thích hợp.


1

Đọc tốt: http://www.joelonsoftware.com/items/2009/09/23.html

Nhưng IMHO, một người đàn ông thực hành tốt nhất là một cơn ác mộng khác của người đàn ông. Và mọi cơ sở mã không tầm thường sẽ là cơn ác mộng đối với người ngoài.

Bất cứ điều gì bạn nghĩ, đừng là một thằng ngốc về nó.

EDIT: Tôi không bảo vệ bất kỳ vị trí nào, tùy thuộc vào nhiệm vụ mà tôi có thể nghiêng về hai bên.


Phụ thuộc vào IMO "thực hành tốt nhất". Những thứ như có các bài kiểm tra (không nhất thiết là TDD nhưng nói chung là kiểm tra tự động), tuân theo các SOLIDnguyên tắc, sử dụng các mẫu thiết kế, sử dụng trừu tượng / giao diện là cơ sở mà bất kỳ nhà phát triển có thẩm quyền nào cũng nên làm.
Wayne Molina

Nhiều như tôi thích các bài kiểm tra ... chúng không phải là cơ sở.
CaffGeek

1

Tốt hơn cho công ty? Nó phụ thuộc.

Đối với một công ty khởi nghiệp có số tiền hạn chế, hãy hoàn thành nó và đưa nó ra khỏi đó - không thành vấn đề nếu nó lộn xộn, có thể được khắc phục sau này khi có nhiều tài nguyên hơn.

Đối với một sản phẩm trưởng thành, nơi có nhiều người dùng dựa vào chất lượng của phần mềm, mọi thứ nên được thực hiện "đúng cách".

Tốt hơn cho các nhà phát triển cá nhân? Thật ra nó không liên quan. Chỉ cần làm giống như những gì đồng nghiệp của bạn đang làm và để quản lý đối phó với bụi phóng xạ - đó không phải là công việc của bạn. Nếu bạn đang sửa chữa những người khác tào lao suốt thời gian bạn S see bị coi là chậm, và bạn sẽ là người vẫn ở đó trong khi những người khác đã được thăng chức trên bạn. Tham gia chương trình hoặc ra ngoài trong khi bạn có thể nếu nó tệ.


"không thành vấn đề nếu nó lộn xộn, điều đó có thể được sửa chữa sau này khi có nhiều tài nguyên hơn." Về lý thuyết, chắc chắn. Trong thực tế, điều này không bao giờ xảy ra bởi vì một khi bạn đẩy thứ gì đó ra thì bạn bị mắc kẹt trong việc duy trì nó và thêm những thứ mới, vì vậy bạn không bao giờ có tài nguyên để quay lại và sửa nó.
Wayne Molina

Tôi không đồng ý. Điều đó chắc chắn đã xảy ra trên nhiều dự án web vừa và nhỏ mà tôi đã tham gia và cũng có nhiều trường hợp nổi tiếng hơn của các công ty quay trở lại và tái cấu trúc cơ sở mã của họ theo những cách chính - ví dụ: Twitter chuyển từ Ruby sang Scala, Facebook và nhiệm vụ của họ tối ưu hóa ngôn ngữ PHP, v.v. Trên thực tế, tôi khá chắc chắn rằng hầu hết các ứng dụng trưởng thành thành công (web và máy tính để bàn) mà chúng ta sử dụng hàng ngày không có nhiều mã chung với tổ tiên v1 của chúng.
timh

Có lẽ, nhưng trong sáu năm phát triển công ty, tôi đã tìm thấy chính xác một công ty có thể cấu trúc lại mã theo thời gian; mọi nơi khác chưa bao giờ có tài nguyên để "sửa chữa những gì không bị hỏng" ngay cả khi mã không thể quản lý được.
Wayne Molina

0

Phụ thuộc vào nhà phát triển và dự án / tình huống.

Thời gian bất thường đòi hỏi các biện pháp phi thường.

Vì vậy, nếu tôi cần một thứ gì đó được giao ngay bây giờ và một người nào đó là ứng dụng java cấp doanh nghiệp kỹ thuật quá mức, sử dụng không dưới 14 khung từ thông dụng mới nhất trong khi một kịch bản python đơn giản sẽ làm công việc tồi tệ hơn như nhà phát triển cắt góc và nghĩ mã lỗi sẽ làm trong thời gian bình thường.

Một phần của việc trở thành một nhà phát triển là linh hoạt. Bạn không nên làm nô lệ cho các công cụ của mình và làm theo một cách mù quáng các thực hành - sẽ luôn có trường hợp chúng làm bạn thất vọng. Biết khi nào nên phá vỡ và bẻ cong các quy tắc là một trong những điều đi kèm với rất nhiều kinh nghiệm và có giá trị.

Trong trường hợp của bạn - nếu anh ta mang lại nhiều giá trị hơn bạn vì tốc độ là rất quan trọng, ngay cả sau khi bao gồm chi phí bảo trì tăng lên thì anh ta xứng đáng được bồi thường tốt hơn. Mặt khác - nếu bạn bị mắc kẹt với việc dọn dẹp mớ hỗn độn của anh ấy - bạn có vấn đề giao tiếp với ban quản lý.

Đó là từng trường hợp. Ngoại trừ phong cách mã hóa - không có lý do nào ở đó.


0

Tôi xin lỗi nhưng tôi sẽ không đồng ý với hầu hết các câu trả lời cho câu hỏi này, ngoại trừ câu trả lời hàng đầu.

Giá trị chính của phần mềm là nó linh hoạt.

Tôi không nghĩ bạn nên viết lại mã của người khác mà không có lý do. Nếu bạn phải thay đổi một mô-đun vì bất kỳ lý do nào để triển khai tính năng của mình, thì bây giờ, bạn đang tốt hơn hoặc xấu hơn, chủ sở hữu của mô-đun đó. Thay đổi nó, viết lại một số, viết lại tất cả.

Không bao giờ sản xuất chất lượng thấp về tính linh hoạt bao giờ. Không có gì gọi là vứt bỏ bất cứ thứ gì trong phần mềm. Nếu khách hàng nói tạm thời và họ sẽ không cần nó sau một ngày nhất định và họ không quan tâm đến chất lượng, hãy nói "xấu" hoặc viết rằng mã sẽ không bị thay đổi bởi bạn hoặc bất kỳ lập trình viên nào khác một lần nó được triển khai để sản xuất hoặc bạn có quyền kiện họ.

Giả định nghèo nhất mà tôi thấy trong một số câu trả lời này là một số mã sạch bằng cách nào đó làm giảm tốc độ phát triển. Đối với bất kỳ dự án nào của bất kỳ chất nào (lớn hơn 6 giờ làm việc), mã sạch sẽ tăng tốc độ phát triển trong dài hạn (bất cứ điều gì lớn hơn một tuần). Tôi đã thấy nó hết lần này đến lần khác.

Mã kém chất lượng chỉ là thiếu tôn trọng với nghề nghiệp và đồng nghiệp của bạn. Xin lỗi nhưng sự thật.

Vì vậy, không có chất lượng kém, về tính linh hoạt, bao giờ hết!


1
Không bao giờ nói không bao giờ. Toàn bộ ứng dụng bị ném vào thùng rác. Chuyển đổi dữ liệu từ hệ thống này sang hệ thống khác được sử dụng một lần và quay đi.
JeffO

Giữ mã sạch sẽ thường xuyên làm giảm tốc độ phát triển một chút trong thời gian ngắn . Phần quan trọng là mã ô uế gây ra sự giảm nhiều hơn trong dài hạn. Tôi thấy một vài câu trả lời khác đề cập đến điều đó.
Ixrec
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.