一些鲜为人知的编程事实

我的程序员经历让我明白了一些关于软件开发的事情。下面是一些在编程中可能会让人感到诧异的事情:

  • 一个程序员用了大约只用了10%-20%的时间来编码,而且大多数程序员,无论他的水平如何,其平均每天只有10-12行的代码最终会进入最终的软件产品中。这是因为,优秀的程序员会花费90%的时间来思考、调查、研究最佳的设计。而糟糕的程序员则会花费90%的时间来调试代码,并随意地改动代码并尝试让代码工作起来。

  • “A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer.” –Bill Gates
    “一个优秀的车工其工资是一个普通车工的好几倍,但是一个优秀程序员写出来的代码比一个普通程序员要值钱一万倍。——比尔盖茨”
  • 一个好的程序员比一个普通的程序员多十倍的生产率。而一个优秀的程序员的生产率则比普通程序员多20-100倍。这并不是夸张(自从上世纪60年代的研究一直表明这是一个事实)。一个糟糕的程序员并不只是没有产出的——他们并不仅是完成不不工作,而且还会制造出大量的让别人头痛并要去解决的麻烦。

  • 优秀的程序员花少量的时间写代码——那些代码都会出现在最终的产品中。那些花大量的时间写代码的程序员其实是很懒惰、很无知,或是很自大的,以至于不能使用已经存在了的解决方案来解决已有的问题。优秀的程序员精通于对通用的模式的识别和重用。好的程序员并不害怕持续地重构/重写自己的代码,直到达到最理想的方案。糟糕的程序员的代码基本上都缺少概念一致性,代码冗长,缺少层次和模式,所以,也就很难被重构。所以,重写他们的代码要比重构他们的代码要容易得多。

  • 软件和其它一切事物一样,都遵循着一致性规则。持续得更改只会让软件变成一潭烂泥,其破坏了原始设计的概念一致性。软件产品变成泥沼是不可避免的事情,但是因为程序员不考虑软件概念一致性而导致软件产品更为快速地成为泥沼,这种速度快得可能 会在软件产品还没有完成时,软件产品已经变得没有价值。设计概念一致性的失败通常都会导致软件项目的失败(而第二大导致软件项目失败的原因则是发布的软件并不是用户想要的)。软件变成烂泥的速度正在呈指数级下降,太多的项目在被完结前都面临着激增的时间和成本。

  • 一个 2004 研究报告 指出,大多数的软件项目 (51%) 都会在关键环节出问题。而15%的项目则是完全失败,当然,这比1994年有了很大的进步,当时完全失败的项目是是31%。

  • 虽然,几乎所有的软件产品都有些开发团队,但其并不是民主的。通常,只有一个人负责设计,而剩下的人去实现细节。

  • 编程是一个辛苦的工作。其是一个巨烈的脑力劳动。好的程序员24×7地在思考他们的工作,他们一般都在在洗澡和梦中编写软件中最重要的代码。因为最重要的工作只能在键盘之外完成,软件项目不可能因为加班或是加人来加快进度。

转自:http://coolshell.cn/articles/2909.html

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/2153

(0)
s19930811s19930811
上一篇 2016-07-10
下一篇 2016-07-12

相关推荐

  • shell中的引号用法

        SHELL引号  在shell里可以通过使用单引号,双引号,反引号(TAB键上方的按键),反斜线来转换某些shell元字符的含义。比如说,我们希望echo命令显示出$本身字符的意义,而不是变量,我们需要使用某些功能来屏蔽$符号本身赋予的特殊含义,使其还原本身字面的意思。 主要讲述四个比较特殊常用的符号。 1.反…

    2017-06-11
  • 推荐-虚拟化网络之OpenvSwitch(二)

    上一篇介绍了openvswitch的基础知识,接下来我们来做一个实验,利用GRE通道搭建一个跨多宿主机的虚拟化网络,深入了解openvswitch的功能。 一、实验拓扑 ip地址分配:  A1:192.168.10.1/24  A2:192.168.10.10/24   B1:192.168.10.2/24 &nbsp…

    2016-03-27
  • N25-第一周作业

    1、描述计算机的组成及其功能:   (1)按硬件来分,硬件系统主要有:运算器、控制器、存储器、输入设备和输出设备;    ① 控制器是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设的访问等;    ② 运算器的功…

    Linux干货 2016-12-05
  • 分布式文件系统MogileFS

    1、分布式系统的目标:加强A、P,在C上进行妥协     BASE模型 CAP理论: C:Consistency(一致性)  任何一个读操作总是能够读取之前完成的写操作。 A:Availability(可用性) 每一次操作总是能够在确定的时间返回。 P: Partition Tolerance ( 分区容错性 )   在出现网络分区的情况下,仍然能够满足一致…

    2017-11-23
  • bash变量详解

       shell作为用户和Unix/Linux沟通的桥梁,既可以是一个可执行的二进制程序,同时也是一个具备了编程能力的程序设计语言,定义了各种各样的变量和参数,下面介绍一下shell之上的各种变量。 1、本地变量    特性:只对当前shell生效 [root@centos7 ~/bin]#cat …

    Linux干货 2016-08-15
  • 常见RAID级别原理, Linux中软RAID实现方式详解

    RAID简介     RAID(Redundant Arry of Independent Disks)独立冗余阵列,旧称(Redundant Arry of Inexpensive Disks)廉价冗余阵列,其主要目的是将多个硬盘组成在一起来达到提高I/O、读写、冗余性。 RAID分为硬件RAID和软件RAID &n…

    Linux干货 2016-03-09