1
苏联著名的物理学家朗道把物理学家分为五个等级,他认为每级之间的能力和贡献相差十倍。
2
吴军老师参考朗道,将工程师分成了五个等级:
第五级:能独立解决问题,完成工程工作;
第四级:能指导和带领其他人一同完成更有影响力的工作;
第三级:能独立设计和实现产品,并且在市场上获得成功;
第二级:能设计和实现别人不能做出的产品,也就是说他的作用很难取代;
第一级:开创一个产业。
3
在《这就是软件工程师》一书中,郄小虎把程序员成长过程分为四个阶段:
新手阶段:
执行:接受明确的任务,和实现的方法,能够按照方法一步一步保质保量完成。
进阶阶段:
设计:接受任务,能够将具体的问题抽象、拆解,独立设计解决方案,并完成任务。
高手阶段:
架构:融会贯通,即架构师或软件项目的总设计师,
大神:
沉淀方法论
顶尖大神:
开创新领域
4
这本书中介绍了从新手到高手的要求和学习进阶方法。我在这里给大家简单介绍一下从新手阶段到进阶阶段的内容。
5
工作要求:
新手阶段的工作要求
新手阶段,在工作上要注意遵循以下5条要求:
1、 写代码要严格遵循编码规范,
2、要写优质代码,
3、代码要整洁,
4、代码注释要清楚,
5、编程要遵循原则。
第一条, 编码规范,务必要养成习惯。这个习惯如果没有养成,基本上就丧失了进步的可能性。
第二条,优质代码
优质代码分为3级:
初级可读,中级可扩展,高级可重用。
软件都是用来解决复杂难题的,通常包含了业务逻辑、控制逻辑和数据逻辑;好的代码,其特点是控制逻辑简单优美,分支少,条理清楚。
第三条,整洁代码
整洁的含义是阅读者眼中的整洁。所以,整洁不是写出来的,是读出来的
第四条,代码注释
一句话:像说明书一样清晰
第五条, 4个编程原则
1)避免重复原则:抽象,用一种方法解决多种问题,数学建模
2)单一职责原则:划分模块,每个模块只处理一个简单的任务,降低每个模块的复杂度
3)高内聚、低耦合原则:模块独立,精益求精,模块间不交叉,不耦合
4)开闭原则:内部结构固定不可修改,外部协议开放可以改变
6
进阶阶段工作要求
又分为3点:
1、需求分析;
2、设计;
3、调研
需求分析的要求是以下3点:
(1)避免X-Y问题:务必了解问题的本源
(2)明确问题的边界条件
(3)关注不可预期案例
设计,
1)学会谋篇布局
2)能够高度抽象,比如,商品,是一组属性的集合
3)架构设计,即概要设计和详细设计,要对问题进行抽象,分解,画出流程图,模块划分,分而治之,理清思路,考虑异常和极限情况
4)原型设计,先难后易,关键点是接口
技术调研
能够寻找到最优解决方案,关键能力是代码阅读能力。
7
上面说了工作上的能力要求,下面说说学习的方法,怎样达到能力要求。
8
先说入门必备:
1、语言
python,javascript,java
2、工具
windows,Visual Studio Code,git,spring framework
3数学
数理逻辑、集合论、数学建模、图论、抽象代数、拓扑学、运筹学、博弈论
4、英语
9
2 新手阶段的学习要求
1拆分任务,降低难度,小步试错,不停迭代
2阅读代码,阅读牛人的代码
被反复使用的代码
穿越时间的代码
好调试的代码
3多读文档,多读书
代码:what,how & Detail
文档:what, how & why
4向优秀者学习
10
进阶阶段学习
一是打牢基础,又分为:
(1)程序语言
(2)系统原理
(3)中间件
(4)理论知识:算法和数据结构,数据库范式,网络七层模型,分布式系统等
二是搭建体系,又分为:
(1)用好知识树
(2)探索知识缘由,知其然,知其所以然
(3)掌握方法套路
高手和大神,我们就不奢望了。