职业发展 - 程序员,如何进阶
开始
一个新手,刚进入公司的时候,需要两到三年的时间,熟悉自己的工作。
在这之后,比较优秀的程序员基本上对工作游刃有余,并且有了挑战高难度工作的能力。
这两三年的主要进步是什么?
- 熟悉编程的语言
- 熟悉编程的技术
- 熟悉开发的流程
- 熟悉对一个产品的质量要求标准
增强了写代码的能力,有:
- 重视注释和命名
- 使用分层来解耦代码
- 尝试封装一些功能
这时候,程序员也会慢慢增强自己的能力,基本上期望向架构师、Team Leader、技术经理等方向发展。
开始学习一些架构知和管理上的知识,比如:设计模式、UML、重构、敏捷开发等等。
虽然,在以后的职业发展中有了一些进步。但是在技术能力上的发展则是变成随波逐流、偶遇则安。
这里主要想谈的是:如何进阶?
规则
- 你的产品决定了你的优秀程度
你的丰碑是什么?Talk is cheap. Show me the code.
– Linus Torvalds, 2000-08-25. - 工作是提高自我能力效率最高的方式
- 学习必须要有产出物
- 合理的方法才能产出优秀的产品
目的
- 能够做出高质量的产品
- 适应技术的变化趋势
方向
- 撰写和发表技术文章
- 建立技术地图
- 建立技术知识仓库
- 开源项目
方法:技术地图
-
建立一个技术地图
可以是思维导图,也可以是一个博文。 - 定期了解技术趋势
技术的分类
- 语言
- 工具:比如:vscode
- 技术:比如:spark
- 框架:比如:mvvm
- 管理:比如:scrum
- 资源:网站、书籍等
方法:技术知识仓库
想象你马上要开发一个新的产品,技术知识仓库就是你可以预先准备的东西。
一些建议
- 将技术文章放到博文中,不要放到技术知识仓库
- 不要放通过搜索引擎可以查找到的小知识。基本上,下次你还会使用搜索引擎。
- 最好是拷贝既用的
- 技术知识仓库也可以放一些不能公开的东西
技术知识仓库的内容
- 标准、规范、最佳实践、案例
- 项目模板
- 自己的代码包
- 示例代码
方法:入门式学习
入门式学习,适合于学习新的技术,做一些储备,方便以后使用这些技术
入门式学习的内容
- 技术:技术名
- 资源:技术相关的网上资源,书籍等等
- 技术介绍
- 术语概念:技术相关的术语含义
- 学习博文:介绍 + 安装 + 代码
- 源码:一些简单的入门代码,可以方便写一些验证性的代码等等
方法:深入学习
相对于入门式学习,深入学习的目的更强,比如:
- 系统性:比如:系统的介绍设计模式
- 全面性:比如:全面介绍某种语言的特性
- 实践性:比如:如何使用一套技术搭建一个应用框架