編輯:
感謝大家的寶貴建議,評論和反饋。
事實證明,在這種情況下沒有人是“壞蛋”。我在這裡收到的建議幫助我重新與該項目的前負責人聯繫。事實證明,我的公司出於無可辯駁的原因,已經收到了早期的“開發中”版本的代碼庫。以前的公司向我們發送了可生產的版本,並且,作為最高榮譽,我公開稱讚我有效地反向工程了不完整的產品,達到了我所擁有的深度。我繼承了一個項目。長話短說,我要維護的代碼很糟糕。太糟糕了,實際上,該產品不僅不完整,而且無法正常工作,並且已經使用了多年。
我如何以一種不尷尬的方式與管理層進行溝通對他們來說,某種有價值的產品處於可怕的狀態,這不會使我看起來很懶惰或愚蠢?
澄清:這個問題與技術債務之間的關係
這個問題與我挑戰了對產品的長期信念而沒有自殺的事實有關。
不是嚴格地處理技術債務,是這樣的:管理人員認為,也許代碼太複雜了,以至於我無法理解它,並且將錯誤歸結為設計錯誤; 原來的開發人員是如此的精幹,看起來錯誤實際上是天才的招。
也許這是另一個原因。關於技術債務的確切之處在於,“天才”代碼和技術債務之間的差異是管理層表示我不應該更改“天才”代碼,而“天才”代碼不是技術上的欠債:這是秘密的黑魔法。 我希望管理層將其視為技術債務。相反,他們沒有。
管理層並不直接關注時間,成本或金錢-儘管這是一個令人擔憂的問題。
詳細信息
大多數時候,我不會與管理層溝通。不幸的是,人們花了很多時間進行零散的維護,其中一些人幾乎沒有開發經驗,他們僅僅“觸摸”了足夠長的代碼就可以在這里或那裡添加補丁,然後繼續前進,這些年來已經為管理層畫了一幅畫。該項目距生產準備就緒僅一步之遙。
可悲的是,事實並非如此。我在〜1.5Gb代碼庫中遇到的一小段 問題清單代碼 ...
- 有整個代碼庫中使用相同的函數,使用相同作用域的相同變量名(不支持該語言)。
- 定義了函數,但從未調用過。
- 亂序變量使用和初始化。
- 使用的庫版本不兼容。
- 硬編碼的URI和IP地址,沒有有關其用途的文檔。
- 隨機請求的API路由沒有任何回報或胡言亂語; 然後不使用。
- 硬編碼,未加密的密碼和私密ssh密鑰。
我應該補充一點,當我第一次開始使用它時, 它甚至沒有編譯。 當我對其進行編譯時,它失敗了
這是一場噩夢。
問題是,管理層已經從他們那裡繼承了它,並從以前的“ gung-ho”開發人員那裡得到了保證,證明它“可以工作, ”所以已經投入了巨資...現在,這筆錢已經轉嫁給了我。他們希望在大約2個月的時間內將其投入生產。
當我建議以前的開發人員可能並不完全誠實或完全了解產品時,管理層會發出各種信號:“剛完成”,“為什麼還沒有完成”……以及“我們”不太確定它是否曾經起作用過”到“當您收到它時它正在起作用”,而“我們從未見過它起作用”到“它已經在生產中。”
管理層還建議說,它太複雜了,以至於我無法理解它,並且將錯誤歸咎於設計; 原來的開發人員是如此的聰明,以至於看起來錯誤實際上是天才的招。 當然,我不是天才,也許是這樣:提供我以前對我發現的非常基本問題的觀察。
也許在我的水平之上有政治作用。