一名 21 世纪的现代程序员,到底应该掌握哪些知识点和技能?

不同水平的程序员,掌握的知识结构显然是不同的。按照知识和技能水平,程序员通常可以分为 3/4 个等级:

初级
中级
高级
架构师级

现代程序员数量庞大,种类很多,工作和贡献在现代社会的各个行业领域。因此,建立一个大而全、贵而重的程序员知识体系是很困难的。以下结合  Web 系统开发,先从初、中级程序员说起。


初级程序员


初级程序员当然主要是从计算机和软件的基础学起。

主要任务是熟练掌握 1-2 门高级程序设计语言,能够独立完成一些简单的 demo 应用或模块的开发。

...


中级程序员


中级程序员应该能协助高级程序员工作,带领初级程序员。


建模

UML


需求分析

功能需求(FR)与非功能需求(NFR)

Feature, Use Case


编程

熟练掌握 3-4 门编程语言;

掌握 1 个主流开发平台,及其主要框架应用开发的基本技能。

测试

测例编写

执行基本测试类型


数据库

普通数据库设计与开发


网络通信

普通的网络编程

文档

能编写一些较高质量的开发模块文档和模型


架构设计

OOD

架构模式、设计模式



...


高级程序员


高级程序员应该能独立工作,带领初级和中级程序员。

在架构师不在的时候,能分担全部或大部分的技术性工作。

在中级程序员掌握知识的基础上:


系统分析

OOA


建模

熟练的软件和系统建模技巧

UML 和/或 SysML


需求分析与管理

能独立编写和管理较高质量的需求文档和模型


编程

熟练掌握 4-5 门以上的软件设计语言,熟悉若干主流的开发平台和框架,具有较丰富的跨平台开发能力。


文档

能独立编写一些高质量的项目开发文档和模型
 

框架

框架开发


系统测试

全面而熟练的软件和系统测试技能



架构设计

熟练的 OOD 技能

熟悉大量的架构模式和设计模式



数据库

高级数据库设计与开发


网络通信

高级网络编程

...



架构师


架构师是一个项目团队的技术核心,统领整个团队完成系统或产品的开发。

除了掌握所有高级程序员所具备的知识和技能外,还起到一名技术管理者的作用。

架构师需要掌握的知识点,在高级程序员的基础上,就更多了:

业务分析

项目管理

质量保证

平台开发

团队管理

过程改进


...