愚蠢可能是企业的优势,但不是软件开发的优势。

2020-08-30 11:41:51

你有没有环顾过一家大公司,想知道人们为什么认为自己这么小?难道他们看不到周围都是废话吗?他们怎么能这样生活呢?

考虑到这种心灵的宁静可能是故意的。这可能是功能性的愚蠢。

阿尔维森和斯派塞在2012年的一篇名为“基于愚蠢的组织理论”的论文中描述了这一概念。(PDF)他们驳斥了组织试图最大化信息流和计算的想法。毕竟,想太多每件事都会让我们手足无措。我们需要扎扎实实地把工作做好,而不是把所有的时间都花在试图达成共识上。

功能性愚蠢意味着不自我反省,不要求理性,只在安全的范围内进行批判性思考。

这不是功能障碍。它是实用的:它给人一种积极的前景。一种确定感(不幸的是,人们喜欢这种感觉)。当人们不是所有人都质疑一切的时候,摩擦就会减少。

员工了解他们是谁,他们想要什么,以及如何到达那里。为他们铺设了一条职业道路,描述了如何在他们的人民领袖的管理下爬上自动扶梯。

与此同时,领导者也有追随者。不要把你不相关的想法带到工作中去。要“专业”。

我明白为什么这在许多组织中很有用。但它永远不会生产出好的软件。

开发软件,我每天都在做决定。我决定计算机在每种情况下应该做什么,我决定如何指导它这样做,我决定如何将其与所有其他部件配合起来。然后我输入,试一试,决定它是否有效。

要做出好的决定,我必须知道我为什么要做一件事。我需要好好想想我在做什么。当事情变得困难时:这是现在最好的做法吗?我需要批判性地考虑更广泛的系统,而不仅仅是我的作品。

示例:“显示今天收到的订单数量。”好吧,为什么?如果它是一个仪表盘,让高管们感觉他们掌握了业务的脉搏,那么它可以是乐观的,包括尚未敲定的订单。如果是为了会计,那也许不是。如果是为了让操作人员注意到成交量的高低,那么图形可能会更好。对于操作,延迟需要很低,因此我将付出额外的努力来快速地将数据送到那里。对于会计来说,准确性很重要,但并不着急。我还需要知道所有订单数据源是如何工作的,它们的数据意味着什么,以及它的延迟是什么。

如果我不知道为什么要显示这个数字,那么除了追求完美,我还能做什么呢?工作太辛苦了,弄不到完美的数字和最新的数字。不会的,这在物理上是不可能的。但我会说是这样的,因为这就是他们要求我做的。我会避免对这件事想得太多。我会询问下游系统,而不会询问负载是否有问题,或者他们是否可以给我一个推送通知,以使整个流程变得顺畅。

这是因为软件开发更像是高管的执行策略,而不是办公室工作。

是的,我们坐在电脑前打字。但当我们这样做的时候,我们是在告诉人们计算机该做什么。

管理人员和开发人员都构建和运营社会技术系统。他们的系统更注重社交,而我们的系统更注重技术。他们的更大,好的,当然,有时候。

想想看,开发人员所做的每一个决定都被不知有多少台计算机执行了无数次。这些决定很重要!它们需要用透视的眼光来制作!

需求原因!经理们:说服我,不要告诉我,去做一件事,因为那样我就知道为什么了。(我很容易被说服。)。

考虑更广泛的情况,只要你有空间。设计子系统,而不是系统。发展社会关系以匹配软件依赖关系,并一起交谈以使整个过程顺利进行。

避免功能性的愚蠢--并为此付出代价。这意味着接受不确定性,找到自己的身份,管理自己的事业。这意味着要平衡所有这些“但是”与对团队其他成员的信任,信任他们是有能力的,同时也是关心的。

功能性愚蠢的对立面是“深思熟虑、批判性推理和对话”。我们需要这些来构建好的软件。