Đổ lỗi cho những ngày hôm nay về khoản nợ kỹ thuật của ngày hôm qua


38

Một số lượng đáng ngạc nhiên về chất lượng, khả năng mở rộng và các vấn đề tải đã xảy ra trên một ứng dụng mà tôi hiện đang hỗ trợ mà ban đầu tôi không viết. Rất may, tôi có các dự án mới mà tôi đã và đang thực hiện từ đầu để giữ lại một số lợi ích của sự tỉnh táo của tôi.

Nhóm ban đầu bao gồm 20 nhà phát triển (hầu hết trong số họ có bộ kỹ năng lỗi thời), không có tài liệu yêu cầu kinh doanh hoặc người kiểm tra đảm bảo chất lượng và quản lý kém ngay từ đầu theo kiểu thác nước. Những ngày đầu sản xuất là một cơn ác mộng đáng xấu hổ liên quan đến việc vá mã giống như thủ tục dễ vỡ với các bản sửa lỗi thậm chí còn dễ vỡ hơn. Các tính năng đã được thêm vào sau đó được đưa vào một mô hình dữ liệu không bao giờ có nghĩa là hỗ trợ chúng và không có gì lạ khi thấy cùng một mã được nhân đôi 10 lần và để xem các tài nguyên không được đóng một cách an toàn và truy vấn ORM chỉ lấy hàng chục ngàn thực thể để ném ra ngoài nhưng một số ít.

Bây giờ chỉ có tôi và mỗi khi có một vấn đề mới xảy ra, tôi viết lại một mô-đun để đạt tiêu chuẩn tốt hơn và làm cho nó ổn định hơn nhưng Quản lý cần một lời giải thích phù hợp về lý do tại sao tất cả những điều này xảy ra.

Họ có vẻ sốc và bối rối trước khái niệm rằng ứng dụng này có chất lượng kém và chìm trong nợ kỹ thuật. May mắn thay họ hiểu khái niệm nợ kỹ thuật và hỗ trợ tôi trong nỗ lực xóa nó và họ rất ủng hộ và đánh giá cao tôi, nhưng tôi cảm thấy như thể tôi cứ đổ lỗi cho đội ban đầu (tất cả đã bỏ đi để phá hỏng một dự án khác ở một nơi khác phân chia).

Điểm mấu chốt là tôi không muốn trở thành " Kẻ đó" , người luôn phàn nàn về các nhà phát triển trong dự án trước anh ta. Tôi đã thấy thái độ này trước đây từ những người trong sự nghiệp mà cá nhân tôi cảm thấy là không biết gì và không xem xét hoàn cảnh và ảnh hưởng thiết kế đã khuyến khích mọi thứ theo cách mà họ đang làm.

Thông thường tôi thấy thái độ đổ lỗi cho đội trước vì thiết kế và triển khai kém từ các nhà phát triển lý tưởng thiếu niên, những người không có kinh nghiệm sống mà nhiều thành viên cấp cao hơn đã có và được hưởng lợi.

Bạn có cảm thấy rằng có một cách tốt hơn, có lẽ là cách làm nhẹ nhàng hơn để báo cáo các loại vấn đề này cho quản lý mà không bước vào danh tiếng của người / nhóm trước bạn?


17
Thật trớ trêu khi trong một câu hỏi về việc không chơi trò chơi đổ lỗi, bạn dành 3 đoạn đầy đủ bao gồm khoảng 50% câu hỏi của bạn ca ngợi về đội trước đó. Và gắn thẻ câu hỏi [mã xấu] và [lập trình viên xấu].
Aaronaught

8
@Aaronaught, Được rồi, tôi sẽ cắn, tôi đã dán nhãn bad-codevì mã thực sự gây ra lỗi và sự cố. Tôi dán nhãn nó bad-programmerbởi vì tôi sợ tôi trở thành một người bằng cách đổ lỗi cho đội trước, một cái cớ mệt mỏi và sáo rỗng mà tất cả chúng ta đã nghe thấy trước đây. Theo như ba đoạn đầu tiên được xem xét có lẽ tôi không cần phải mô tả như vậy nhưng tôi muốn vẽ một bức tranh chính xác về tình huống trước mắt của tôi và đưa ra lịch sử về những gì tôi thu thập được cho đến nay.
maple_shaft

