具体描述
本书出自软件领域著名思想家,美国计算机名人堂首批成员之一的 Gerald M. Weinberg 之手。本书关注的是程序开发过程中人的因素,堪称这一领域的开山之作。本书的初稿完成于整整 40 年前,作者当时慧眼独具,前瞻性地提出了将程序开发作为一种人类行为来考察的观点。几十年来,本书已让数读者从中受益,时至今日仍然是畅销全球的经典之作。
作者简介
目录信息
1 阅读程序 4
一个例子 .................................................................................................. 6
机器的局限 .............................................................................................. 7
语言的局限 .............................................................................................. 8
程序员的局限 .......................................................................................... 9
历史遗留问题 ........................................................................................ 10
规范 ........................................................................................................ 11
小结 ........................................................................................................ 12
思考题 .................................................................................................... 12
参考资料 ................................................................................................ 13
本章评注 ................................................................................................ 14
2 优秀程序的要素 16
技术规范 ................................................................................................ 18
日程计划 ................................................................................................ 20
适应性 .................................................................................................... 21
效率 ........................................................................................................ 23
小结 ........................................................................................................ 26
思考题 .................................................................................................... 26
参考资料 ................................................................................................ 27
本章评注 ................................................................................................ 28
3 如何研究程序设计 30
自省 ........................................................................................................ 31
观察 ........................................................................................................ 33
实验 ........................................................................................................ 36
心理学测量 ............................................................................................ 39
利用行为科学中的数据 ......................................................................... 42
小结 ........................................................................................................ 44
思考题 .................................................................................................... 45
参考资料 ................................................................................................ 46
本章评注 ................................................................................................ 50
第二篇 作为社会行为的程序开发
4 程序开发组 59
正式与非正式组织机构 ......................................................................... 59
自然环境与社会结构 ............................................................................. 62
错误与唯我独尊..................................................................................... 65
无私式程序开发..................................................................................... 69
建立与维护程序开发的环境 ................................................................. 73
小结 ........................................................................................................ 78
思考题 .................................................................................................... 78
参考资料 ................................................................................................ 80
本章评注 ................................................................................................ 81
5 程序开发团队 85
团队的组建 ............................................................................................ 85
目标的设定与认同 ................................................................................. 90
团队的领导者及其领导方法 ................................................................. 97
团队中可能出现的危机 ....................................................................... 104
小结 ....................................................................................................... 111
思考题 .................................................................................................. 112
参考资料 .............................................................................................. 114
本章评注 .............................................................................................. 115
6 程序开发项目 119
在变化中保持稳定性 ........................................................................... 119
绩效评价 .............................................................................................. 124
项目结构 .............................................................................................. 130
大型项目中共同的社会性问题 ........................................................... 134
小结 ...................................................................................................... 138
思考题 .................................................................................................. 139
参考资料 .............................................................................................. 141
本章评注 .............................................................................................. 143
第三篇 作为个人行为的程序开发
7 程序开发任务的差异 150
专业的与业余的程序开发 ................................................................... 150
程序员想要做什么 ............................................................................... 155
程序开发工作的不同阶段 ................................................................... 162
小结 ...................................................................................................... 168
思考题 .................................................................................................. 169
参考资料 .............................................................................................. 170
本章评注 .............................................................................................. 172
8 性格因素 174
疯狂的轰炸机 ...................................................................................... 174
性格的改变 .......................................................................................... 176
性格中经久不变的部分 ....................................................................... 179
关键的性格特征................................................................................... 182
性格测试 .............................................................................................. 186
程序员的性格测验 ............................................................................... 190
小结 ...................................................................................................... 192
思考题 .................................................................................................. 193
参考资料 .............................................................................................. 194
本章评注 .............................................................................................. 195
9 智力水平及问题求解能力 197
心理定势 .............................................................................................. 197
问题求解的一些维度 ........................................................................... 201
程序开发的智力因素 ........................................................................... 203
智力测验 .............................................................................................. 207
程序员的智力测验 ............................................................................... 209
小结 ...................................................................................................... 215
思考题 .................................................................................................. 216
参考资料 .............................................................................................. 217
本章评注 .............................................................................................. 220
10 积极性、培训及经验 222
积极性 .................................................................................................. 223
培训、课程学习与教育 ....................................................................... 228
学习的阻力 .......................................................................................... 232
如何学习程序开发 ............................................................................... 237
小结 ...................................................................................................... 243
思考题 .................................................................................................. 244
参考资料 .............................................................................................. 245
本章评注 .............................................................................................. 246
第四篇 程序开发工具
11 程序语言 253
程序语言与自然语言 ........................................................................... 253
程序语言设计 ...................................................................................... 257
小结 ...................................................................................................... 261
思考题 .................................................................................................. 261
参考资料 .............................................................................................. 262
本章评注 .............................................................................................. 264
12 程序语言设计的一些原则 266
一致性 .................................................................................................. 266
简洁性 .................................................................................................. 273
局部性与线性 ...................................................................................... 279
传统与创新 .......................................................................................... 283
专用的、多用的以及玩具式语言 ....................................................... 289
小结 ...................................................................................................... 293
思考题 .................................................................................................. 295
参考资料 .............................................................................................. 296
本章评注 .............................................................................................. 300
13 其他的程序开发工具 302
程序测试工具 ...................................................................................... 302
操作系统 .............................................................................................. 307
分时与批处理 ...................................................................................... 315
文档管理 .............................................................................................. 319
小结 ...................................................................................................... 328
思考题 .................................................................................................. 328
参考资料 .............................................................................................. 330
本章评注 .............................................................................................. 334
第五篇 结语
图表索引 344
· · · · · · (收起)
读后感
是引用另一个人的评价 “每个程序员的上司都该有一本,应当认真读读, 用心去记, 按其中的训诫行事; 放在办公桌上供其程序员去偷。 但他仍要继续再放一本, 直到没人拿为止。” --Weiss, 1972
这里我只给这本书三星,仅代表我个人意见,我是很艰难地看了大约1/3的样子,后来是实在看不下去了,文字还算顺溜,但是就不太清楚其中的深刻含义,也许是我的层次还不够吧,也许再过几年我才能有勇气再拿起这本书来啃啃~ 作者的那本《你的灯还亮着吗?》还是不错的!
如果你先前没看过关于这本书的介绍,在你读完了它之后,一定很难想象作者竟然是在三十多年前写成的此书。虽然书中关于程序开发的技术内容会让你感到年代的久远,但是其中“关于人的内容”在今天看来依然具有很强的生命力,它仿佛是在叙述发生在我们身边的事情,许多观点是对程...
温伯格这个名字实在是响亮的很,被引用率极高,目光如炬, 几乎超前看到好多东东,并以文字的形式记录了下来。 某某书提到,温伯格在**时候就已经开始关注人的因素,于是乎 买来准备好好研读,装帧倒是不错,字体也够大,可是读来读去, 总是好像云里雾里的,不知道这位老先生...
优点: 以自己的丰富经历作为实际例子来说明;结合日常生活中的例子解释;深入到人心,探究在软件开发的主体的人背后的原因。 不足: 很多具体开发工作现在看不到了;程序设计语言变化很多(作者也说明了);软件工程也发生了很大变化。
用户评价
我发现这本书的价值在于它的“反直觉性”。在充斥着“快就是好”、“效率至上”的行业文化中,它反其道而行之,强调了“停下来思考”、“理解背后的动机”的重要性。书中对“技术债务的心理成因”的探讨,尤其发人深省。很多时候,我们明明知道应该重构,但因为项目压力、领导催促,我们选择了看似快捷的临时方案,给自己埋下了未来的痛苦。这本书把这种集体性的“短视行为”提升到了一个社会心理学的层面来审视,它探讨了组织文化如何固化了这种短视行为。我开始意识到,对抗技术债务,不仅仅是技术人员的责任,更是需要整个团队达成的一种心理共识。它促使我去反思,我是否在无形中,为团队的“偷懒”行为提供了心理上的合理化借口。这是一本能引发深刻自我反思和团队对话的佳作。
这本书简直是打开了我对编程世界认知的一扇新大门!我一直以为写代码就是逻辑和技术的较量,但读了它才发现,人性的复杂和心理的微妙才是真正影响开发效率和项目成败的关键。作者没有枯燥地堆砌理论,而是用非常贴近实际的案例,深入浅出地剖析了我们在面对调试难题、团队协作冲突时,内心深处的真实反应。比如,书中对于“完美主义陷阱”的描述,让我猛地意识到自己过去在细节上过度纠结,反而拖慢了整体进度的真相。它不是一本教你如何写出更高效代码的书,它是在教你如何成为一个更有效率、更能理解他人的“人”——一个开发者。当我开始有意识地去调整自己的心态,不再将Bug视为对个人能力的否定,而是将其看作系统向我发出的一个信号时,那种如释重负的感觉,简直比解决一个棘手的算法问题还要令人愉悦。这本书让我从一个纯粹的“码农”心态,开始向一个更高维度的“问题解决者”转变。我强烈推荐给所有刚入行,或者感觉自己遇到了职业瓶颈期的程序员,它能帮你理顺那些看不见的“心结”。
坦白讲,我是一个性格比较内向的资深工程师,在团队会议上我常常感到语塞,总觉得自己的想法不够成熟,或者害怕表达出来会被嘲笑。这本书的第三部分,专门讨论了“技术沟通中的不安全感与表达障碍”,简直像是一位老朋友在耳边轻声开导。作者用非常生活化的语言,描述了那些我们习惯性地戴上的“技术光环”面具,是如何阻碍了真正的、平等的交流。它没有说教,只是温柔地引导读者去审视,我们对“专家”身份的执着,实际上是害怕暴露自己“不懂”的那一部分。通过书中提供的几种“无威胁提问法”和“同理心倾听练习”,我尝试在最近几次需求评审会上运用,效果立竿见影——同事们变得更愿意分享他们的顾虑,而我的意见也更容易被接纳,因为我已经学会了如何先建立信任,再抛出观点。这本书对“软技能”的解析,远比任何职业培训课程都要深刻和实用。
初次翻开这本关于软件开发的读物,我的预期是能学到一些高级设计模式或者最新的框架原理,结果发现,它完全偏离了技术手册的轨道,直奔“内功心法”而去,这反而给了我一个极大的惊喜。这本书的笔触非常细腻,带着一种近乎哲学的思辨性,探讨了知识的迭代、学习的焦虑以及创新的恐惧。我尤其欣赏其中关于“心流体验”在编码过程中的重要性分析。作者没有简单地告诉你“要进入心流”,而是详细拆解了哪些外部干扰和内部认知障碍会阻碍我们达到那种高效、愉悦的沉浸状态,并提供了具体的环境和心理调适建议。这比看一百篇关于“时间管理”的文章都管用,因为它直接针对了我们作为创作者,在面对复杂系统时产生的精神内耗。读完后,我开始更审慎地规划我的工作区块,尝试主动屏蔽那些低价值的通知,为自己创造一个更利于深入思考的“心理空间”。这种对开发者心智环境的关注,是当前技术书籍中非常稀缺的宝贵视角。
这本书的阅读体验非常独特,它像是一面镜子,让我看到了自己作为“代码消费者”和“项目参与者”的双重身份下的许多认知盲区。它巧妙地将认知心理学的成果,转化成了针对软件开发生命周期的具体洞察。比如,书中对于“遗留代码的恐惧症”的分析,我深有感触。我们总是将维护那些陈旧、文档缺失的系统视为一种惩罚,但作者指出,这种恐惧很多时候来源于我们对“不可知性”的本能抗拒,而非代码本身的复杂程度。如果我们将维护视为一种“考古挖掘”而非“打补丁”,心态就完全不同了。这种叙事方式上的转换,极大地减轻了我面对复杂遗留项目的心理负担。它没有提供快速修复的捷径,而是教我们如何与系统的“历史”和平共处,如何用更具耐心和探索精神的姿态去驾驭技术债务。
不愧经典。
不愧经典。
检视阅读完,很高级的一本书,从人类学、社会学、心理学几个角度来谈程序开发,会涉及很多基础认知和科学。暂不细读。
不管是否作为主管,都应该看一下。 如果作为主管,在管理岗位上工作4年后更加有不错的体感,也能收获一些之前迷茫和误解的地方。
如果用新瓶装旧酒来形容,真是再恰当不过了。程序开发历经25年沧海桑田,尽管结合了发展较为稳定的心理学,但还是有些地方已经不再试用了。如果闲暇,姑且翻一翻这本,就当做穿越时光,看了昔日的老电影。(PS:这本书的翻译是清华一个数据结构讲得非常棒的老师~~~)