本文选自《程序开发心理学》一书

《银年纪念版》前言

《程序开发心理学》是一本令人称奇的书——就像一位年逾125岁而仍健在的老人一样令人称奇。我们所从事的这一行业瞬息万变,据我所知,还没有其他任何一本计算机图书,能够在初次出版后长达25年内活力不减——而且依然在继续。

更让我感到惊讶的是,我在编写这本书的时候,居然从未意识到它会有什么不同寻常之处。在写此书之前的15年里,我一直在编写代码、领导程序员团队,以及向程序员提供培训和咨询。我曾想写一本关于程序开发行业的小说,这个行业在当时还鲜为人知。但我后来意识到,我还没有足够的技巧来成为一名小说作家,作品很难让人信服。这样,我在1969年到意大利休假的八周时间里,灵感涌动,于是就写下了这本《程序开发心理学》的初稿。

那时,我已经出版过几本关于如何为各种计算机编程的畅销的技术书籍,而《心理学》这本书对我来说是一次全新的探险。这本书的出版费了很大的周折——这些是我在此前出版的几本书时所不曾经历过的。出版我之前几本书的出版社McGraw-Hill,虽然从本书手稿的几位审校那里得到了对这本书的高度评价,但他们却认为没有人会花钱买这样的书。于是我把书拿给了Prentice-Hall,而他们很不情愿地说,如果我同意让他们出版我的一些赚钱的“技术类”书籍,他们就出版这本书。然而我觉得自己需要找一个更有热情的出版社,所以我将这本书同时给了另外4家出版社。由于已经耽误了2年,我决定谁先接受出版,就选同谁合作。最后这4家出版社都表示愿意出版,但第一家是Van Nostrand Reinhold——1971年,这本书终于出版了。具有讽刺意味的是,就在这本书面世的当天,负责此书的编辑却被解雇了,理由是“不理解计算机出版业”。

尽管Van Nostrand出版社对我这本书的编辑的判断力有如此的看法,但《心理学》这本书还是迅速成为了技术类书籍中的畅销书,前后共印刷了20次,在超过25年的时间内一直在印刷。后来Van Nostrand将这本书以及他们所有的计算机图书的版权都卖给了另一家大出版社——而这本书因为印刷中断,连续几个月缺货。在与这家出版社经过几乎是没有尽头的谈判之后,我重新获得了这本书的版权,并请Dorset House出版社来出版这本书的银年纪念版。

我之所以要出版这本银年纪念版,是出于以下几个原因:

1.让新一代软件人能够读到这本书的原版;

2.提供一个从历史的视角来审视这个年轻领域的机会;

3.利用这一生只有一次的机会,对软件行业的发展做一个评述,并对我以前的想法做一次反思。

在这个新版本中,我并未对软件心理学方面进行更新。其中的一个原因是,Ben Shneiderman和其他人在这方面做得比我强多了。另外一个原因是,正如Ben曾经评价的,这本书确实与其说是谈论软件心理学的,倒不如说是谈论软件人类学的——这两个主题在我后续撰写的书里都做了进一步的讨论。

最重要的是,我想通过重新审校这本书并记录我的想法,来停下脚看看这25年以来我和软件业已经走了多远。尽管本书第一版也许不能称之为这个行业的转折点,但它的确是我自己的一个转折点。从那时起,我便很少编写代码,很少做团队管理工作了。从另一方面来看,我却培训了成千上万的程序员和团队领导,并为几百个软件项目提供了咨询。我把更多的精力用于代码评审、设计方案、设计方案评审、了解需求和评审需求等工作。除此之外,我还特别倾注了大量时间来培训那些可能成为软件主管的人,并为他们提供咨询。然而,我有时仍然想回到以前那种全职程序员的简单生活中去,而不需要考虑这么多其他事务。这种想法在软件行业中很普遍,但是很少有人会这样做。

现在,我清楚地看到,这本《心理学》第一版实际上是我自己所做研究(例如对团队、领导能力、问题解决方法,以及问题定义等的研究)的一个路线图。这些主题非常重要,但又没有被很好地理解。我用了20多年的时间来丰富这些主题的细节内容。回顾那些我在《心理学》之后

