Bạn có viết mã xấu khi chịu áp lực? [đóng cửa]


14

Khi bạn đang chịu áp lực, thời hạn đang đến gần, và một người quản lý đang thở dốc, bạn có thấy mình bắt đầu viết mã xấu không? Có phải TDD và các thực tiễn tốt nhất trượt bên lề để hoàn thành công việc? Bạn làm gì trong tình huống như vậy? Kinh nghiệm của bạn là gì?


Hãy để tôi thách thức bạn theo một cách lớn: một số cải tiến lớn nhất, tốt nhất mà tôi nghĩ ra là sản phẩm của một nhu cầu cấp thiết, tức thời. Đôi khi sức nóng của trận chiến mang đến một sự tập trung sắc bén mà ngày và ngày làm việc và sự khéo léo không tạo cảm hứng.
1172763

Câu trả lời:


31

Trong một từ, có. Bất cứ ai nói với bạn nếu không, có lẽ, tốt nhất là, nhầm lẫn.

Tuy nhiên, điều quan trọng là xây dựng dựa trên kinh nghiệm của bạn để viết mã ít tệ hơn . Chống lại sự cám dỗ để đưa vào một cái gì đó để làm cho nó "chỉ hoạt động" nếu có thể, bởi vì nó sẽ không. Bạn vẫn cần tuân theo một số quy trình (có thể là của riêng bạn, hoặc của công ty bạn, hoặc một số hỗn hợp của chúng).

Kinh nghiệm cho tôi biết rằng tốt hơn nhiều là ( thở hổn hển ) trượt lịch trình một vài ngày để ngăn chặn việc sửa chữa trong một tuần, đặc biệt là khi "chịu áp lực" có nghĩa là một bản phát hành nhanh cho sản xuất. Nếu bạn đang vội vã phát hành mã, những người thử nghiệm có lẽ cũng sẽ vội vàng sử dụng cao su.


tôi sẽ cho cộng 10 điểm cho bài viết, nói rất hay
maz3tt

16

Nếu đội đang ở trong một cuộc khủng hoảng thì một cái gì đó đã được thực hiện sai.

Thiếu thời hạn là một dấu hiệu của kế hoạch và dự toán kém. Xác nhận rằng thời hạn sẽ bị bỏ lỡ và giải quyết vấn đề. Đôi khi bạn không kiểm soát được kế hoạch hoặc dự toán. Xác định ai làm và đảm bảo rằng họ biết điều này đã được thực hiện do lỗi.

Trong một tình huống là thời hạn không thể được di chuyển, bạn thoát ra khỏi đồ uống có chứa nhiều caffein và vội vàng với nó. Xác định bất cứ điều gì bạn có thể hy sinh và cắt nó ra. Lấy những gì còn lại và thực hiện nó càng nhanh càng tốt. Điều này sẽ gây ra các vấn đề như mất ổn định, lỗi lẻ, thực hành mã hóa không hiệu quả, sửa lỗi hỗ trợ băng tần và tất cả các loại kinh hoàng khác. Nó không hẳn là mã xấu , nhưng nó không lý tưởng .

Một giải pháp tốt 50% mà mọi người thực sự đã giải quyết được nhiều vấn đề hơn và tồn tại lâu hơn một giải pháp 99% mà không ai có được vì đó là trong phòng thí nghiệm của bạn, nơi bạn không ngừng đánh bóng thứ chết tiệt đó. Vận chuyển là một tính năng .

Từ Joel trên phần mềm Trình lập trình ống băng .

Không phải mã lý tưởng có thể được xử lý nếu nó bị xử lý . Mã chưa được xử lý sẽ chồng chất và lần lượt thực hiện các thay đổi bổ sung khó hơn, nếu không nói là không thể. Nó có thể đi đến điểm mà ứng dụng được liên kết với nhau một cách phụ thuộc đến mức việc bổ sung chỉ có thể được thực hiện bởi các lập trình viên cẩn thận nhất với chi phí thời gian cắt cổ. Trong khi vận chuyển là một tính năng, vì vậy nó có thể duy trì.


1
Điều duy nhất tôi sẽ thay đổi là từ "bạn" trong ý chính của bạn. Tôi tranh luận rằng đối với mọi thành viên trong nhóm của bạn, có một yếu tố nhân rộng của những điều có thể sai, và đối với mọi phụ thuộc bên ngoài, có một số yếu tố theo cấp số nhân của những điều có thể sai. Hoặc ngược lại. ;)
Wonko the Sane

2
@ysolik: Xem phần viết lại. Đó có thể không phải là lỗi của bạn khi lập kế hoạch hoặc ước tính là FUBAR'ed.
Josh K

2
@ysolik: Bạn viết ít mã sau đó lý tưởng để đáp ứng thời hạn và cầu nguyện bạn sẽ có cơ hội sửa nó sau. Với kế hoạch đúng đắn điều này không bao giờ xảy ra.
Josh K

2
Đừng bao giờ nói không bao giờ ... :)
Wonko the Sane

3
@Wonko: Đúng, với kế hoạch đúng đắn điều này hiếm khi xảy ra.
Josh K

7

