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

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

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

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

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

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

目录
相关文章
【鸿蒙4.0】ArkUI组件-Image
【鸿蒙4.0】ArkUI组件-Image应用及需要注意的问题
1123 3
|
存储 开发者
CodeWave智能开发平台--03--目标:应用创建--07供应商数据表格01
CodeWave智能开发平台--03--目标:应用创建--07供应商数据表格01
|
人工智能 开发工具 计算机视觉
AI计算机视觉笔记十:结印动作识别
该项目基于恩培大佬的《火影结印识别》小项目,使用yolov5实现手势识别功能。项目包含数据集准备、模型训练和代码实现,可在无GPU环境下运行。代码利用状态机检测手势序列,完成特定结印后触发音效播放。[GitHub地址](https://github.com/enpeizhao/CVprojects)提供了详细步骤和示例代码。
|
人工智能 大数据 数据中心
算力服务器的崛起:技术革新与市场展望
在数字化浪潮中,算力服务器正经历革命性变化。技术突破如液冷系统提升性能与能效,如宁畅B8000的液冷设计,降低PUE并增强单节点算力。AI服务器市场预计2025年全球达317.9亿美元,中国年复合增长率超19%。国产化趋势明显,如中国电信采用国产芯片服务器。融合架构与绿色节能成为未来关键,适应多变业务需求和环保要求。
323 1
|
设计模式 Java API
如何处理Java中的方法过长?
如何处理Java中的方法过长?
|
XML 数据格式
蓝易云 - URI和URL和URN区别
总的来说,URI是一个广义的概念,包括URL和URN。URL提供了资源的位置信息,URN提供了资源的唯一名称。
202 2
|
安全 API 数据安全/隐私保护
【安全每日一讲】API是什么?解密API背后的奥秘
API,全称Application Programming Interface,是预定义的函数集合,用于系统间数据传输和指令交互。API简化了应用程序间的数据共享,扩展功能,实现跨平台交互,并确保数据安全性。常见的API类型包括RESTful、SOAP、RPC、GraphQL等。API的优势在于降低开发难度,提升效率,促进数据共享,优化用户体验。广泛应用于社交网络、电商平台和金融领域。然而,API也面临认证授权、数据泄露和恶意攻击等安全问题,需采取HTTPS、OAuth2等12种方法保障安全。
|
Kubernetes Oracle 关系型数据库
实时计算 Flink版操作报错合集之用dinky在k8s上提交作业,会报错:Caused by: org.apache.flink.table.api.ValidationException:,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
519 0
|
消息中间件 监控 Java
在RocketMQ中,Proxy的gRPC参数调优是一项重要的性能优化工作
在RocketMQ中,Proxy的gRPC参数调优是一项重要的性能优化工作【1月更文挑战第10天】【1月更文挑战第46篇】
398 2
|
机器学习/深度学习 搜索推荐 算法
【机器学习】推荐系统推荐算法综述
【1月更文挑战第10天】【机器学习】推荐系统推荐算法综述