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

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

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

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

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

时间: 2024-09-27 16:34:42

人月神话blog:编程之道和编程之禅摘录的相关文章

软件项目发展历史<人月神话>这本书好

    几乎是计算机软件开发的发展历史     人月神话,增加人手并不一定能提高开发速度. 原因在于,有些任务是无法分解的,存在先后顺序.无法同步进行. 增加人手,增加的是沟通成本,相互牵制.可以分解的任务就可以通过增加人手来加快速度.但是不能分解的任务,增加人手只会增加开发时长.打个通俗比方,怀孕需要12个月,增加人手,也不能加快时间. 作者赞赏的是,小型精干的技术团队是最好的.沟通成本低,开发效率高. 厨师煎一个蛋,需要5分钟,而顾客期望2分钟.怎么都达不到,2分钟的办法是,把火开大可以快速

人月到底有多少神话色彩

       台上一分钟,台下十年功        宝剑锋从磨砺出,梅花香自苦寒来:不经一番寒彻骨,哪得梅花扑鼻香:业精于勤而荒于嬉,行成于思而毁于随.不积跬步,无以至千里:不积小流,无以成江海.骐骥一跃,不能十步:驽马十驾,功在不舍.千百年来,先人的经验都在告诉我们台上一分钟,台下十年功,这句话本意指在台上表演的时间往往只有短短的一分钟,但为了台上这一分钟的表演时间,需要付出十年的艰辛努力.这些都强调了基础的重要性,编程就好比练功,如果学习.net,mfc,vb等具体的语言和工具是外功或者是招

触摸云端编程之道——基于函数计算的serverless应用开发

摘要:本文的整理自2017云栖大会-南京峰会上阿里云存储服务高级专家杨皓然的分享讲义,讲义主要介绍了基于函数计算的serverless应用开发的相关内容,从计算的新需求和计算的演化过程谈起,对比传统计算所面临的困境介绍了函数计算所具有的优势,并介绍了函数计算的使用流程和应用示例. 在2017云栖大会-南京峰会上,阿里云存储服务高级专家杨皓然做了题为<触摸云端编程之道--基于函数计算的serverless应用开发>的分享.在有明显波峰波谷特征的场景下,用户期望更低成本.更弹性的计算服务,而且软硬

美国人月均使用移动应用的时间增长65%

尼尔森:美国人月均使用应用数不超过30款腾讯科技讯 7月24日, 据国外媒体报道,尼尔森统计数据显示,美国年轻人每月使用应用的时间更长,使用的应用数量也更多,但月均应用使用数量未超过30款.根据尼尔森的统计数据,Statista绘制了一张信息图表.图表显示,年龄为18至24岁的美国人月均使用Android和iOS应用的时间约为37小时.在所有年龄组,这个时间数值排名首位.随着年龄的增加,用户使用应用的时间也会随之减少.尽管如此,年龄在54岁以上的美国人月均应用使用时间仍然高达22小时.2013年

近五成职场人月花销低于两千

人才招聘网站发布消费调查 约四千名被访者中-- (记者 王贺健)近日,知名人才招聘网站英才网联与搜狐教育频道.<法制晚报>共同推出"职场人消费调查".该调查历时两周,参与问卷者接近4000人.调查显示,近五成职场人的月度花销在2000元以下. 在被调查的人中,收入在8000元以上的人占15%,收入在5000到8000元的占14%.七成多职场人月收入在5000元以下,甚至有一成人的收入在1500元以下. 大多数被调查者表示,食品.出行.住房这三项的开支占到月度总支出的八成左右

yui3的AOP(面向切面编程)和OOP(面向对象编程)

  这篇文章主要介绍了yui3的AOP(面向切面编程)和OOP(面向对象编程),需要的朋友可以参考下 首先请把手放胸前成沉思状:我上了生活,还是被生活上了自己? 没想出答案把,恩,可以读下文了.从语义角度讲,同一事物的不同表述可以反映人的主观视角的不同,从哲学角度将,世界观影响方法论,我们看事物的角度不同,有时会得出截然相悖的结论,从而会影响我们的做事方式和行为准则,现实生活如此,在丰富多彩的编程语言中更是如此,编程模式充满了对现实世界的各种模拟,包括是面向过程,面向对象,还有面向切面.我们大概

C#并发编程经典实例--并发编程概述

来自 "C#并发编程经典实例" 优秀软件的一个关键特征就是具有并发性.过去的几十年,我们可以进行并发编程,但是难度很大.以前,并发性软件的编写.调试和维护都很难,这导致很多开发人员为图省事放弃了并发编程.新版.NET 中的程序库和语言特征,已经让并发编程变得简单多了.随着Visual Studio 2012 的发布,微软明显降低了并发编程的门槛.以前只有专家才能做并发编程,而今天,每一个开发人员都能够(而且应该)接受并发编程. 1.1 并发编程简介 首先,我来解释几个贯穿本书始终的术语

yui3的AOP(面向切面编程)和OOP(面向对象编程)_YUI.Ext相关

首先请把手放胸前成沉思状:我上了生活,还是被生活上了自己? 没想出答案把,恩,可以读下文了.从语义角度讲,同一事物的不同表述可以反映人的主观视角的不同,从哲学角度将,世界观影响方法论,我们看事物的角度不同,有时会得出截然相悖的结论,从而会影响我们的做事方式和行为准则,现实生活如此,在丰富多彩的编程语言中更是如此,编程模式充满了对现实世界的各种模拟,包括是面向过程,面向对象,还有面向切面.我们大概已经非常熟悉面向过程和面向对象,切面的英文是Aspects(有时译作方面,我感觉用切面更能贴切的表达A

PHP编程开发怎么提高编程效率 提高PHP编程技术_php实例

用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加 上了双引号). 1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id'] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用echo的多重参数(译注:指用