2
... Vậy là có một phần tử của rant trong đó? Vâng, tôi đoán vậy nhưng tôi phát ốm vì là người giữ trẻ cho một ứng dụng hoạt động như một đứa trẻ ADHD với một điều ước chết.
maple_shaft

2
Tôi thông cảm với bạn. Tôi làm. Nhưng chúng tôi có một hệ thống trò chuyện nếu bạn muốn nổi giận hoặc xả hơi. Các câu hỏi mang tính xây dựng nên có tông màu trung tính và bỏ qua các chi tiết không cần thiết như vậy.
Aaronaught

Câu chuyện về cuộc đời tôi
Iulian Onofrei 9/03/2015

Câu trả lời:


46

Nợ kỹ thuật giống như nợ tài chính. Bạn đưa nó vào (hy vọng) một cách chiến lược trong việc phát triển một chương trình với ý định rằng nó sẽ được đền đáp trong tương lai. Đôi khi mọi người đưa ra các quyết định nợ kỹ thuật kém (chẳng hạn như chạy thẻ tín dụng), nhưng đôi khi một số nợ kỹ thuật nhất định chỉ là bình thường. Quyết định không dành thời gian để làm một cái gì đó theo cách "đúng" ngày hôm nay với giả định rằng nó sẽ cần phải thay đổi trong tương lai là hoàn toàn bình thường và nên được dự đoán trước. Tất nhiên có một dòng tốt, nhưng nghĩ rằng bạn sẽ làm cho nó đúng cách ngay lần đầu tiên có thể gây ra vấn đề của riêng nó (tê liệt phân tích).

Tóm lại, bất kỳ dự án không tầm thường nào kéo dài hơn một vài năm sẽ cần phải dành thời gian phát triển mới để trả nợ kỹ thuật. Điều này là, điều này đúng ngay cả khi bạn viết ứng dụng của mình đúng cách . Nếu bạn không chồng chất nợ, và quản lý chắc chắn có thể hiểu điều đó nếu bạn trình bày theo cách đó.

Giải thích điều này cho quản lý và thay vì "đổ lỗi" cho nhóm trước đó mọi lúc bạn có thể trình bày đây là "công việc như bình thường".


4
+1 cho một lời giải thích không đổ lỗi thực sự tốt về cách một dự án có thể chọn (chính xác!) Để mắc nợ kỹ thuật.
Joris Timmermans

1
@Nemi: Một sự khác biệt quan trọng giữa nợ kỹ thuật và nợ tài chính là việc định lượng cái sau dễ dàng hơn nhiều. Sẽ dễ dàng hơn nhiều để biết bạn còn bao nhiêu nợ tài chính để trả (thậm chí bao gồm cả tích lũy lãi và nghĩa vụ tài chính định kỳ) thì đó là làm như vậy với nợ kỹ thuật. Tôi chỉ nêu ra điều này bởi vì đó là một điều làm trầm trọng thêm vấn đề của maple_shaft.
Ben Hocking

2
@Ben - bạn hoàn toàn chính xác. Như với tất cả các chất tương tự, cái này bị phá vỡ dưới kính hiển vi. Tuy nhiên, sự so sánh vẫn vững chắc ở mức độ cao. Nó chủ yếu phân phối với các chi tiết và nói chuyện với quản lý ở cấp độ của họ - như là một vấn đề kinh doanh, không phải là một vấn đề kỹ thuật. Về cơ bản, bất kỳ dự án dài hạn nào cũng tích lũy một khoản nợ kỹ thuật nhất định và như vậy có nghĩa là có thêm chi phí để phát triển khi thời gian tiếp tục. Vì điều này được ẩn (và thậm chí không được hiểu rõ), nên chắc chắn rằng nó được nói đến.
Nemi

2
+1 thành "điều này đúng ngay cả khi bạn viết ứng dụng của mình đúng cách."
Mauricio Scheffer

