程序员该具备怎样的知识结构?
一名 21 世纪的现代程序员,到底应该掌握哪些知识点和技能?
不同水平的程序员,掌握的知识结构显然是不同的。按照知识和技能水平,程序员通常可以分为 3/4 个等级:
初级
中级
高级
架构师级
现代程序员数量庞大,种类很多,工作和贡献在现代社会的各个行业领域。因此,建立一个大而全、贵而重的程序员知识体系是很困难的。以下结合 Web 系统开发,先从初、中级程序员说起。
初级程序员
初级程序员当然主要是从计算机和软件的基础学起。
主要任务是熟练掌握 1-2 门高级程序设计语言,能够独立完成一些简单的 demo 应用或模块的开发。
...
中级程序员
中级程序员应该能协助高级程序员工作,带领初级程序员。
建模
UML
需求分析
功能需求(FR)与非功能需求(NFR)
Feature, Use Case
编程
熟练掌握 3-4 门编程语言;
掌握 1 个主流开发平台,及其主要框架应用开发的基本技能。
测试
测例编写
执行基本测试类型
数据库
普通数据库设计与开发
网络通信
普通的网络编程
文档
能编写一些较高质量的开发模块文档和模型
架构设计
OOD
架构模式、设计模式
...
高级程序员
高级程序员应该能独立工作,带领初级和中级程序员。
在架构师不在的时候,能分担全部或大部分的技术性工作。
在中级程序员掌握知识的基础上:
系统分析
OOA
建模
熟练的软件和系统建模技巧
UML 和/或 SysML
需求分析与管理
能独立编写和管理较高质量的需求文档和模型
编程
熟练掌握 4-5 门以上的软件设计语言,熟悉若干主流的开发平台和框架,具有较丰富的跨平台开发能力。
文档
能独立编写一些高质量的项目开发文档和模型
框架
框架开发
系统测试
全面而熟练的软件和系统测试技能
架构设计
熟练的 OOD 技能
熟悉大量的架构模式和设计模式
数据库
高级数据库设计与开发
网络通信
高级网络编程
...
架构师
架构师是一个项目团队的技术核心,统领整个团队完成系统或产品的开发。
除了掌握所有高级程序员所具备的知识和技能外,还起到一名技术管理者的作用。
架构师需要掌握的知识点,在高级程序员的基础上,就更多了:
业务分析
项目管理
质量保证
平台开发
团队管理
过程改进
...