软件开发人员能力模型

最高层:过程控制和管理
第三层:方法、思想和理论
第二层:具体技术、语言和工具
最底层:基础原理、基础知识

 

最底层是基础原理和基本技术:包括计算机原理、电路、数据结构、数据库原理、编译原理、操作系统等。这些知识是很基础的有了一定的基础才能更好的学习其它能力

第二层是具体技术、语言和工具,包括各种编程语言、开发环境、数据库、开发框架等。每显然,一般情况下要学习第二层的内容必须要有以最底层的能力为基础,当然也有人没有任何基础就能学习第二层的能力,但是一般这样学习效果很差,知其然不知其所以然,遇到一些问题也会不知所措。另一方面第二层的学习又会反过来影响最底层的能力,它能巩固基础知识的学习,能暴露出你在基础方面的不足,还能驱动你对基础知识的学习。当我还是个程序员的时候,学习的内容主要集中在这两个层次。

第三层是方法、思想和理论,包括面向对象思想、设计原理、设计模式、需求工程、UML等,同样第三层的能力也要以第二层为基础,具个例子来说,要学习面向对象的设计方法首先要学会一门面向对象语言还要会使用case工具,同时第三层的能力又会反过来影响第二层,好的方法能更好的发挥你的技术,还可以弥补技术的不足,举几个例子来说,设计做的好是不是写起程序来很轻松,断言、单元测试这些方法能让代码的质量达到前所未有的高度。

 

最高层是过程控制和管理,这个层次的能力通常涉及时间跨度和团队协作,包括项目管理的能力,软件过程的控制能力、版本控制的能力、需求管理的能力等。同样这一层次的能力也要以第三层的能力为基础,举例来说,如果软件没有好的架构,那不管采用什么过程最终都会一团糟,而良好的设计能力,再加上迭代的开发过程、严格的版本控制,就一定能开发出优秀的软件。

 

一个优秀的软件开发人员各个层次的能力应该是比较均衡的,并且这些能力不应该是独立,它们应该能组合在一起发挥出整体性的威力。


通过这个模型也可以指导我们的学习过程,一般地,我们应该先掌握下一层的能力再掌握上一层的能力,但又不能只停留在下一层。我见过不少大学生,刚开始工作就学习项目管理,还一些做项目N年的前辈,能够把类库倒背如流,还不知什么是UML、什么是内聚、藕合和粒度。

我觉得这都不是好的现象,我认为能力的学习也应该采取迭代的方式,我们先要打基础,但也不需要打一个完美的基础,我认为打个三成就够了,然后就可以尝试学习上一层的的能力,可能你会掌握一成上层的能力,这时会发现基础还打的有问题,然后再带着你的问题来补基础。如此反复,当你上一层的能力也达到三成时,又可以尝试再上层的学习。这时就把上一层当成是基础再上一层当成是上层。如此反复。

你可能感兴趣的:(软件开发人员能力模型)