软件界一个无可争议的事实是,不同程序员的效率有差别,而且差别很大。许多专家将优秀程序员和一般程序员区分地很清楚。
大多数研究得出结论认为,一般程序员跟优秀程序员之间在工作效率和质量上存在10:1的关系:优秀程序员和水平较差的程序员的编码时间比例为1:20;debugging时间比为1:25;代码数量比是5:1;程序执行速度比例是10:1。而且发现,程序员的代码质量和效率跟工作经验没有关系。
让我们看看一些软件大腕们是如何看待优秀程序员和一般程序员的:
Randall E. Stross:无论是从软件标准、创造性、开发速度、还是设计思路或者解决问题的能力上来说,优秀程序员比差的程序员都何止好一点。
Bill Gates:一个优秀的机床工值一个一般机床工的好几倍,而一个优秀程序员值一个一般程序员的10000倍。
Robert C. Martin:90%的代码是由10%的程序员写出来的。
就我个人从事编程行业25年、从事过六家软件公司的经历来看,10:1这个定律千真万确。基于这一定律以及程序员工作效率的差别,程序员因此被分为五大类:
1. 大师级程序员(Visionary/Artist Programmer)
大师级程序员是软件界绝对的稀有种族,他们可以创造出99.9%的程序员所创造不出来的东西。他们发明新的应用和软件模式来驱动软件产业的发展。Napster,
Netscape以及World Wide
Web都是大师级程序员创造的。对他们而言,软件更多的是艺术而非科学。在这个级别,速度和质量不是最重要的,他们创造出的财富才是最重要的。许多开发团队或者公司顶多也就一个大师级程序员,通常是这个公司的技术创始人或者CTO。
2. 开拓者程序员(Trailblazer Programmer)
开拓者程序员通常带来很好的主意和趋势。他们通常是最终产品的原型创作者,他们一天做出的事情大部分程序员需要几周甚至几个月。开拓者程序员总是在尝试新工具、新技术,不断地学习和搜寻方法来提高工作效率,并通常是其他程序员的导师和老师,而且你经常会发现当其他程序员早已离开的时候他们却依然工作到深夜。尽管这样级别的程序员工资很高,但是每个成功的公司或团队还是应该配备一两个开拓者程序员。
3.骨干程序员( Workhorse Programmer)
骨干程序员是一个公司或者开发团队的脊柱,这些人尽管不是很有创新性,但往往比较高效且值得信赖。给一位骨干程序员一套模板和合适的工具,他们总能以最短的时间交出错误最少的代码。
4.机械程序员( Drone Programmer)
许多程序员就是朝九晚五地为了填塞下自己钱包的机械程序员。他们不愿意接触新技术、避免学习新事物。许多公司或者开发团队都有许多这样的机械程序员,因为他们很便宜,但岂不知更贵的程序员才真正地更便宜。
5.白痴程序员( Idiot Programmer)
林子大了什么鸟都有,软件领域也不例外。编程需要抽象和逻辑思维,然而一些尚不具备此能力者由于向往着不错的薪水而加入了该领域。白痴程序员总是对最简单的算法也搞不清楚,他们总是错过软件截止日期,终日无所获。白痴程序员最好的出路就是换行。
分享到:
相关推荐
**定义:**这一层指那些完全没有编程技能却误打误撞进入了程序员行列的人。他们编写出的代码往往会给同事带来痛苦与困扰,甚至连其他Bad Programmers都无法察觉自己的不足之处,因为他们缺乏最基本的判断能力。 - **...
一个程序员五年学习观 本文是对一个程序员五年学习观的总结,涵盖了多个方面的知识点,包括C语言、C++语言、设计、架构、敏捷开发、模式、思想类、开发语言、Linux/Unix等。 C语言 * 《C 和指针》、《C 缺陷和...
这一层次的程序员往往热衷于追逐最新的编程语言和框架,喜欢通过解决小型练习来提升技术。然而,他们可能缺乏与实际业务需求对接的能力,忽视了市场和用户的真正需求,因此在大型项目中可能显得力不从心。 四流...
五、架构设计:当程序员积累了一定的工作经验后,他们开始从更高层次上考虑问题,比如系统架构设计。此时,他们不仅关注代码层面的问题,还会考虑系统的整体性能和扩展性。“突然认识到了设计的重要性,知道如何去...
### ACE程序员指南知识点详解 #### 一、ACE概述 **ACE**(Adaptive Communication Environment,自适配通信环境)是一个面向对象的框架和工具包,主要用于实现通信软件的核心并发及分布式设计模式。它通过一系列...
随着技术的进步,编程的思维和模式、方法也会发生翻天覆地的转变,现在思路跟三五年前相比可能就会大不相同,现在做项目需要的是新的、巧的设计思想, 所以程序员必须要提高系统设计的能力,否则永远出不了头;...
这一阶段标志着程序员开始向更深层次的技术挑战迈进。此时的程序员不仅能熟练地使用高级语言,还能深入了解操作系统底层的工作原理。这种能力通常被比喻为“手中有剑,心中无剑”,意味着他们不仅具备了实际操作的...
《2023程序员人群洞察》报告由拉勾招聘大数据研究院发布,深入剖析了程序员这一专业群体在2023年的特点、趋势以及他们在不同规模企业中的分布与表现。这份报告对于理解程序员的职业发展路径、技能需求变化以及行业...
考生需要理解OSI七层模型或TCP/IP四层模型,知道每一层的主要功能,以及TCP、UDP等传输层协议的工作方式。此外,网络安全、网络编程也是常考知识点。 六、数据库 数据库管理系统的使用和设计是程序员必备技能之一。...
### 知识点一:计算机系统的程序员视角概览 **标题**:“程序员角度深入理解计算机系统” **描述**:“本书名为《计算机系统:程序员视角》(Computer Systems: A Programmer’s Perspective),强调用较少的资源...
### JAVA程序员面试宝典知识点详解 #### 一、面向对象的基本特征 面向对象编程(OOP)是现代软件开发中常用的一种编程范式,其核心思想是将数据和处理数据的方法组织在一起,形成“对象”。在Java中,面向对象的四个...
罗盘主要由位于盘中央的磁针和一系列同心圆圈组成,每一个圆圈都代表着中国古人对于宇宙大系统中某一个层次信息的理解。 中国古人认为,人的气场受宇宙的气场控制,人与宇宙和谐就是吉,人与宇宙不和谐就是凶。于是...
【Java程序员面试宝典】是一本全面覆盖Java技术面试题目的资源,旨在帮助求职者准备面试,提升技能。以下是对部分题目及其所涉及知识点的详细解释: 1. 一个`.java`源文件中可以包含多个类,但只能有一个公开类...
根据提供的文档信息,我们可以归纳出一系列与TAO(The ACE ORB)相关的关键知识点。这份文档主要涵盖了TAO的基本使用、功能介绍以及一系列高级主题,包括但不限于编程实践、配置选项和构建过程等。 ### 一、简介 *...
- **人才基数**:中国在程序员的初级阶段(第一层)和中级阶段(第二层)拥有明显的人数优势。 - **技术水平**:虽然整体技术水平可能与西方存在差距,但中国不乏达到甚至超过西方高水平的程序员。 - **行业现状**:...