1、软件的任务是为了解决某一特定的问题,而软件开发者的任务却需要解决一系列问题。
2、温伯格说,我们不能要求每个人都聪明异常,能够解决所有难题;但是我们必须持续思考,因为只有如此,我们才能明白自己在做什么。的确,只有明白我们在做什么,我们或许才知道应该怎么做吧。
3、“写作本书的主要目的只有一个——启动一个新的研究领域:作为一种人类行为的程序开发,或者简而言之,程序开发心理学。”或许这是我阅读本书的一个大的前提吧,了解它的目的。
作为人类行为的程序开发
阅读程序
4、管理人员清楚:在程序开发过程中,人也是一个要素。当然,他们所关心的,往往不是如何去理解人的这种要素,而是如何去消除这一要素。
5、程序开发也是一种写作的形式,它和其他的写作形式没有什么两样。要学习写作,最直接的途径就是提笔写作。的确,很符合我们现在的状况,提高编程能力的唯一最实用的方法,无疑就是去编程,多编程。
6、阅读代码,就要不断问自己同一个问题:“这段代码在这里有什么用?”这是我们读懂一段代码最好的办法吧。
7、我们要仔细体会机器的局限和语言的局限、程序员的局限。
8、由于未能通晓其使用的计算机、程序语言或他们自己,程序员们到底写了多少冗余的代码?的确我们无法避免这个事实,但应努力去完善它。
9、之所以要研究人们编写程序的过程,最重要的目的无非是为了提高程序的效率、使之更加紧凑、更加廉价或是更加易于理解。
10、高明的程序员善于通过演练和审查过程来发现有价值的东西,而那些自以为是的人却不是这样。正因如此,和司空见惯的情况一样,高手越来越高,低手越来越低。
优秀程序的要素:技术规范、日程计划、适应性、效率
11、在对程序的所有要求中,首当其冲的要求是它必须正确。
12、即使不考虑符合技术规范的问题,效率的问题仍然不是最重要的。程序开发中经常遇到的一个问题是要符合开发的日程计划,推迟完成的程序常常没有意义。
13、一个系统对某一特定环境的适应性越强,它适应新环境的能力也就越弱。
14、效率并不总能用计算机的运行时间来衡量——因为经常需要通过牺牲计算机的运行时间,来换取程序运行前后需要的时间。
15、在计算机运行时间与人工时间之间折衷,“因此我们期望,随着岁月的推移,我们能够听到的关于效率的言论会越来越少——而与此同时,却越来越多的强调有效性。”
如何研究程序设计:自省、观察、实验、心理学测量、利用行为科学中的数据
16、如果不去进行尝试和努力,我们将永远不可能成功。 “重要的是不要停止怀疑”
17、如果离开自省,调查就不可能获得任何成果;而离开了广泛的调查,自省的价值也很难在应用中令人信服。
18、“参与式观察法”,融入到被观察的文化氛围之中而不会被察觉;与此同时,该文化得以继续运转,仿佛没有任何外人在场一样。
19、处理观察到的庞大数据需要付出高昂的代价,为了降低处理的代价,一个办法就是设计一些实验。
20、在任何一个刚刚起步的领域,我们都可能会犯这样那样的错误,然而或许在其中,最大的错误就是因为过于谨小慎微而裹足不前。虽然我们需要尽可能的循规蹈矩,但是更重要的却是要敢于进行试验;只要敢于进行试验,哪怕结果是失败的,也要比什么都不做更好。
21、来自不同个体的差异性,依然是破坏项目可预测性的致命因素。