Tôi là một fan hâm mộ lớn của nghề thủ công phần mềm - viết mã sạch nhất có thể, v.v., nhưng đôi lúc tôi đã phải vội vã trong những thời điểm mà thời gian ngắn và thời hạn đang đến gần. Tôi thực sự cố gắng không làm điều này tốt nhất có thể, nhưng đôi khi bạn không thể tránh khỏi nó.

Một số người sẽ nói "Vâng, đó là cuộc sống, bạn phải giao hàng" nhưng tôi thực sự không đồng ý với thái độ này.

Khi viết mã vội vàng, bạn có thể sẽ đưa phần mềm ra khỏi cửa đúng giờ, nhưng điều gì xảy ra khi trong vài ngày tới, bạn sẽ nhận được các cuộc gọi hỗ trợ liên quan đến lỗi trong phần mềm (những lỗi này sống trong cùng một phần mã bạn vội vàng để hoàn thành). Hoặc bạn nhận được một khách hàng tức giận gọi cho bạn hỏi tại sao mô-đun báo cáo của họ không còn hoạt động, mặc dù bạn đã hứa rằng nó sẽ ổn vào ngày phát hành?

Tất cả đều nói rất rõ "Bạn phải giao hàng" , nhưng có một sự khác biệt giữa trông hiệu quả và trông như một công nhân cẩu thả.


5

Đúng. Nhưng nó luôn quay trở lại ám ảnh tôi sau này.


2

Khi tôi ở trong một tình huống căng thẳng, mã của tôi có nghĩa là để hoàn thành công việc. Đó là nó. Tôi không tập trung vào hiệu quả và các vấn đề khác, đó là điều xấu, trong quan điểm của tôi.

Tôi sẽ làm việc trên nó mặc dù.


Làm cho nó hoạt động, Làm cho đúng, Làm cho nhanh :) c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast
Juha Untinen

1

Tôi không tin rằng cá nhân tôi viết mã tồi tệ hơn đáng kể, nhưng tôi cung cấp một sản phẩm tồi tệ hơn.

Khi phải đối mặt với một thời hạn tùy tiện và không thể, chúng tôi tiết kiệm quá trình phát triển. Chúng tôi đánh giá mã bề ngoài nhiều hơn (hoặc bỏ qua chúng hoàn toàn). Chúng tôi kiểm tra ít hơn, bỏ qua kiểm tra đơn vị chi tiết cho các kiểm tra tích hợp loại kiểm tra tại chỗ, sau đó thử tính kiểm tra tích hợp là một bằng cấp chính thức. Chúng tôi có xu hướng bỏ qua sự bất thường trong quá trình thử nghiệm nếu chúng không được liên kết trực tiếp với các tiêu chí không đạt. Chúng tôi bỏ qua các cập nhật tài liệu, không kiểm tra lại các ghi chú phát hành, quên xóa danh sách phân phối cho các tệp không còn cần thiết.

Mã nguồn bạn viết trong một cuộc khủng hoảng có thể có chất lượng cao, nhưng nó gần như chắc chắn sẽ được vận chuyển như một phần của một sản phẩm kém chất lượng.


0

Phụ thuộc.

Là áp lực bởi vì không có cách nào mọi thứ có thể được thực hiện và bởi vì các tính năng mới chính đang được thêm vào hàng giờ trước khi phát hành?

Mã xấu sắp tới!

Nhưng nếu đó là vì lịch trình đơn giản là thực sự chặt chẽ nhưng kế hoạch tổng thể thì chắc chắn và tôi phải làm việc chăm chỉ hơn bình thường và tiếp tục tập trung trong khi điều chỉnh một vài tính năng nghe được và ở đó ... Sau đó, tôi tạo ra mã tốt hơn nhiều nếu lịch trình cho phép hàng tấn thời gian. Ngay cả khi điều đó có nghĩa là tôi không nhận được tất cả các bài kiểm tra đơn vị được viết nhưng bao gồm các phần chính của mã.


Oooh - bình luận tốt, ngoại trừ câu cuối cùng đó làm tôi sợ một chút.
Wonko the Sane

Tốt. Điều đó không có nghĩa là họ sẽ không bao giờ được viết. Thật đáng sợ nhưng tôi nghĩ điều đó giúp tôi tập trung. Và có bài kiểm tra đơn vị, chỉ là không bảo hiểm 100%. Giống hơn 66%.
ElGringoGrande

Vấn đề duy nhất là 34% không được bảo hiểm là mã mới mà bạn đưa vào vội vàng, và không phải là mã đã được thiết lập không có khả năng (tất cả) phá vỡ các thay đổi của bạn. Không phải nói rằng tất cả chúng ta đã không làm điều đó, chỉ là đó là một đề xuất đáng sợ.
Wonko the Sane

0

Tôi biết một người không bao giờ viết mã xấu dưới áp lực. Anh ta cũng có một số hạt ma thuật mà bạn có thể quan tâm.

Mọi người đôi khi viết mã xấu và thời hạn thấp thoáng là lý do thông thường, mẹo là để tránh rơi vào tình huống đó ngay từ đầu (và điều đó cũng không dễ dàng).

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.