《软件开发人员能力测评表.docx》由会员分享,可在线阅读,更多相关《软件开发人员能力测评表.docx(4页珍藏版)》请在优知文库上搜索。
1、软件开发人员能力测评表(每一主颗只能选一个选项)领域编号主题级别能力选项选择程序设计NOl需求分析LO接受给定的需求和代码规格OLl能对规格的遗漏提出疑问OL2了解全面情况,提出需要被规格化的整体范围OL3能够提出更好的可选方案,根据经验的浮现给出需求ON02问题分解LO只有直线式的代码,通过复制粘贴来复用OLl能够把问题分散到多个函数中OL2能够想出可复用的函数/对象来解决大的问题OL3使用适宜的数据结构和算法,写出通用的/面向对象的代码来封装问题的易改变的层面ON03交流沟通LO不能向同伴表达想法/主意,拼写和语法的能力欠缺OLl同伴能了解你在说什么,有良好的拼写和语法能力OL2能够和同伴
2、进行高效的交流OL3能够使用清晰的方式了解和交流想法/设计/主意/细节,能适应每种环境的交流ON04同一文件代码组织LO同一文件中组织没有依据OLl按照逻辑性或相似性的方法OL2代码分块,引用其他源文件时有良好的注释OL3文档头部有许可声明、接要、良好注释、一致空格缩进;文档格式优美ON05跨文件代码组织LO没想过给代码跨文件组织OLl相关文件按文件夹分组OL2每个物理文件都有独立的目的,比如一个类的定义,一个特性的实现等OL3代码在物理层组织紧密,在文件名上与设计和外观相匹配,可以通过文件分布方式洞察设计理念ON06源码树组织LO一切都放在一个文件夹内OLl初步地将代码分散进对应逻辑的文件夹
3、OL2没有循环依赖,二进制文件,库,文档,构建,第三方的代码都组织进合适的文件夹内OL3源码树的物理布局与逻辑层次、组织方式相匹配:可以通过目录名称和组织方式洞察设计理念ON07代码可读性LO单音节的名称(在国内应该是那些类似用汉语拼音命名的习惯)OLl对文件、变量、类、方法等,有良好的命名OL2没有长函数,注释解释非常规代码、bug修复、代码假设OL3代码假设验证使用断言,自然的代码流,没有深层嵌套的条件和方法ON08防御性编码LO不知道这个概念OLl检查代码中所有的参数,对关键的假设进行断言OL2确保检查了返回值和使代码失败的异常OL3有自己的库来帮助防御性编程、编写单元测试模拟故障ON0
4、9错误处理LO只给乐观的情形编码OLl基本的代码错误处理,抛出异常/生成错误OL2确保错误/异常留在程序中有良好的状态,资源,连接,内存都有被合适的清理OL3在编码之前察觉可能出现的异常,在代码的所有层次中维持一致性的异常处理策略,提出整个系统的错误处理准则ONlOIDELOIDE大部分用来进行文本编辑OLl了解其周围的接口,能够高效地通过菜单来使用IDEOL2了解最常操作的键盘快捷键OL3编写自定义宏ONllAPILO需要频繁地查阅文档OLl把最频繁使用的API记在脑子里OL2广阔且深入的API知识OL3为了使实际任务中常用API使用更加便捷,编写过APl的上层库,填补APl之间的缺口ON1
5、2框架LO没有使用过主平台外的任何框架OLl听过但没用过平台下流行的可用框架OL2在专业的职位中使用过一个以上的框架,通晓各框架的特色OL3某框架的作者ON13数据库LO认为Excel就是数据库OLl知道基本的数据库概念,规范化、ACID(原子性AtOmiCity、致性ConSiStency、隔离性Isolation持久性DUrability)、事务化,能够写简单的SeIect语句OL2能够设计良好的规范化数据库模式,精通用户视图,存储过程,触发器和用户定义类型。知道聚集与非聚集索引之间的差异。精通使用ORM(ObjeCtRelatiOnaIMaPPing对象关系映射)工具OL3能做基本的数据
6、库管理,性能优化,索引优化,编写高级的select查询,能够使用相关Sql来替换游标,理解数据内部的存储,了解如何镜像、复制数据库;知道两段数据提交如何工作ON14系统分解LO想不出比单的文件/类更好的层面OLl如果不在同平台或没采用相同的技术,能够把问题空间和设计方案分解OL2能够设计跨技术/平台的系统OL3能够在多个产品线和与外部体系一体化中虚拟化和设计复用的系统;同时也能够设计支持系统监视、报告、故障恢复等O经验N15专业平台经验LO1OLl2-3OL24-5OL36+ON16专业经验LO1O年龄Ll2-5OL26-9OL310+ON17领域知识LO没有该领域的知识OLl在该领域中曾经至
7、少为一个产品工作过OL2在同一领域中为多个产品工作过OL3领域专家:在该领域设计和实现数种产品/方案;精通该领域使用的标准条款和协议O学识N18工具知识LO仅限于主要的DE(VS.Net,Eclipse等)OLl知道一些流行和标准工具的备选方案OL2对编辑错、调试器、IDE、开源的备选方案有很好的了解。比如某人了解大多数ScottHanSelman的工具列表中的工具,使用过ORM1具OL3实际地编写过工具和脚本,如果这些被发布则有加分ON19语言接触LO命令式语言和面向对象语言OLl命令式语言、面向对象语言和说明型语言(SQl),如果了解静态类型vs动态类型、弱类型VS强类型则有加分OL2函数
8、式语言,如果了解延缓求值、局部套用函数、continuations(源于scheme中的一种高级控制结构)则有加分OL3并发语言(Erlang,Oz)逻辑语言(PrOIOg)ON20代码库知识LO从来没有查询过代码库OLl基本的代码库知识,了解如果构建系统OL2良好的代码库工作知识,实现过几次bug修复或者完成了一些细小的特性OL3实现了代码库中多个大型特性,能够轻松地将多数特性的需求变更具体化,从容地处理bug修复ON21下一代技术知识LO从来没听说过即将到来的技术OLl听说过某领域即将到来的技术OL2下载过alphaCTPbeta版本,并且读过一些文章和手册OL3试用过预览版而且实际地构建
9、过某物,如果共享给其他人的话则有加分ON22平台内部LO对平台内部毫无所知OLl有平台基本的内部工作的知识OL2深度的平台内部知识,能够设想平台如何将程序转换成可执行代码OL3编写过增强平台或者为其平台内部提供信息的工具。比如,反汇编工具,反编译工具,调试工具等ON23书籍LO菜鸟系列,21天系列,24小时系列,蠢货系列,OLl代码大全,别让我思考,精通正则表达式,.OL2设计模式,人件,代码珠矶,算法设计手册,程序员修炼之道,人月神话,.OL3计算机程序设计与解释,事务处理:概念与技术,计算机程序设计模型,计算机程序设计艺术,数据库系统导论,ON24博客LO听过但是从来抽不出空去接触OLl阅
10、读一些科技/编程/软件工程的博客,并且经常的收听一些播客OL2维护一些博客的链接,收集博主分享的有用的文章和工具OL3维护个在编程方面,分享有个人见解和思考的博客O软件工程N25源码版本控制LO通过日期备份文件夹OLlVSS和初级的CVS/SVN用户OL2熟练地使用CVS和SVN特性:知道如何分支和归并,使用程序库补丁安装特性等OL3有分布式CVS系统的知识,尝试过Bzr/Mercurial/DarcsGitON26自动化编诉LO只知道在IDE下编译OLl知道如何编译在命令行卜编译系统OL2能够设计一个脚本构建基本的系统OL3能够设计一个脚本来构建系统并且归档,安装程序,生成发布记录和给源码控
11、制中的代码分配标签ON27自动化测试LO认为所有的测试都是测试员的工作OLl能够编写自动化的单元测试,能够为正在编写的代码提出良好的测试用例OL2按照TDD(TestDrivenDevelopment)方式编写代码OL3了解并且能够有效自幼化安装,载入/性能和Ul测试O计算机科学N28数据结构LO不知道数组和链衣的差异OLl能够解释和使用数组,链表,字典等,并且能够用于实际的编程任务OL2了解基本数据结构时间和空间的折中,比如数组VS链表,能够解释如何实现哈希表和处理冲突,了解优先队列及其实现OL3高等的数据结构的知识,比如B-树、二项堆、斐波那契堆、AVL树、红黑树、伸展树、跳跃表以及前缀树
12、等ON29算法LO不能找出一个数组各数的平均值OLl基本的排序,搜索和数据的遍历和检索算法OL2树,图,简单的贪婪算法和分而治之算法,能够适度了解矩阵该层的含义OL3能够辨识和编写动态规划方案,良好的图算法知识,良好的数值估算的知识,能够辨别NP问题等ON30编程体系LO不知道何为编译器、链接器和解释器OLl对编译器、链接器、解释器有基本的了解:知道什么是汇编代码以及在硬件层如何工作:有一些虚拟内存和分页知识OL2了解内核模式VS用户模式,多线程,同步原语以及它们如何实现,能够阅读汇编代码:了解网络如何工作,了解网络协议和SoCket级别编程OL3了解整个程序堆栈、硬件(CPU+内存+中断+微码)、二进制代码、汇编、静态和动态链接、编码、解释、JIT(just-in-time)编译、内存碎片回收、堆、栈、存储渊编址O本人根据已掌握的信息对以上目标进行了客观公正的评价。评审人/自评人:年一月日