人月神话blog:编程之道和编程之禅摘录

简介: 对于聪明的人,只要一个字;对于快马,只要轻轻一鞭;对于写得好的程序,只要单独的一个命令。 设计一个千百万程序的操作系统很容易,要改变一个人的本性却困难得多。

对于聪明的人,只要一个字;对于快马,只要轻轻一鞭;对于写得好的程序,只要单独的一个命令。
 
设计一个千百万程序的操作系统很容易,要改变一个人的本性却困难得多。
 
开发前面的百分之九十需要一半时间,而另一半时间则用来完成最后的百分之十。
 
项目计划和公布的时间表,本身毫无意义。那些日期和项目进展的里程碑本质上不意味着什么。然而有一个秘密的时间表,它被所有工作于一个项目的人所理解。这个秘密的时间表从未被外界的关注所愚弄,也从未被操纵以迎合市场的方案。这个秘密的时间表总是被遵守,因为它反映了所有开发部成员之间的相互理解。当项目反映了这个现实时,程序会如期完成;当项目计划与此现实相矛盾时,程序会被延误。
 
有三种情况肯定会导致程序设计项目的失败。第一种情况是,主管此项目的经理对软件一无所知;第二种情况是,对程序代码负责的项目带头人对编写代码毫无兴趣;第三种情况是,编写代码的程序员是临时雇佣的,对项目缺乏忠诚。这三种情况中的任何一种都会导致项目的失败;三种情况同时出现,就必死无疑了。
 
一个程序的价值不能由它的宣传册的大小,或出现在大众计算机杂志上的整页广告的数量来判断。这些噪音越响,程序越不可能有用;真正优秀的程序不需要广告,用户会口口相伟。
 
一位初学者问大师:“程序设计的真正含义是什么?”
大师回答说:“饿的时侯就吃;困的时侯就睡;当时机恰当时,就进行程序设计。”
 
一位初学者问大师,“每当我在一套新的系统上编程时,必须学会一种新的语言。为什么没有一套标准呢?”
大师转身而去。“唯一真正的标准是死亡。”他说
 
“上个星期我准备劈些木柴烧火,但我的斧子又旧又钝。于是,我去五金店买了把新的。”
“这挺有趣儿,”第一位程序员说,“但这和用户界面有什么关系呢?”
“这把新斧子附带有一本长达八页的使用说明书。”他回答说。

不懂编程之道的程序员常常把空间和时间消耗殆尽,得道的程序员则总是有足够的空间和时间去完成编程任务。
 
上士闻道,从而行之。中士闻道,谨而寻之。下士闻道,大笑之。
 
有一位编程大师,他写非结构化的程序,一位初学者刻意模仿他,也写非结构化的程序。当他让大师看他的进步时,大师批评了他的非结构化程序:“ 对一位编程大师合适的东西未必对一个初学者同样合适,在超越结构化之前,你必须理解编程之道。”
 
一个项目经理带给编程大师一个项目的需求,然后问大师:“如果我给你5个程序员,要多少时间设计这个项目?”
“一年”,大师说。
“但是我们等不了那么长时间,越快越好,如果10程序员呢?”
大师皱了一下眉头说:“那就要花2年”。
“那,100年程序员呢?”
大师耸了耸肩说:“那这个项目就永远完不成了。”

有人问一位程序员,“一个财务软件和一个操作系统哪个更容易设计?”
“是操作系统”,这位程序员回答说。
此人大惑不解。他说:“显然一个财务软件比起操作系统来说其复杂性是微不足道的”。
程序员说:“不,设计财务软件时,一个程序员必须成为持不同意见的用户与计算机的一个中介,他必须了解用户的操作习惯,报表要是什么形式,如何遵循税法。相反,一个操作系统完全与这些外部的东西无关。设计操作系统,程序员只需要达到自己的设想与机器之间的简单的和谐。这就是为什么操作系统反而比财务软件更容易设计。”
这些人笑着说。“不错,但是哪一个更容易调试呢?”
程序员没有回答。
 
写的好的程序是它自己的天堂,写的不好的程序是它自己的地狱
 
