程序开发心理学读书笔记

程序开发心理学读书笔记
  作为一本与计算机有关的图书,在1971年初次出版之后,能够经过45年仍然保持活力,不能不说它是一本神奇的书。“本书开创了一个新的领域,即将程序开发作为一种人类行为来看待,而不仅仅是与硬件、软件相关。”
  45年来,虽然计算机软硬件技术在飞速地更新换代,但人类作为程序开发的主体,人类的心理状态和行为模式与45年前并没有太大的不同。因此本书温伯格先生45年前的诸多真知灼见如今依然适用。又由于20年前出版银年纪念版的时候,没有直接修改原书,而是在保持原貌的基础上增加评注,让我们可以更真切地看到在开始的25年间,软硬件技术进步和管理知识积累给程序开发的各方面带来的或多或少的影响。
  我猜有两类人大概会喜欢这本书:
  第一类是有一些开发经历,喜欢观察、思考并愿意尝试改善开发过程程序员;
第二类是从程序员转到开发管理工作的技术主管,也喜欢观察思考,愿意不断尝试改进开发过程。
另外,我非常希望其他管理层的高管也能看这本书,让他们更多地了解软件开发的过程和组织。不过书中有很多吐槽管理的地方,我怕他们就算勉强看了也不一定喜欢。
帅同社区论坛  另外在序言中,温伯格先生提醒读者:
读者的责任是根据自己的经验和需要权衡书中的所有观点。............我不希望读者在阅读的过程中接受某种观点,因为这种阅读态度正是我们要努力摆脱的。本书提供的素材只是读者在形成自己思想的过程中需要消化吸收的食物,不应成为个人思想的简单替代品。
  这个要求其实适用于读任何书。
  本书从 1、作为人类行为的程序开发;2、作为社会行为的程序开发;3、作为个人行为的程序开发;4、程序开发工具 四个方面进行了阐述。
  第一篇
合理情绪疗法
云南基层网络党建  作为人类行为的程序开发
  本篇前两章阅读程序和优秀程序的要素尝试将程序开发看成一项以人为主体的行为加以研
究,并论述了进行这种研究的可行性和必要性,第三章如何研究程序设计则从人类行为学和心理学研究方法的角度进一步讨论了对程序开发进行研究的可行性。
作为一个程序员,阅读这本书的乐趣和收获更多的来自于温伯格先生随意的各种经历。每章结尾的总结、思考问题、点评也是值得花更多时间和精力的。)
  第一章 阅读程序孔莹微博
  程序被编写成什么样子,取决于众多的因素。有的是由于计算机的局限,有的是由于程序语言的局限,有的是由于程序员的局限,有的是因为历史的偶然,而有的则可能是因为规范。
  思考题:
  请主管回答
  如果你是一线主管,你是否有能力阅读你手下的程序员所编写的程序?或者,就阅读程序的能力而言,你是否与“老一辈”的计算机和语言一同落伍了?如果你有这个能力,你真的会去阅读程序吗?如果此前你不阅读程序,为什么现在不尝试一下,看看会发现什么?
开拓创新  如果你是高层主管,你手下的一线主管们是否有能力阅读他们手下的程序员所编写的程序?你能肯定吗?向程序员了解一下,然后重新回答这个问题。然后查明一线主管是否真的阅读程序,即使他们有这个能力。我们的调查显示,由于各种原因,九成的一线主管不阅读程序。你是否认为,如果不经常阅读程序员的程序,一线主管能知道程序员的能力如何,工作是否出吗?
  请程序员回答
  你上次阅读别人的代码是在什么时候?为什么经过了这么长的时间?最近一次有人阅读你的程序并且与你讨论,是在什么时候?这个人是你的主管吗?
  到程序库或者向你的好友借一份程序。试着分析并出其中各段代码存在的原因,看看是否属于本文中介绍的某种情况。通过这个练习,你有什么收获?
  出你至少一个月之前亲自编写的一个程序,参照第2题的方式进行分析。从这个练习中,你又有什么收获?
  除了回答问题,我们还能从思考题中看到什么呢?哪些提出的问题经过这四十多年已经被
很好的解决了?哪些问题目前仍然继续存在呢?哪些问题在良好管理的团队里已经不再是问题,而在管理不善的团队中仍然存在呢?
  本章评注:
  在软件维护的过程中被阅读得最多的代码,往往并非是最好的代码。也许正因为如此,这部分代码才最需要维护。对于根本区分不出代码优劣的那些用户来说,阅读程序的确不会有什么帮助。25年来,这些问题始终没有改变。
  但是,开发人员把他们的工作提交给别人审阅,或者希望通过审阅他人的工作来提高水平时,为什么会如此之难呢?令人奇怪的是,高明的程序员善于通过排演和审查过程来发现有价值的东西,而那些自以为是的人却不是这样。正因为如此,和司空见惯的情况一样,高手越来越出,差劲的越差。
  45年之后,情况依旧。
  第二章 优秀程序的要素
  那些叫嚣着要追求效率的管理者,正是那些在得知修改代码的沉重代价后,为此而伤透脑筋的人。相反,那些过于强调程序的通用性和易于修改性的主管们,在发现自己的程序运行起来又慢又费空间时,往往又会变得怨天尤人。对于这些问题,我们必须保持一种成熟的心态——要知道,无论是心理学还是魔法,都无法帮助我们同时实现这两个相互矛盾的目标。通常我们必须在二者之间做取舍。
  在温伯格先生写作本书的45年前,效率主要指程序在计算机中的运行效率,在硬件性能已经翻天覆地的今天,把“效率”这个词理解为软件的开发效率,这段话同样成立。
  作为一个好程序,必须具备哪些要素呢?我们必须考察到不同程序各自的优点,同时还要兼顾其所在的环境。其中一些重要的因素有:
  该程序是否符合功能要求?或置更确切地说,它在多大程度上满足功能要求?
  该程序的开发是否按照计划完成?根据一些特定的方法,我们能够预测出的项目计划可能的偏差幅度会有多大?
  当条件改变时,该程序是否可能修改?修改的成本有多大?
  程序的效率如何?这里的效率是指什么?为了补偿某一个方面的低效率,我们是否会牺牲另一方面的高效率?
伤痕 卢新华  思考题:
  请主管回答:
  你根据什么标准来确定应该奖励哪个程序员?在你的标准中,是否存在互相矛盾的现象(比如,强调程序的效率,同时又要求程序具有通用性)?你会很明确地告诉程序员,自己希望在他们的程序中到什么吗?或者说,你是否只是告诉他们,你希望程序很快、很小、整洁、易于修改、错误很少,并且能在一周内完成?
  在你的公司中,制定开发进度表的重要程度如何?你是否认为“失之毫厘、谬以千里”?或者你是否认为,在奖励程序员时应该更加看重稳定性,而不是偶然的一次歪打正着?即使一个计划不可靠,只要它是完成进度的唯一希望(尽管可能根本无法完成该程序),程序员还是会采用它——你知道这是为什么吗?

本文发布于:2024-09-22 23:32:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/223760.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   是否   程序员   开发   过程   修改   阅读   效率
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议