一个程序员用在写程序上的时间大概占他的工作时间的10-20%,大部分的程序员每天大约能写出10-12行的能进入最终的产品的代码 — —不管他的技术水平有多高。 好的程序员花去90%的时间在思考、研究和实验,来找出最优方案。差的程序员花去90%的时间在调试问题程序、盲目的修改程序,期望某种写法能可行。
”一个卓越的车床工可以要求比一个一般的车床工多拿数倍高的工资,但一个卓越的软件写手的价值会10000倍于一个普通的写手。“ — — 比尔 盖茨
伟大的程序员只花很少的时间去写代码 — — 至少指那些最终形成产品的代码。那些要花掉大量时间写代码的程序员都是太懒惰,太自大,太傲慢,不屑用现有的方案去解决老问题。伟大的程序员的精明之处在于懂得欣赏和重复利用通用模式。好的程序员并不害怕经常的重构(重写)他们的代码以求达到最好效果。差的程序员写的代码缺乏整体概念,冗余,没有层次,没有模式,导致很难重构。把这些代码扔掉重做也比修改起来容易。
软件遵循熵的定律,跟其它所有东西一样。持续的变更会导致软件腐烂,腐蚀掉对原始设计的完整性概念。软件的腐烂是不可避免的,但程序员在开发软件时没有考虑完整性,将会使软件腐烂的如此之快,以至于软件在还没有完成之前就已经毫无价值了。软件完整性上的熵变可能是软件项目失败最常见的原因。(第二大常见失败原因是做出的不是客户想要的东西。)软件腐烂使开发进度呈指数级速度放缓,大量的软件在失败之前都是面对着突增的时间要求和资金预算。
2004年的一项研究表明大多数的软件项目(51%)会在关键功能上失败,其中15%是完全的失败。这比1994年前有很大的改进,当时是31%。
尽管大多数软件都是团体开发的,但这并不是一项民主的活动。通常,一个人负责设计,其他人负责实现细节。
编程是个很难的工作。是一种剧烈的脑力劳动。好的程序员7×24小时的思考他们的工作。他们最重要的程序都是在淋浴时、睡梦中写成的。因为这最重要的工作都是在远离键盘的情况下完成的,所以软件工程不可能通过增加在办公室的工作时间或增加人手来加快进度。
分享到:
相关推荐
ACCP 6.0还强调高强训练编程能力,要求学员在一年半的时间内完成52000行代码编写,这相当于一名程序员两年的代码编写量。在项目驱动的案例贯穿方面,课程提供了CRM、ERP等中型项目实战训练,学员可以通过演练26项...
下面的这些事情可能会让朋友们对软件开发感到惊讶: 一个程序员用在写程序上的时间大概占他的工作时间的10-20%,大部分的程序员每天大约能写出10-12行的能进入最终的产品的代码——不管他的技术水平有多高。...
初级程序员考试是针对那些希望进入IT行业,尤其是编程领域的初学者所设立的一项资格考试,旨在考核候选人在计算机基础知识、编程语言、算法设计和问题解决等方面的能力。 首先,从时间跨度来看,这些真题涵盖了近八...
7. **编程挑战**:在程序的调试阶段,由于一个小故障导致程序无法正常运行,这突显了编程中的细节处理和错误调试的重要性。实习生还面临了将工资安排与每个员工对应起来的难题,但由于时间紧迫和缺乏经验,未能找到...
下面的这些事情可能会让朋友们对软件开发感到惊讶: 一个程序员用在写程序上的时间大概占他的工作时间的10-20%,大部分的程序员每天大约能写出10-12行的能进入最终的产品的代码——不管他的技术水平有多高。...
高强训练编程能力是ACCP 6.0课程的另一大亮点,旨在通过大量的代码编写实践,让学员在一年半的时间内完成52000行代码编写,这相当于一名程序员两年的代码编写量。 项目驱动案例贯穿也是ACCP 6.0课程的特色之一,...
32. **编程题:写一个Singleton出来** - 双重检查锁定模式的Singleton示例: ```java public class Singleton { private volatile static Singleton instance; private Singleton() {} public static ...
- **finalize**:与垃圾回收机制相关,是`Object`类的一个方法,提供了一种在对象被垃圾回收前执行清理工作的机会。不过,此方法已被标记为过时,并不推荐使用。 #### 2. 匿名内部类(Anonymous Inner Class)能否...
因此,struct在内存使用上更加灵活和安全,但可能占用更多空间。 #### sizeof运算符的使用 `sizeof`运算符用于获取变量或类型所占的字节数。对于基本类型,`sizeof`的结果通常与定义时的大小一致;但对于复杂类型...
"不占什么内存等资源"这一特点表明,CHKEN时间增强工具在设计时充分考虑了性能优化,它不会像某些大型应用程序那样消耗大量系统资源,这使得它能够在后台平稳运行,不会对用户的计算机性能造成明显影响。对于那些...
- 第6行有4个元素,每个元素占6字节;第4列有9个元素,每个元素占6字节。 - 共同元素W64只计算一次,因此共 = `(4 + 9 - 1) * 6 = 72`字节。 3. **C. 若按行顺序存放二维数组W,其起始地址的字节号为100,则二维...
- **非静态内部类**可以直接访问外部类的所有成员,包括私有成员,但会携带一个对外部类实例的引用,因此在资源消耗上比静态内部类大。 #### 3. HashMap与Hashtable的区别 - `HashMap`允许键和值为`null`,而`...
指针本质上是一个变量,它存储的是另一个变量的内存地址,即变量在计算机内存中所处的位置。理解并熟练运用指针是成为C语言高手的关键。 在C语言中,不同的数据类型占据的内存大小不同。例如,`int`类型的变量`a`和...
- `finalize`:是Object类的一个方法,用于在对象被垃圾回收前进行清理工作。但不保证一定会调用,因此不应依赖此方法进行资源释放。 2. **Anonymous Inner Class(匿名内部类)** - 可以继承其他类,但只能继承...
《程序员考试大纲与培训指南(2009版)》是一个针对程序员资格认证的重要参考资料,这份文档详尽地列出了2009年度程序员考试的各项要求、内容结构以及备考建议。文档的主体部分包含了以下几个核心知识点: 1. **...
- **考试时间**:整个鉴定过程持续3个小时,并在一次组织中完成。 #### 二、具体考核方案 ##### 1. 基本概念(考试时间40分钟) - **考试形式**:闭卷机考。 - **题型与题量**: - 单选题:共80道题目,每题1分...
该系统的主要目的是提供一个科学的依据和解决方案,解决图书馆中占位问题,创造一个良好的学习环境,节省同学们找座位的时间,并更合理地使用图书馆自习室。 该系统的主要内容包括需求分析、系统设计、编码、系统...
2. **缓存模拟**:程序可能包含一个简单的缓存实现,例如LRU(最近最少使用)或LFU(最不经常使用)算法,用于演示如何存储和检索数据,以及如何在缓存满时决定淘汰哪些数据。 3. **内存监控**:通过内置的系统调用...