[No000024]鲜为人知的编程真相
当程序员的经历让我知道了一些关于软件编程的事情.下面的这些事情可能会让朋友们对软件开发感到惊讶:
一个程序员用在写程序上的时间大概占他的工作时间的10-20% ,大部分的程序员每天大约能写出10-12 行的能进入最终的产品的代码 — —不管他的技术水平有多高. 好的程序员花去90% 的时间在思考、研究和实验,来找出最优方案 .差的程序员花去90% 的时间在调试问题程序、盲目的修改程序,期望某种写法能可行.
“一个卓越的车床工可以要求比一个一般的车床工多拿数倍高的工资,但一个卓越的软件写手的价值会10000 倍于一个普通的写手.” — — 比尔盖茨
一个好的程序员的效率会是一个普通的程序员的十倍之上.一个伟大的程序员的效率会是一个普通程序员的20-100 倍.这不是夸张 — — 1960 年以来的无数研究都一致的证明了这一点.一个差的程序员不仅仅是没效率 — — 他不仅不能完成任务,写出的大量代码也让别人头痛的没法维护.
伟大的程序员只花很少的时间去写代码 — — 至少指那些最终形成产品的代码.那些要花掉大量时间写代码的程序员都是太懒惰,太自大,太傲慢,不屑用现有的方案去解决老问题.伟大的程序员的精明之处在于懂得欣赏和重复利用通用模式. 好的程序员并不害怕经常的重构(重写)他们的代码以求达到最好效果 .差的程序员写的代码缺乏整体概念,冗余,没有层次,没有模式,导致很难重构.把这些代码扔掉重做也比修改起来容易.
软件遵循熵的定律,跟其它所有东西一样.持续的变更会导致软件腐烂,腐蚀掉对原始设计的完整性概念.软件的腐烂是不可避免的,但程序员在开发软件时没有考虑完整性,将会使软件腐烂的如此之快,以至于软件在还没有完成之前就已经毫无价值了.软件完整性上的熵变可能是软件项目失败最常见的原因.(第二大常见失败原因是做出的不是客户想要的东西.)软件腐烂使开发进度呈指数级速度放缓,大量的软件在失败之前都是面对着突增的时间要求和资金预算.
2004 年的一项研究表明大多数的软件项目(51% )会在关键功能上失败,其中15% 是完全的失败.这比1994年前有很大的改进,当时是31% .
尽管大多数软件都是团体开发的,但这并不是一项民主的活动.通常,一个人负责设计,其他人负责实现细节.
编程是个很难的工作.是一种剧烈的脑力劳动. 好的程序员7 ×24 小时的思考他们的工作 .他们最重要的程序都是在淋浴时、睡梦中写成的.因为这最重要的工作都是在远离键盘的情况下完成的,所以软件工程不可能通过增加在办公室的工作时间或增加人手来加快进度.
[No000024]鲜为人知的编程真相的更多相关文章
- [No000023]为何没有更多人从事程序员的工作?程序员常有,优秀程序员不常有!
成为优秀的程序员是极其困难的,并且这个过程不可能一蹴而就. 我们不可能期待去种一些树,然后一夜间收获有着2000年树龄的红杉树,无论其需求有多大. 人格特点 一个人首先得是自学者来学习编程.仅仅是超过 ...
- html实现钝角效果;html实现限制一行字数的显示,超出的部分用省略号(....)来代替
前端实现div框边角的钝化虽然简单,但是有时候突然想不到,特此写下几句实现方法,以便记忆. 实现div框四个角都钝角的操作:设置 div : border-radius=10px; 实现div框一个角 ...
- 关于编程一些鲜为人知的真相 csdn
<关于编程一些鲜为人知的真相>一文讲了一些编程的真相:如果把所有项目的生命周期平均一下,那么一个程序员大概10-20%的时间用来写代码,并且大多数程序员可能每天大约只有10-12行代码会进 ...
- C#与C++的发展历程第三 - C#5.0异步编程巅峰
系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 3. C#与C++的发展历程第三 - C#5.0异步编程的巅峰 C#5.0 ...
- 祝贺 Linux 25 岁:25 个关于 Linux 的惊人真相!【转载】
作者:Javen Fang链接:https://zhuanlan.zhihu.com/p/22222383来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 25 年前的这 ...
- RAR和ZIP:压缩大战真相
转:http://fqd2eh4y.blog.163.com/blog/static/69195855200801035015857 前言--王者归来? 等待足足两年之久,压缩霸主WinZip终于在万 ...
- 架构师速成-如何高效编程 for java
引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手 ...
- Rest风格WEB服务(Rest Style Web Service)的真相
http://blog.csdn.net/jia20003/article/details/8365585 Rest风格WEB服务(Rest Style Web Service)的真相 分类: J2E ...
- 利用python yielding创建协程将异步编程同步化
转自:http://www.jackyshen.com/2015/05/21/async-operations-in-form-of-sync-programming-with-python-yiel ...
随机推荐
- SharePoint 2013 PowerShell命令备份还原报错
错误截图: 文字描述: Restore-SPSite : <nativehr>0x80070003</nativehr><nativestack></nati ...
- SharePoint 2010 匿名访问开启后不能访问Allitems.aspx或DisplayForm.aspx
Body: Full Credit goes to Pet Stilgoe: http://www.petestilgoe.com/2010/02/allowed-anonymous-access-o ...
- android调试工具DDMS的使用详解
具体可见http://developer.android.com/tools/debugging/ddms.html. DDMS为IDE和emultor.真正的android设备架起来了一座桥梁.开发 ...
- 手动配置 Android SDK
下载地址与说明http://www.androiddevtools.cn/#sdk-list 手动添加 SDK 这是Android开发所需的sdk,下载并解压后,将解压出的整个文件夹复制或 ...
- Xcode7.3更新后插件失效的解决方法
昨天发布的Xcode7.3,用了一天的时间终于装上了(网络不给力),突然发现原来所使用的插件不能用了,当时表情如下: 记得在更新7.2的时候也是这样的,当时重新下载的插件安装成功,但是未免有些麻烦,经 ...
- art.dialog.art 中,将子页面窗口中的值传递给父框架中
artDialog.open.origin.document.getElementById('父元素ID').value=document.getElementById('子页面元素ID').valu ...
- 学习 MySQL-DBA常用SQL汇总
创建用户 GRANT USAGE ON *.* TO 'rp'@'%' IDENTIFIED BY 'rp' MAX_UPDATES_PER_HOUR MAX_CONNECTIONS_PER_HOUR ...
- .NET 多语言支持解决方案(转)
asp.net 2.0中的App_GlobalResources可以用来解决本地化的问题,程序会根据浏览器的语言首选项自动判断显示出本地化的界面. 首先在App_GlobalResources新建re ...
- jQuery中find和filter的区别
本文来自:http://blog.csdn.net/woshixuye/article/details/7255260 这是jQuery里常用的2个方法. 他们2者功能是完全不同的,而初学者往往会被误 ...
- 使用Web.Config Transformation配置灵活的配置文件
发布Asp.net程序的时候,开发环境和发布环境的Web.Config往往不同,比如connectionstring等.如果常常有发布的需求,就需要常常修改web.config文件,这往往是一件非常麻 ...