“技巧?”,大师转过身说,“我所遵循的是道--它超乎所有的技巧。当我开始编程时我看到的是整个一大块的程序,三年后我看到的是子过程。现在我什么也看不到了。我的整个存在是没有任何形式的虚无。我感觉很悠闲,总之,事实上是我的程序自己在写,有时我看到一些问题,我看到它们,就停下来静静地观察它们,然后我改变了一行代码,难题就象一阵轻烟一样化为乌有。然后我编译程序。坐在那里享受工作的喜悦。闭了一会眼睛然后退出系统。
 
一个好的农民不会不管他的庄稼。
一个好的老师不会不管哪怕是最差的学生。
一个好的父亲不会让他的任何一个孩子挨饿。
一个好的程序员不应拒绝维护他的程序。
 
为什么程序员没有效率,因为他们把时间都浪费在开会上了。
为什么程序员难于管理?因为管理者的干预太多了。
为什么程序员一个接一个地辞职,因为他们累坏了。
在糟糕的管理下工作,他们享受不到工作的乐趣。

经理对程序员说,“你们的工作时间是早上9点到正午点。”,所有的程序员都很不满。
经理又说:“好吧,那随你们的便,只要能按时完成任务。”,程序员们这下满意了,他们中午上班,一直工作到凌晨。 

目录
相关文章
|
1月前
|
算法 程序员 开发工具
代码之禅:高效编程的艺术与实践
【2月更文挑战第22天】 在数字时代的浪潮中,编程已不仅仅是一种技术活,它更是一场思维的舞蹈,一种解决问题的艺术。本文将深入探讨如何通过持续学习、精通算法与数据结构、编写可读性强和模块化良好的代码,以及利用版本控制工具来提升编程效率和质量。我们将一起揭开那些隐藏在键盘敲击背后的智慧,探索那些能够使程序员如同艺术家一般在代码世界中自由创作的技巧和方法。
|
1月前
|
程序员
代码之禅:从技术细节到哲学思考
【2月更文挑战第16天】 在数字世界的庞大宇宙中,每行代码都如同星辰,独立而明亮。本文将探索编程不仅是技术实现的手段,更是一种深层的哲学思考。我们将透过编程语言的语法和结构的表象,挖掘背后蕴含的思维模式与创造力的火花。这不仅仅是对编程实践的一次反思,更是一次关于人与机器、逻辑与直觉、控制与自由之间辩证关系的深入探讨。
9 0
|
Java 容器
|
存储 Java API
java编程思想第四版第十一章总结
容器类被分为两类:Collection和Map
99 0
|
设计模式 Java Android开发
java编程思想第四版第九章总结
本章非常重要, 里面的内容涉及到了三个设计模式, 以及接口的有点,掌握这些就是掌握了重点
119 0
java编程思想第四版第九章总结
|
设计模式 Java 编译器
java编程思想第四版第十章总结
内部类的特性 他允许你把一些逻辑相关的类组织在一起。
66 0
为了写中秋这篇文章,我学了 20 种编程语言!
为了给大家送中秋祝福,老哥也是绞尽脑汁了啊,最后想出了用排行榜前 20 名的编程语言输出中秋快乐这种方式!
|
Python
趁着课余时间学点Python(十二)面向对象的理解(结局)
趁着课余时间学点Python(十二)面向对象的理解(结局)
140 0
趁着课余时间学点Python(十二)面向对象的理解(结局)
|
存储 算法 搜索推荐
程序员学Python算法编程中常见的问题和算法
  一些著名问题与算法   如果您的飞船破了一个洞,我只能深表同情,因为我所解决的99个问题里唯独没有这个问题。   ——匿名者1   本文提到的所有问题与算法,因为有一些算法仅仅是为了试图说明某个原理,而有一些问题仅仅是为了某个算法而创造的。然而,作为索引,这里会列举出学习中最重要的那些问题与算法。   在本文大多数描述中,n代表的是问题规模,如一个序列中的元素数量。而在图论问题中,n表示的是节点的数量,m则表示边的数量。
175 0

相关实验场景

更多