[译文]程序员能力矩阵 Programmer Competency Matrix
2010-03-15 17:06
453 查看
程序员能力矩阵
注意每个级别的知识是累加的,即如果你在 n 阶,则表明你也知道低于 n 阶的所有知识。
计算机科学
软件工程
编程
经验
知识
注意每个级别的知识是累加的,即如果你在 n 阶,则表明你也知道低于 n 阶的所有知识。
计算机科学
2n (Level 0) | n2 (Level 1) | n (Level 2) | log(n) (Level 3) | |
数据结构 | 不知道数组与链表的区别 | 能够解释和在实际编程任务中使用数组,链表,字典等 | 知道基本数据结构的时空开销,如数组对比链表;能够解释如何实现哈希表并能处理冲突,优先队列并知道实现它们的方法 | 了解高级数据结构,如 B- 树,二项堆和 fibonacci 堆,平衡二叉树和红黑树,伸展树, trie 树等 |
算法 | 不知道如何找出一个数组中的平均数 | 基本排序,搜索和数据结构遍历与查找算法 | 树,图,简单贪心与分治算法;能理解其相关知识 | 能够识别和编码动态规划解决方案;较好的了解图算法;较好的了解数值计算算法;能识别NP 问题等。 |
系统编程 | 不知道编译器,链接器或解释器是什么 | 基本了解编译器,链接器和解释器。理解汇编代码并知道在硬件级别是如何工作的。部分了解虚拟内存和页。 | 理解内核态和用户态,多线程,同步原语以及它们如何实现;能够读懂汇编代码。理解网络如何工作,理解网络协议与 socket 级别的编程。 | 理解整个程序栈,硬件,二进制代码,汇编,静态与动态链接,编译,解释,及时编译,垃圾收集,堆,栈,内存地址等等。 |
2n (Level 0) | n2 (Level 1) | n (Level 2) | log(n) (Level 3) | |
源代码版本管理 | 根据日期备份文件夹 | VSS 使用和初学使用 CVS/SVN | 精通使用 CVS 和SVN 。知道如何分支和合并,使用补丁建立目录属性等。 | 了解分布式 VCS 系统。尝试过 Bzr/ Mercurial/ Darcs/ Git |
Build 自动化 | 只知道如果使用 IDE 去 build | 知道如何使用命令行 build 系统 | 能够用脚本 build 基本系统 | 能使用脚本 build 系统,文档,安装,产生发布 notes 和标记代码 |
自动化测试 | 认为所有的测试都是测试人员的工作 | 写过自动化单元测试并为代码建立好的单元测试用例 | 使用 TDD 方式写代码 | 理解并能建立自动的功能测试,负载/ 平衡和 UI 测试 |
2n (Level 0) | n2 (Level 1) | n (Level 2) | log(n) (Level 3) | |
问题分解 | 仅仅因为重用而直接拷贝粘贴代码 | 能够将问题分解为多个功能 | 能够想出重用的功能和对象以解决整体问题 | 使用合适的数据结构和算法,考虑泛化和面向对象的代码以封装问题易变化的层面 |
系统分解 | 不能超出单个文件和类考虑问题 | 能够打破问题空间并设计解决方案只要它在相同平台和技术范围内 | 能够跨多个技术领域与平台设计系统 | 能够利用多个产品线和集成外部系统以虚拟化和设计复杂系统。也能够设计操作以支持系统的 monitoring, reporting, fail overs |
交流 | 不能和同事表达思想与想法。较差的拼写与语法。 | 同事能理解所说的。较好的拼写与语法 | 能够有效的与同事交流 | 能够不含糊的理解与交流思想 / 设计 / 观点,并能根据环境调整沟通 |
在一个文件中组织代码 | 没有明显的组织结构 | 方法在逻辑与访问方式上被划分 | 代码被划分为多个域,并通过对其他代码文件的引用加以注释 | 文件有 license 头,总结,较好的注释,统一的空行使用。文件看起来美观。 |
跨文件代码组织 | 不考虑跨文件的代码组织 | 相关文件被分组放进一个文件夹 | 每个物理文件有其独特的目的,例如类定义,功能实现等 | 物理级别上的代码组织非常匹配于设计,文件名与目录分布都能透视出设计 |
源代码树管理 | 所有的都在一个文件夹里 | 代码基本区分进不同逻辑的文件夹 | 没有循环依赖,二进制文件,静态库,文档, builds ,第三方代码都被组织放在合适的文件夹里 | 源代码树的物理表现匹配于逻辑组织和管理。目录名和管理提供了对整个系统设计的透视 |
代码可读性 | 单音节名 | 良好的文件名,变量名,类名及方法名 | 没有长方法,对不寻常代码, bug 修改,代码假设加上注释 | 代码假设使用断言证明,自然的代码流,无深度的条件或方法嵌套 |
防御性编码 | 不理解这个概念 | 检查所有的参数并对代码中重要的假设加上断言 | 确保检查返回值并对代码可能失败的异常进行检查 | 拥有自己的库以帮助防御性编码,通过单元测试模拟错误 |
错误处理 | 只对愉快的 case编码 | 对代码有基本的错误处理以能够抛出异常或产生错误 | 确保错误与异常处理,资源,连接和内存都被合理的清理 | 编码以提前识别可能的异常,在所有代码层面统一的维护异常处理,对整个系统的异常处理建立统一的方针 |
IDE | 通常使用 IDE 作为文本编辑 | 能够有效通过菜单使用 IDE | 知道常用的快捷键 | 写过定制宏 |
API | 需要经常查找帮助文档 | 记住常用的 API | 广泛而深入的了解 API | 针对 API 写过库以简化经常使用的任务并填补 API 空隙 |
框架 | 除了核心平台没有使用任何框架 | 听说但没有使用流行的框架 | 使用过超过一个框架并熟知框架的惯用语 | 框架作者 |
需求 | 采用已有的需求与代码去实现 | 关心未考虑的情况以考虑问题 | 理解整个 picture 并对整个领域考虑 | 能够根据经验对已有需求提出额外的选择和流程 |
脚本 | 不知道脚本工具 | 批处理文件或 shell 脚本 | Perl/Python/Ruby/ VBScript/Powershell | 写过并发布过可重用代码 |
数据库 | 认为 Excel 是一个数据库 | 了解基本数据库概念,规范化, ACID ,事务,并能写简单的查询语句 | 能够设计良好和规范的数据库结构并记住将会运行的查询;擅长使用视图,存储过程,触发器和自定义类型。知道簇与非簇索引的区别。擅长使用 ORM 工具 | 能做基本数据库管理,性能优化,索引优化,写高级的查询语句;能够用对应的 sql 语句代替游标的使用;理解索引在内部如何实现;理解数据库如何被镜像,复制等;理解两个段提交如何工作 |
2n (Level 0) | n2 (Level 1) | n (Level 2) | log(n) (Level 3) | |
对语言的专业经验 | 命令或面向对象 | 命令,面向对象和陈述 (SQL) ,如果理解静态和动态类型,弱和强类型,静态推理类型将获得额外奖励 | 函数语言,如果理解晚绑定, currying, continuations ,将获得额外奖励 | 并发 (Erlang, Oz) 和逻辑 (Prolog) |
对平台的专业经验 | 1 | 2-3 | 4-5 | 6+ |
专业经验年限 | 1 | 2-5 | 6-9 | 10+ |
领域知识 | 没有领域知识 | 在某个领域至少工作从事一个产品 | 在相同领域从事工作多个产品 | 领域专家。在领域内设计和实现多个产品与解决方案。熟知和理解领域内的术语与协议 |
2n (Level 0) | n2 (Level 1) | n (Level 2) | log(n) (Level 3) | |
工具知识 | 局限于主要的 IDE | 知道流行与标准工具的其他选择 | 熟知编辑器, debugger 和 IDE ,开源的选择等等。使用过 ORM 工具 | 实际写过工具和脚本,如果发布将获得额外奖励 |
代码库知识 | 未看过代码库 | 基本了解代码表现并知道如何 build 系统 | 较好了解代码库,实现过一些 bug 修补和一些小的功能 | 对代码库实现了多个大的功能,并能轻易的实现需要的修改 |
对流行技术的了解 | 没听说过流行的技术 | 听说过领域内的流行技术 | 下载过测试版本并读过一些文章与手册 | 玩过预览版并实际用它建立过一些 |
相关文章推荐
- [译文]程序员能力矩阵 Programmer Competency Matrix
- [译文]程序员能力矩阵 Programmer Competency Matrix
- [译文]程序员能力矩阵 Programmer Competency Matrix
- [译文]程序员能力矩阵 Programmer Competency Matrix
- [译文]程序员能力矩阵 Programmer Competency Matrix
- [译文]程序员能力矩阵 Programmer Competency Matrix
- [译文]程序员能力矩阵 Programmer Competency Matrix
- 程序员能力矩阵 Programmer Competency Matrix[译文]
- [译文]程序员能力矩阵 Programmer Competency Matrix
- [译文]程序员能力矩阵 Programmer Competency Matrix
- 程序员能力矩阵 Programmer Competency Matrix
- [转]程序员能力矩阵 Programmer Competency Matrix
- 程序员能力矩阵 Programmer Competency Matrix(转)
- 程序员能力矩阵 Programmer Competency Matri
- 程序员能力矩阵 Programmer Competency Matrix(阅读分析版)
- [转]程序员能力矩阵 Programmer Competency Matrix
- 程序员能力矩阵 Programmer Competency Matrix
- 程序员能力矩阵 Programmer Competency Matrix
- 程序员能力矩阵 Programmer Competency Matrix
- 程序员能力矩阵 Programmer Competency Matrix