1
@radarbob Tôi không đồng ý - giống như nợ tài chính, việc tích lũy nó được thực hiện có chủ ý hay không, do không may mắn hoặc ngu ngốc - ai đó phải trả tiền trong tương lai. Thuật ngữ này vốn là trung lập liên quan đến nguyên nhân.
Hulk

23

IMO bạn hầu như đã thực hiện việc này theo cách đúng đắn: bạn không đề xuất viết lại vì "mã cũ bị mất", nhưng sửa từng thứ một.

Để tránh cảm giác như bạn đang đổ lỗi cho đội bóng cũ, chỉ cần tưởng tượng rằng họ có thể phải sản xuất mã này dưới áp lực thời gian lớn. Quản lý tại thời điểm đó có lẽ đã không thực sự hiểu rằng chỉ vì mã "ít nhiều hoạt động" không có nghĩa là có thể thực hiện bất kỳ bảo trì nào mà không có nhiều đau đớn và làm lại.

Đánh giá cao đội ngũ cũ để quản lý để tạo ra một sản phẩm thực sự mang lại một số giá trị kinh doanh - nó sẽ không được sử dụng nữa nếu không. Bạn có thể ngạc nhiên về mức độ thường xuyên một dự án không cung cấp giá trị kinh doanh, ngay cả khi nó được viết đẹp.


3
+1: đổ lỗi cho quản lý cũ đã thất bại trong việc cung cấp một sản phẩm chất lượng, sau đó (hy vọng) quản lý mới sẽ nhận được thông báo (hoặc loại bỏ bạn, cả hai trường hợp đều là một chiến thắng theo như bạn nghĩ)
gbjbaanb

15
@gbjbaanb - Đừng đổ lỗi cho bất cứ ai! Đi ra khỏi con đường của bạn KHÔNG đổ lỗi cho bất cứ ai. Chỉ cần thiết lập tình huống hiện tại và tình huống mong muốn, và đưa ra lập luận hợp lý về cách thức và lý do bạn cần đến đó.
Joris Timmermans

Eh, đảm bảo có quản lý mới. Ông chủ tương tự có thể vẫn còn ở đó. Và ngay cả khi anh ấy tiếp tục, anh ấy ở đâu đó ngoài kia. Hãy chắc chắn rằng bạn phát hiện ra trước khi bạn đi xung quanh ném người dưới xe buýt.
Philip

Tôi ước nó đơn giản như không đổ lỗi cho ai. Quản lý nhấn mạnh vào ai đó / một cái gì đó để chỉ tay vào. Nếu tôi không chỉ đến một người hoặc một nhóm người mà tôi chỉ đến?
maple_shaft

4
@maple_shaft - vì vậy hãy đưa ra lập luận mà tôi đưa ra trong câu trả lời của mình cho quản lý và nếu họ vẫn khăng khăng "đổ lỗi", hãy đăng lại hồ sơ của bạn trên nhiều trang web mà bạn có thể tìm thấy, bởi vì mọi thứ sẽ rất tệ cho bạn khi họ quyết định bắt đầu đổ lỗi cho bạn vì thiếu người khác chỉ tay vào.
Joris Timmermans

7

Khi được yêu cầu bình luận về tình trạng hiện tại của một sản phẩm có vấn đề, tôi luôn luôn quay lại, "đó là cái gì", và sau đó bắt đầu nói về kế hoạch cải thiện nó.

Bạn không biết tất cả các yếu tố đi đến quyết định tạo ra vấn đề này - có lẽ chúng thậm chí còn hợp lý vào thời điểm đó. Tất cả những gì bạn có thể làm là tiến về phía trước và làm cho mọi thứ tốt hơn vào ngày mai. Và có vẻ như bạn đang làm một công việc tốt - bạn có thái độ đúng đắn cho tình huống này.

Tập trung vào chỉ báo cáo sự kiện khi được hỏi. Bạn không cần phải thêm lời kể hoặc bình luận; chỉ cần nói "hệ thống bị lỗi trong trường hợp X" hoặc "các báo cáo không chính xác cho trường hợp Y." Sau đó nhanh chóng thêm cách bạn có kế hoạch để cải thiện tình hình hiện tại.

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.