04梦断代码阅读笔记
《梦断代码4》
作者并不是像其他作者一样,中规中矩,开头就是以第0章命名,这是因为0代表程序员的思维方式,因为计算机从0开始计数。
作者开始迷恋于一个开放代码并可以由游戏玩家更改程序的一个游戏,并为在它的基础上创新和增添一些功能而乐此不疲。
文中写到“Hello World”程序虽然一无所用,但足以蛊惑人心;它鼓励新手,唤起每个程序员心中乐观的一面。计算机器协会(The Association for Computing Machinery ), 维护了一张网页,上面列出将近两百种编程语言版本的"Hello World" 程序。简直就是程序代码的罗塞塔石碑。
后面作者提出了一个问题:
为什么就是不能像造桥那样造软件?
人类文明运行于软件之上。软件创建艺术却隐于暗处,即便对于专家们也是如此。互联网时间带来了快速发展的技术产生、公司创立、创造财富等也同时带来了程序的缺陷问题。而对软件开发者来说,则过的是时快时慢:如果灵感到了,一切顺利,则全然忘记时间,全心投入高速的开发之中。反之遇到瓶颈,则举步维艰的软件时间。软件不能像建造桥梁那样一劳永逸可以造福上百年。反而漏洞百出,麻烦不断,错误不停。带来无穷尽的改进和苦恼。
第1章 死定了
一个错误就可能让一个项目“死定了”。往往带来不可知因素的时间陷阱。
布鲁克斯法则:
向已延误的项目中补充人力,只会使其继续延误。
布鲁克斯写道,软件开发者通常都是乐天派,他们认定每个缺陷都可以被迅速修正,且修正旧缺陷必能减少新缺陷的数量。
布鲁克斯发现,在实际开发中,编码只占软件项目开发时间的1/6, 有一半时间用于测试和修正缺陷。但只有少数项目经理会真正按照这种思路来安排开发人员的工作时间。
所谓“人月", 是一种科学管理概念,它假定生产力可被拆分为不连续、无差异、可替换的单元。
布鲁克斯观察到,“只有在任务能分派给许多互相之间无须沟通的工作者时,人和月才是可互换品。”
“对于软件而言,项目各有差异、工具不断升级,每当团队中加入一个新组员,老组员就得放下手边的工作,帮助新组员进入角色,每位组员都要等待重新分派任务,好让新组员有事可做。在你意识到这一切之前,已经远远落后于进度了。也就是说,每次重新安排进度计划,都导致雇用更多人力,于是又不得不重新安排进度。
制作软件的大量工作受困于“序列约束",它限制了任务分解的程度:完成某项任务是处理其他任务的先决条件,这与人力投入多少无关。
布鲁克斯法则暗示最理想的开发组规模是一个人——无须停下工作与同事沟通的单个开发者
“开源的成功告诉我们,对于创造性工作,玩耍是最经济有效的模式。”
个人心得:
刚在大一时我对写代码还是很感兴趣的,尤其是当调试成功那一刻,内心充满着无限的喜悦,而现在随着写代码的数量越来越多,当初的那份喜悦也渐渐消失了,以后要重拾当初那份写“Hello World!”的渴望和愉悦,毕竟兴趣才是支持我在这个专业走下去的最大的动力。
大一的时候,作业不多,每次老师留下的代码作业都会按时完成,而且还会去敲别的代码,现在作业留的多了,但是写作业的态度并不认真了,总是像文中所写的那样“延误进度”;以后还是要在写代码时按时按量完成,每次都给自己计算好时间。