《程序开发心理学》第四章 读后感

90 阅读7分钟

写在前面的废话

今天事物繁多,所以书只看了一章,但是收获亦或者是思考倒是挺多的,不知道能不能用文字描述出来。人的惰性是很强的,好吃的好玩的好看的东西太多了,总是引诱你不去写文章。anyway,我还是坐下来了,开始动笔,废话结束。

前情提要

本书的前三章围绕着作为人类行为的程序开发,详细解释了 阅读程序、优秀程序的要素、以及如何研究程序设计方面的心理学。第四章,则是作者为社会行为的角度分析程序开发心理学的第一篇。

首先

从社会行为角度,温伯格分了三个大类,程序开发组、程序开发团队、程序开发项目。看完本章,相比于前面的几章,我觉得我有点渐渐的看懂作者的写作逻辑了,本书的写作时间其实相当久远,我看的版本是2003年的这一版,而距离这一版的最原始版本,乃是25年前了,里面有不少25年后,也就是03年的作者对本书的批注,校正了一部分观点,但是这些观点相对现在来说,也算是陈旧了,毕竟现在已经是2024年了,而本书作者也在18年逝世了。但是其中人类智慧光芒的观点并未熄灭,对于我这种新时代的程序员来说,仍然受益匪浅。

程序开发组,顾名思义,就是由程序员组成的小组,因为当时的年代,还没有太细化区分每个程序员的职责,姑且我们相信,这个程序员组成的小组里面都是全栈了。而在程序开发组里,温伯格用了一个例子来说明正式与非正式组织机构的关系,这是个简单的辩证法思维,有点类似于中国的寓言故事,塞翁失马焉知非福。

我就简单的描述一下这个例子吧,让看我这篇文章的朋友,也能明白我为什么这么说。这个故事讲的是有一个咨询窗口和一个公共休息室连在一起,休息室内放有几台自动售货机贩卖零食和饮料,而一些实习生因为没有办公室,所以也在休息室内办公。因为休息室内有自动售货机,经常就有人群聚集非常喧闹,于是实习生们去找主管诉苦,主管来到休息室,决定撤掉自动售货机。看,这是多么正常的操作。可是撤掉机器后,主管又收到了咨询窗口的诉苦,因为太多人在窗口排队了,根本忙不过来,主管很疑惑,询问是不是因为什么原因导致来咨询的人变多了。得到的答复是,没有任何原因。后来经过调查才知道,一般来咨询的人,取号等待叫号时,会去自动售货机吃点零食喝喝饮料,顺便和来咨询的其他人唠唠嗑,结果一般来咨询的人,问题可能就是那几种,在唠嗑的过程中,就把问题解决了,所以不用去咨询窗口了,无形中为正式的咨询窗口减轻了压力。这就是非正式的组织机构。

所以正式与非正式之间存在着互补的关系,当然我这个例子说的并不是太完全,毕竟作者花了两页纸来写这个例子,控制了很多变量。大概的思想主要的还是一个辩证思维。

其次

自然环境与社会结构、无私式程序开发。

社会是个巨大的混沌的系统,个体的人与自然相辅相成,人不可避免的生活在环境中,但是可能会脱离社会联系之外,特别是程序员这种职业,因为程序开发是个人行为,就算是现如今程序员被划分为前端、后端、移动端、游戏开发等等等等门类。但是在写某段代码,调试某段功能时,本质上还是个人行为,个人行为可能就会导致唯我独尊以及刚愎自用。很不幸,我本人经历过这么一段时期,那是,在我觉得有能力cover自己工作,并自以为是的时候,把自己写的代码当作是自己的作品一样珍视,所有对它不好的评价都是,总有刁民想害朕。虽然没有造成很严重的后果,但是这种观念,就会让我不愿意接受来自同行的善意提醒,以及会对感觉不如自己的同行轻视。这种心理其实是很糟糕的,如果程序开发组内都是这样互相瞧不起,又刚愎自用的人。那么,小组必然从内部崩坏。

所以作者提出了无私式程序开发,这当然是四十多年前的名词了,放到现在,我觉得它包含了现如今比较流行的结对编程的概念。让你认可的同伴审查你的代码,并给予鼓励以及解决方案。结对面对的主体是两个人,如果这个小组有10个人呢,那么这就是无私式程序开发组了。这种小组是很难得的,在我还是个小lead时,我曾试图形成这样的小组,大家可以互相信任对方,认可对方,相互分享,螺旋提升。但是很遗憾,我没有成功,因为人是最难以控制的变量,当时的我本人也没有很大的能力,如果当时的我知道这个观点,也许会有所不同吧。

另还想补充一点,关于程序所有权的问题,以前的我很烦改别人代码,也很烦改别人代码(这就涉及到第一章的阅读程序的心理了),是因为我认为这段代码是我写的,会郑重的在某个感觉写的很牛逼的代码块上,写上auther,会有种我的东西别人不可染指的感觉。如果别人染指了,那它就脏了,后面我就不会好好对待它的心理。

所以要建立和维护程序开发环境的健康,虽然现在市场也好,行情也好,职场环境也好,这种想法特别的乌托邦,但是我想着,如果遇到几个志同道合的朋友,开发一些有意思的东西,不相轻,互相提升,互相补齐对方的短板,是不是也是另一种无私式程序开发组呢。

最后

第四章 程序开发组的读后感就这么结束了,想法还是杂乱,已经努力在理顺了,但是还是觉得没写到别人很一目了然我在说什么的状态。

不过就这样了,后面第五章是讲团队了,希望有更多的收获和想法。

温伯格这一章的小结我觉得写的很好,引用一下作为结尾好了。

程序员的工作环境多样而复杂,期间人与人的关系错综复杂,充满变数,稍不留神就会引起误解。如果要了解这种环境,你必须首先对正式与非正式结构加以区别,同时要找出决定和造成这种环境的众多因素:从周边的自然环境,到个人的自私性。任何一个正在运转中的程序开发环境中都包含了丰富的内容,这种丰富性使得它具有一种自我保持的特性,这使得该环境可以抵挡来自外部的强制影响————尤其是那些不顾正式与非正式之间的差别,就草率做出的强制性命令。在任何社会层面上,都能看到这种自我保持的现象;从本质上讲,这无所谓好,也无所谓坏。它仅仅是程序开发过程中的一种客观事实。

认清事实,辩证思考 共勉之~