最近参加公司的技术研讨会,有人分享过这么一句话:“一流的程序员懂数学,二流的程序员懂算法,三流的程序员懂逻辑,四流的程序员懂代码”。
程序员发展金字塔里面从一个小小的开发人员,到最后发展成为一个首席技术专家,这就是一个思维不断抽象,不断进化,最后破茧成蝶的过程。
懂代码的程序员
- 对某种编程语言有一定经验和项目实战
- 能够看懂和理解项目中每个模块的代码实现细节
- 能够独立完成产品需求
- 更在乎技术实现,而非业务发展
懂逻辑的程序员
- 掌握了好几种编程语言,并对某种编程语言有深入的理解和研究
- 理解各种设计模式,能够建立好健壮的代码框架
- 能够引领团队成员一起完成工作
- 能够深入理解业务,站在业务发展的角度建立技术选型
懂算法的程序员
- 能够掌握不同编程语言的编程范式
- 理解不同编程语言的算法实现差异
- 对不同开源技术底层数据结构和算法实现有深入研究
- 深入理解业务,并且能够给业务建立可复用的算法模型
懂数学的程序员
- 理解算法的底层原理
- 精通数学原理和不同算法之间的映射关系
- 深入理解业务,并基于业务建立可复用的数学模型
程序员的成长本质来看是一个抽象能力不断变强的过程,从掌握某种编程语言,到掌握架构设计,到掌握架构的关键算法,最后掌握数学思维来把控全局。