鲍勃大叔是一个从未交付过软件的骗子? - Nico


这是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. 似乎是开发人员与管理层之间以及管理层与客户之间大规模沟通中断的典型例子。正如我所说,无论他们的代码是否干净,无论这在实际中意味着什么,他们都会面临这些问题。