《程序员思维修炼 (修订版)》试读:1.1 再提“实用”

欢迎大家! 感谢选择这本书。我们将共同经历一次有关认知科学、神经学、学习和行为理论的旅程。你将看到人类大脑令人惊奇的工作机制,并研究如何克服这一系统的局限来提高自己的学习和思考技能。 我们将开始重构你的“湿件”——对大脑进行“重新设计”和“重新连线”,使你更高效地工作。不论你是程序员、管理者、“知识工人”、技术奇人还是思想家,或者你只是想让你的大脑聪明一点,这本书对你都会有所帮助。 我是一名程序员,所以我的例子和言论都离不开软件开发领域。但是,如果你不是开发人员,也不必担心,实际上程序设计与使用神秘、深奥的编程语言编写软件没有多大关系(尽管我们总是习惯性地认为它们很相关)。 程序设计其实就是解决问题,它需要发明、创造和灵感。不论你从事什么职业,可能都需要创造性地去解决问题。然而,对于程序员来说,既要受到数字计算机系统的严格约束,又要展开丰富而灵活的人类思考,这就会展示二者的强大力量,又会深深地暴露二者的缺陷。 无论你是一名程序员,还是一位心灰意冷的用户,可能都曾认为软件开发是人类可以想象和遇到的最艰难的工作。它的复杂性耗尽了我们的全部智慧,而一旦失败则后果是可怕的,且往往极具新闻价值。我们曾经让宇宙飞船偏离了轨道,撞向遥远的星球;让昂贵的火箭爆炸,蒙受无法弥补的实验损失;给消费者寄去索要零美元的催款信,搞得人家莫名其妙;时不时还让航空旅客滞留在机场。 适才我们发现:这完全是我们自己的错误造成的。我们自身往往增加了程序设计的难度。随着软件行业的不断发展,我们似乎失去了作为一名软件开发人员所必需的最基础、最重要的技能。 不过好在,我们此时此地就能改正这个错误。本书将告诉你如何去做。 过去40年中,程序员引入到程序中的缺陷的数量已经基本保持不变。尽管程序设计语言、技术、项目方法论等都在不断改进,但缺陷发生的频率仍然保持在同一水平,没能得到改善 。 也许这是因为我们一直关注着错误的事情。尽管技术上有了很多显著的改变,但有一样东西却始终没变:我们自己——作为开发人员的人。 软件并不是在集成开发环境(IDE)或其他工具上设计出来的,它是在我们的大脑中想象和创造出来的。 软件是在头脑中创建的。 Software is created in your head. 思想和概念是需要在团队(也包括付钱让我们开发软件的人)中分享和交流的。我们已经在改进基础技术——程序设计语言、工具、方法上花费了很多时间,当然这也是十分必要的,但现在是我们更进一步的时候了。 现在我们需要研究的真正难题是团队内部和团队间的交流,甚至更困难的问题是完全陈旧的思想。没有任何项目是孤岛,软件不可能孤立地创建或者运行。 Frederick Brooks在他的里程碑式的文章《没有银弹》[Bro86]中提出:“软件产品处于应用、用户、规则和硬件 的合力之下。这些因素总是在不断变化,迫使软件产品也随之改变。” Brooks的言论把我们推向了社会漩涡的中心。考虑到社会中各个相关团体的复杂交互影响和社会的持续变化,在我看来当前最重要的两项技能就是:  沟通能力;  学习和思考能力。 软件行业正在逐步提高沟通能力。特别是敏捷方法(见注解栏),强调了团队成员之间、最终客户和开发团队之间的沟通交流。类似《演说之禅:职场必知的幻灯片秘技》[Rey08]这样的大众图书突然热卖,表明越来越多的人意识到简单、有效的沟通非常重要。这是个好的开始。 不过,提高学习和思考能力要更难一些。 程序员需要不断地学习——不仅仅是学习新技术,还包括应用的问题域、用户社区的奇思妙想、同事的古怪习惯、行业的八卦新闻和项目演进的重要特征,我们必须学习学习再学习,持续不断地学习,然后把学习成果应用到解决日常遇到的一切新旧问题上。 也许,这些听起来都相当容易,但学习能力、批判性的思考能力和创造力——所有这些扩展思维的能力,都取决于你自己。这些东西没人教得了,你必须自己学习。我们往往错误地看待老师和学生的关系:不光是老师在教,学生也要学。学习完全取决于你自己。 我希望本书能够帮你获得又快又强的学习能力和更实用的思考能力。 什么是敏捷方法 “敏捷方法”这个词最早出现在2001年2月的一次峰会上,与会的17个人都是软件开发行业领军人物,他们创建了各种开发方法,如极限编程、Scrum、Crystal,当然也包括我们的注重实效的编程。 敏捷方法在很多重要的方面都与传统的基于计划的方法不同,最显著的就是摆脱了死板的规则,丢弃了陈旧的日程表,注重实时的反馈。 我在本书中会经常提到敏捷方法,因为很多敏捷思想和实践都是与良好的认知习惯相融合的。 1.1 再提“实用” 从最初的《程序员修炼之道》[HT00]到现在的Pragmatic系列图书,你会注意到我们一直在冠以实用(pragmatic)这个词。实用主义(pragmatism)的本质就是做对你有用的事情。 在开始讨论之前,请牢记:每个人都是不同的。虽然我引用的很多研究成果都已经被大部分人所沿用,但也有一些还未广为使用。我会运用大量不同的材料,既有通过对人脑的功能性核磁共振扫描证实的科学事实,又有一般概念性理论,既有荒诞故事,也有“嘿,Fred做了尝试,这对他管用”的日常生活中的例子。 在很多情况下,尤其是在讨论大脑时,根本的科学依据是未知的或不可知的。但你不必为此担心:如果某种方法是有效的,那么它就是实用的,我就会写入书中,供你思考。我希望这些方法中的大多数对你都有用。 切忌随波逐流。 Only dead fish go with the flow. 不过,总有些人与众不同,你可能就是其中一员。这也没关系,不要盲目地听从任何建议,包括我的建议。你可以用开放的思维来阅读本书,尝试执行一些建议,再判断哪些对你有用。 什么是湿件 wet•ware | wet ,we(e)r | 词源:wet+software 名词,谐语。指人脑细胞或思维过程,与计算机系统相对应。 也就是说,利用计算机模型类比人类的思维过程。 随着不断成长和适应,人们需要改变自己的习惯和方法。生命中没有什么是恒久不变的,只有死鱼才随波逐流,尝试改变自己。请把本书当作改变的开始。 我将会分享在我的经历中发现的实用思想和方法,剩下的就看你的了!

>程序员思维修炼 (修订版)

程序员思维修炼 (修订版)
作者: [美] Andy Hunt
原作名: Pragmatic Thinking and Learning: Refactor Your Wetware
isbn: 7115374937
书名: 程序员思维修炼 (修订版)
页数: 215
译者: 崔康
定价: CNY 49.00
出版社: 人民邮电出版社
出版年: 2015-1-1
装帧: 平装