写过的书,我发现自己确实在填补这些“空洞”。请允许我以时间顺序列出这些书:

1973:Structured Programming in PL/C, An Abecedarian是尝试以一种全新的方法教授程序开发和编写程序文本的实验成果。1

1975:An Introduction to General Systems Thinking直接探询了深入思考系统的思考过程2(这本书在随后的20多年中一直不断地重印)。

1975:Structured Programming3。Dennis Geller、Tom Plum和我一同编写了这套获奖的结构化程序设计系列丛书,它再次探询了一些关于思考和教授程序开发的一些新方法。

1976:High-Level COBOL Programming试图将COBOL程序员的思维过程转换为新的模式。4也许此书没有收到效果。

1977:The Ethnotechnical Review Handbook。Daniel Freedman和我自己出版了这本手册的第一版,试图激励并教授人们在开发的各个阶段阅读程序。在当时,没有一家商业出版社愿意出版关于技术评审这类话题的书。(这本书的最新版本仍在重印发行。5

1977:Humanized Input: Techniques for Reliable Keyed Input是一本较早研究人机交互设计的先驱之作。6

1979:The Ethnotechnical Review Handbook进行了改版,加入了大量我们在阅读和分析程序的过程中学习到的东西。

1979:The Principles of Specification Design: Film Series and Workbook是我与Bob Marcus一同编写的,代表了我们在改善问题定义方面所做的首次尝试。7

1979:On the Design of Stable Systems是我与搭档Dani Weinberg一同编写的,此书将思维模式延伸到如何设计有生命力的系统中。(这本书的第二版仍在印刷,书名为General Principles of Systems Design8

1982:Are Your Lights on? How to Figure Out What the Problem Really Is。Don Gause和我在此书中继续进行了问题定义方面的研究。这本书在这个领域中仍然是一本很受欢迎的入门读物。9

1982:Rethinking Systems Analysis & Design讨论了系统分析师们如何思考,或应该如何思考。10

1982:Understanding the Professional Programmer讨论了程序员们如何思考,或应该如何思考。11

1985:Computer Information Systems: An Introduction to Data Processing。Dennis Geller和我在本书中,对软件工作的教授方法以及思考过程做了进一步的探索研究。12

1985:The Secrets of Consulting讲述了软件开发人员(以及其他人)和他们的客户之间的咨询关系。这本首创新颖的书直到今天仍然销售火爆,说明了咨询业有一定的普遍规律。13

1986:Becoming a Technical Leader继续深入探讨了领导和团队的话题,而且至今仍然销量可观。14

1989:Exploring Requirements: Quality Before Design。Don Gause和我一同编写,在更深的层次上探讨了问题定义这一主题。15

1991:What Did You Say? The Art of Giving and Receiving Feedback。与Edie和Charlie Seashore一同编写,总结了人们在来回传递信息时是如何互动的。16

1991—1997:Quality Software Management系列书籍,共4册,囊括了我所掌握的关于软件开发和软件人员管理的所有知识。这套系列丛书对系统的思考、测量、行为和变化等方面进行了心理学方面的探索。17

直到完成Quality Software Management系列丛书之后,我才感觉到对自己在四分之一个世纪前开始探索的问题有了一个结论。回顾这些年,尤其是从《心理学》第一版的角度回顾,我发现自己最终成为了一名比自己预料的还要蹩脚的预言家。但是值得表扬的是,我已料到自己将会是一个比自己预料的还要蹩脚的预言家。事实上,这正如任何一次技术评审一样——比我希望得差劲,但还是比我担心的情况要好一些。

至于这本银年纪念版,我决定采纳自己常在技术评审时给别人的建议:我不会试图掩藏我的错误,因为这些错误对我的读者而言可能是最有价值的收获来源。我对原始版本未做任何改动——原汁原味,全盘保留——以供您参考,我只是在思想受到触动的地方加入了一些“事后诸葛亮”式的评注。我希望通过这个时间穿梭式的前后对比,能带给您一些启示,只要能够对您有些许帮助,我就会感到莫大的宽慰。

第一版序言

这本书的主要目的只有一个——引发大家对一个全新领域的研究,这个新领域就是作为人类活动的计算机程序开发,或者简而言之,就是程序开发心理学。所有的其他目标都从属于这个主要目的。例如,我尽力让这本书看起来生动有趣,而不是那么太强调技术,以便让更多的人愿意阅读这本书,让读者不是只有程序员,还有程序开发的主管,以及那些如今以各种方式与编程相关联的人们。我努力实现的目标,就是让读者在读过这本书后会说:“是啊,程序开发不仅仅是一件只与硬件和软件有关的事。从现在起,我要换个角度看待这些事情了。”

因为这是一个全新的领域——用全新的方法看待我们熟悉的事物——所以不可能总有“科学的”证据来支持某些观点。事实上,本书中的许多观点仅仅是作者的意见——常常是很坚定的意见,这些意见除了我多年的个人观察之外,并没有其他什么更好的理论基础。毫无疑问,这些观点中有很多显然存在错误,就如同证据更多的许多观点也会有错误一样。但是,错误的观点与无用的观点之间存在着天壤之别。如果哪位读者对我在书中表达的观点有疑问,我诚恳地希望他能够用实验证明我的谬误。

正如我希望在文中用众多实例证明的那样,大量的偏见和误解阻碍着我们这个行业的发展。我和我的学生们已通过极其简单的实验,对这些偏见和误解发起了挑战。然而我们的资源非常有限,而问题却是如此巨大。据各种方法估计,当今从事程序员工作的人已达数十万。如果我们的经验能起到一些指导作用,让这些程序员和他们的主管能将程序员作为一个人,而不是又一台机器来看待,那么这些程序员的工作将会更加高效,并且从工作中得到更大的满足。

我相信,如果我们能用心理学的观点来看问题,那么我们的硬件和软件设计也会取得巨大的进步。希望这本书能鼓励设计师们将这个新的视角加入到他们的设计理念中。我并不指望本书中有限的想法和思索能够给他们提供所需的所有信息,而只是希望本书能够启发他们找到新的信息源。时至今日,程序开发尽管在工程或者数学层面已经比较成熟了,但是在心理学层面上却仍然非常稚嫩,所以即使是心理学方面的微小进展,也会带来巨大的帮助。我自己以及我的学生在教授、学习和进行程序开发时应用心理学的经验,就很好地证明了这一点。我希望每一位读者都能亲自感受一下这种体验。

阅读本书时,你会很容易看出本书中的思想来自很多人,其中很多都是我的学生,他们来自IBM公司设在纽约、日内瓦以及纽约州立大学宾厄姆顿分校的系统研究所。正是由于在十多年间有幸在学生中结识如此众多的第一线程序员,才让我有机会将我个人的种种经历扩展成各种各样的程序开发情景。这对于任何一个人来讲,恐怕终其一生都不可能有如此丰富的经历。无需多言,为了保护那些清白或者有过失的人,我们对这些经历中的一些进行了适当的处理。

如果没有与我的学生们进行长时间的讨论,如果没有他们那些丰富而又极具启发性的实验,那么这本书就不可能完成。而假装谦虚地说,本书所有的错误都是我自己的,这样做毫无意义——因为毫无疑问,一些与我有关的经历被这样那样地误传了。我的责任是,采纳这些经历来支持某些观点——正如读者的责任是根据自己的经历和需要,对每个观点进行判断。我最不希望看到的是,读者把这本书中的所言所想奉若神明——这正是我们要竭力摒弃的一种态度。这本书的内容只是供给思考的食物,而不是个人思考的替代品。

我想在此感谢那些为我个人,为本书贡献良多的学生们。同样感谢我所有的老师和我的朋友们。老师、朋友和学生——其实每个人都兼具这三种身份,我也希望他们每个人都能这样看待我,把我作为他们的良师益友兼学生。我要把这本书献给他们,我的感激之情不仅限于献辞那一页上,而且已融入于每句话和每个段落中。我要感谢我的妻子,她不仅照顾我的日常起居,还从一位人类学家的角度,逐页阅读了这本书。我对她的感激,用言语远远不足以表达。

Gerald M. Weinberg

书名:程序开发心理学(银年纪念版)

译者:[美]Gerald M. Weinberg 著

作者:韩江 陈玉 译

ISBN 978-7-121-10433-6

出版日期:2010年3月出版

定价:69.00元

开本:16开

页码:660 页

宣传语

堪称软件领域开山之作的本书由美国计算机名人堂首批成员之一、美国软件界著名思想家,Weinberg最初于1969年完成的,40年过去了,本书受欢迎的程度却丝毫未减,这在计算机程序开发这个日新月异,新技术、新产品层出不穷的领域无疑是个惊人的奇迹!此次翻译的是本书的《银年纪念版》,即25周年纪念版。

购买地址:卓越网 互动网

同类书推荐:完美软件——对软件测试的各种幻想 技术领导之路:全面解决问题的途径

本书详细信息:http://www.broadview.com.cn/10433

更多图书信息:www.broadview.com.cn

最新活动:博文视点大讲堂第25期——2天玩转单反相机

想即时获取更多图书及活动资讯,赶快加入博文视点读者俱乐部 吧!


1 Gerald M. Weinberg, Norie Yasukawa Freedman, and Robert Marcus, Structured Programming in PL/C: An Abecedarian (New York: John Wiley & Sons, 1973).

2 Gerald M. Weinberg, An Introduction to General Systems Thinking (New York: Wiley-Interscience, 1975).

3 Dennis P. Geller. Naomi Kleid, Thomas W-S. Plum, and Gerald M. Weinberg, Structured Programming: A Film Series and Workbook (Kansas City, Mo.: Edutronics Systems, 1975).

4 Gerald M. Weinberg et a1., High-Level COBOL Programming (Cambridge, Mass.: Winthrop, 1977).

5 This book ultimately evolved into Daniel P. Freedman and Gerald M. Weinberg’s Handbook of Walkthroughs, Inspections, and Technical Reviews, 3rd ed. (New York: Dorset House Publishing, 1990)

6 Tom Gilb and Gerald M. Weinberg, Humanized, Input: Techniques for Reliable Keyed Input (Cambridge, Mass: Winthrop, 1977).

7 Robert Marcus and Gerald M Weinberg, The Principles of Specification Design: Film Series and Workbook (Bowie, Md.: Brady Publishers, 1979)

8 The current edition is: Gerald M. Weinberg and Daniela Weinberg, General Principles of Systems Design (New York: Dorset House Publishing, 1988).

9 The current edition is: Donald C. Gause and Gerald M. Weinberg, Are Your Lights On? How to Figure Out What the Problem Really Is (New York: Dorset House Publishing, 1990).

10 The current edition is: Gerald M. Weinberg, Rethinking Systems Analysis & Design (New York: Dorset House Publishing, 1988).

11 The current edition is: Gerald M. Weinberg, Understanding the Professional Programmer (New York: Dorset House Publishing, 1988).

12 Gerald M. Weinberg and Dennis P Geller, Computer Information Systems: An Introduction to Data Processing (Boston: Little, Brown, 1985).

13 Gerald M. Weinberg, the Secrets of Consulting (New York: Dorset House Publishing, 1985).

14 Gerald M. Weinberg, Becoming a Technical Leader (New York: Dorset House Publishing, 1986).

15 Donald C. Gause and Gerald M. Weinberg, Exploring Requirements Quality Before Design (New York: Dorset House Publishing. 1989).

16 Charles N. Seashore, Edith Whitfield Seashore, and Gerald M. Weinberg, What Did You Say? The Art of Giving and Receiving Feedback (Columbia, Md.: Bingham House Books, 1991). For copies of this book, contact Bingham House at 1001 Windstream Drive, Suite 900, Columbia, MD 21044.

17 Gerald M Weinberg, Quality Software Management, Vol. 1: Systems Thinking (New York: Dorset House Publishing, 1992);Quality Software Management Vol. 2: First-Order Measurement (New York: Dorset House Publishing. 1993): Quality Software Management Vol. 3: Congruent Action (New York: Dorset House Publishing, 1994): Quality Software Management Vol. 4: Anticipating Change (New York: Dorset House Publishing, 1997)

《程序开发心理学——银年纪念版》前言相关推荐

  1. 《设计模式之禅》前言

    终于可以写前言了,这说明<设计模式之禅>已经基本完成,可以长嘘一口气了. 为什么写<设计模式之禅>      今年5月份,我在JavaEye上发了一个帖子,其中提到自己已经工作 ...

  2. 设计模式领域公认的3本经典著作之一《设计模式之禅》 [豆瓣评分 8.70]

    下载地址...... 关注公众号:程序员白楠楠,领取. 需要的朋友点我获取:设计模式之禅 图书简介...... 本书是设计模式领域公认的3本经典著作之一,"极具趣味,容易理解,但讲解又极为严 ...

  3. 读秦小波《设计模式之禅》 -- 工厂模式

    设计模式是一种非常有用的编程技巧,它对于代码的重构有些非常重要的作用,对于软件开发人员来说,需要理解并尝试着使用这些设计的方法. 个人感觉<设计模式之禅>这本书中讲解的非常具体,每个模式都 ...

  4. 设计模式之禅--思维导图

    原图ProcessOn里搜索:设计模式之禅

  5. 23种设计模式彩图-设计模式之禅

    <The Zen of Design Patterns> -<设计模式之禅> 书中的23种设计模式彩图:

  6. 设计模式之禅【六大设计原则】

    大旗不挥,谁敢冲锋--6大设计原则 单一职责原则 "你设计的类符合SRP原则吗?"--保准对方立马"萎缩"掉,而且还一脸崇拜的看着你,心想"老大确实英 ...

  7. 设计模式之禅【原型模式】

    真刀实枪之原型模式 先发个个性化电子账单来引出今天的主角 个性化服务 一般银行都会要求个性化服务,添加一些个人信息在提示信息之前. 递送的成功率 邮件的递送成功率有一定的要求,由于大批的发送邮件,会被 ...

  8. 设计模式之禅之单一职责原则

    声明:本文为阅读秦小波所写的<设计模式之禅>所写小结,文章内容可能有部分引述此书. 单一职责原则(Single Responsibility Principle) 1.定义:    在接口 ...

  9. 设计模式之禅【状态模式】

    真刀实枪之状态模式 从电梯说起 随着城市的发展,有两样东西的发明在城市的发展中起到非常重要的作用 汽车:横向发展 电梯:纵向发展 既然说电梯,那就看看电梯有哪些动作 开门 关门 运行 停止 好了,动作 ...

  10. 设计模式之禅【组合模式】

    真刀实枪之组合模式 从公司的人事架构谈起吧 公司的组织架构 从上图中可以分析出: 有分支的节点(树枝节点) 无分支的节点(叶子节点) 根节点(无父节点) 有了树状结构图,再看看类图长啥样吧! 这个类图 ...

最新文章

  1. 计算两个时间的间隔时间是多少
  2. UNIX中的Poll函数
  3. 在 python中每个模块用什么来实现_Python代码模块热更新机制实现(reload)
  4. UITableView 学习笔记
  5. asp.net mvc连接mysql_asp.net mvc4连接mysql
  6. USTC服务器使用笔记
  7. 透过源码看Session
  8. 「递归」的正确打开方式,看不懂你打我~
  9. mysql 查询语句属性值_MySQL学习——SQL查询语句(一)
  10. 小操作_js调出outlook
  11. 【动态规划】LeetCode 63. Unique Paths II
  12. 上班按小时的怎么记,小时工计时怎么用便签记上个月的工时
  13. Pr入门系列之三:新建序列
  14. python取字母以及数字随机数
  15. QQ消息自动发送器(自动发广告、聊天,支持群,支持最新的QQ2008II Beta1) C# 版...
  16. Hbase跨集群数据同步验证
  17. VR全景如何应用在家装中?体验真实的家装效果
  18. Google AdSense广告赚钱之技巧篇!
  19. LAYUI 表格 嵌套JSON不能显示的解决方法
  20. 编程团体赛 python

热门文章

  1. 请求参数完整性校验,解决流只能写一次的问题
  2. vsftpd配置好防火墙后从网页登录ftp却无法访问此页面
  3. File类之常用方法
  4. mysql 数据表中查找重复记录(条数)
  5. 没有ajax以前的隐藏 iframe 技术
  6. 程序员之道——编程也是一门艺术
  7. SQL中WHERE子句介绍
  8. Python __getattribute__ vs __getattr__
  9. [js]js设计模式-构造函数模式
  10. 前端面试题之手写事件模型及事件代理/委托