鮑勃大叔是一個從未交付過軟體的欺詐者? - Nico

banq發表於2021-11-13

這是Nicolas Carlo個人針對釋出“Clean程式碼”和“單一職責原則”的羅伯特·馬丁的權威質疑:

自從我得出羅伯特·馬丁(鮑勃大叔)對軟體開發生命週期一無所知的結論以來,已經有一段時間了。最近看了他的視訊,想真正瞭解鮑勃大叔,因為顯然我對他的批評過於嚴厲。

 

好的程式碼很重要?

與鮑勃大叔所寫的其他演講和書籍一樣,他的視訊的假設前提是:好的程式碼很重要。

從表面上看,我們都同意好的程式碼很重要。我相信你會點頭同意。好的程式碼很重要,你可以把它印在T恤上。但在你這樣做之前,幫我一個忙,向自己解釋這實際上意味著什麼。“好程式碼”的普遍科學定義是什麼?

這種提問方式不是我發明的。最近,來自 Molly Rocket 的 Casey Muratori 在他的一個名為“壞程式碼從何而來?”的視訊中提到了這一點。.

Bob 大叔認為:不僅好的程式碼很重要,乾淨clean程式碼也很重要。顯然,這種說法對任何人來說都不是什麼大驚喜。鮑勃叔叔用一個非常相似的書名寫了這本書。然而,問題仍然存在,“乾淨的程式碼”的定義也很模糊,因人而異。

 

Sword公司

鮑勃大叔在視訊中舉了一個Sword公司的例子,根據鮑勃大叔的說法,這家公司因為程式碼錯誤而宣佈破產。他用來支援他的觀點的例子是如此複雜和扭曲,以至於在邏輯上甚至沒有意義。

他聲稱 Sword Inc. 失敗了,因為他們無法讓 C 解析器適應足夠快的速度來解析 C++。這是錯誤程式碼的結果。換句話說,如果他們從一開始就編寫了乾淨的程式碼,就不會發生這種情況。

然後他繼續扮演一些在這家公司工作的老開發人員的角色。根據這位開發人員的說法,所有的錯都在於……猜猜是誰?這是正確的!營銷和管理。

軟體界有誰沒有聽過這些藉口?

  

現實情況

如果您深入挖掘,您會發現 Sword Inc. 的最大問題之一不是糟糕的程式碼,而是邊界範圍蔓延(banq注:有界上下文比干淨清潔程式碼更重要)。猜猜看,邊界範圍蠕變的最大支持者之一就是鮑勃叔叔本人。這是敏捷宣言的第二個原則:

歡迎不斷變化的需求,即使是在

開發後期。敏捷流程利用變化來

獲得客戶的競爭優勢。

鮑勃叔叔不僅是敏捷的最大支持者,他還是宣言的合著者!僅這一塊垃圾就導致了我們在整個行業中不得不處理的一些最糟糕的範圍蔓延。

回到Sword Inc. 的例子。Sword Inc. 當時顯然也在處理範圍蔓延。根據 Uncle Bob 扮演的開發者角色,他們不僅要快速交付產品,還要不斷新增新功能。這讓他們沒有時間做任何內部重構提升。(技術債務)

並不是經理們突然想出了他們想要的新功能。新功能是他們從客戶那裡收到的請求!

我從經驗中知道,一旦你接受了客戶不切實際的要求,你就應該繼續實現它們。無論您生成的程式碼質量如何,都會發生這種情況。即使您不使用軟體,也會發生這種情況。鮑勃叔叔做過真正的工作嗎?!

做出無法兌現的承諾對於任何企業來說都是最可怕的行為方式之一。這是破產的必經之路。即使您的程式碼庫非常乾淨,也會發生這種情況。

商業中最重要的短語之一,這適用於任何行業,是:

承諾不足和超額交付。

顯然,Sword Inc. 違反了上述規定。

最後,這更多是在軟體設計實踐的範圍內,鮑勃叔叔的開發人員角色說“我們就是不能讓我們的 C 解析器與 C++ 一起工作”。

 

歸根結底,Sword Inc. 似乎是開發人員與管理層之間以及管理層與客戶之間大規模溝通中斷的典型例子。正如我所說,無論他們的程式碼是否乾淨,無論這在實際中意味著什麼,他們都會面臨這些問題。

 

相關文章