专业工程师的特质
Table of Contents
1. 表现
1.1. 什么叫专业化
- 首先,好的专业人士要在任何情况下为工作本身着想,不会因为其他事情影响该做的事情
- 其次,专业素养意味着遵守流程和行业规范。
- 再次,是否有专业素养体现在是否能把哪些不经意的事情做的比别人更好
- 最后,专业人士要有成体系的领域知识,而不仅仅是掌握一两项技能
1.2. 行为表现
- 承诺+兑现
- 立场
- 细节
- 追求
2. 复杂问题的简化
2.1. 解释 1
而不是简单的问题复杂化
看到规则, 看到逻辑, 看到关系和边界,看到封装和接口。而不是看到一个功能,另一个功能,100 个功能,然后相互还影响
2.2. 案例 1
比如商品的几个东西
- 加点扣点调价
- 价格库存管理
- 不同类型,如购票,抢票,拼团,预约券,特卖商品等
- 不同状态,在售,审核等
等等特性之间, 分别是哪些业务哪些关系. 怎么能简化,而不是看着很复杂,无从下手。
2.3. 案例 2
- 订单,看到的通用流程,生命周期。 下单->支付->成单->采购->发货 。而不是看到有 7 种订单,3 种优惠,还都相互影响。
- 优惠,看到的是 人,优惠形式,参与资格, 适用商品 。而不是 3 种优惠,5 种资格,n 种商品, 15n 种场景
3. 繁琐的工作工具化
3.1. 解释
不要人工维护各种工作,人不是神,记不住。让机器来。
3.2. 实际案例 1
前后台间的枚举值获取,或者统计库里的枚举值自动维护。
让代码内的 enum 都去实现一个接口(提供获取 value 和 desc 的方法),在启动时或者编译期可以扫到所有实现这个接口的类,获取到类型, value 和 desc, 和从而可以提供接口获取到代码内的枚举以及枚举对应的值和描述。
3.3. 实际案例 2
- 打包时拉 url schema 的定义自动解析
- 编译期自动维护 sql 和 dao 和实体的关系
- pc 项目运行期自动更新模板,编译,用户 pc 前端的渲染
- 利用 ansible 获取指定机器的所有公网 IP
- 等等等等
4. 系统化解决问题的能力
4.1. 解释
看到问题,看到价值,看到方案。 而不是看到事情.
有系统化解决问题的能力
4.2. 案例 1
- (3 天前) 某个记录表上加个操作人信息
- 某个记录表再加上一些类型,再加上一些…
4.3. 案例 2
- 今天某个项目天猫价格没同步,某个原因,打个补丁
- 明天换个项目库存没同步,打个补丁
5. 技术方向
5.1. 业务研发&架构2
- 把握/分析业务流程
- (复杂) 业务系统设计和研发
- 业务研发的难点解决
- 判断业务价值
5.2. 系统架构3
- 数据库访问组件
- 消息队列, 服务通讯框架
- 分布式事物
5.3. 专业方向
- DBA
- 运维/可靠性
- 安全
- 算法
- 搜索推荐
- 大数据
- 研发工具
- 性能
6. 能力方向
6.1. 通用能力
- 做的更好/更快/更美的意识和追求
- 分析与拆解 找差异
- 抽象 找共性, 找模式
- 方法论
- 理解, 计划, 分解, 练习
- P(lan), D(o), C(heck), A(ction)
7. 自我提升
7.1. 个人学习方法
- 找到有兴趣的领域, 看书
- 练习
- 业余 lisp, haskell, 2048, udp, interpeter,
project-euler
,usaco
- 工作 各种提效相关的工具
- 业余 lisp, haskell, 2048, udp, interpeter,
- 总结 & 思考 & 分享
emacs + org-mode
写文档
7.2. 基础的经验积累
- 业务知识
- 研发流程/规范
- 对所用框架/工具的了解
7.3. 练习 && 工具化
- 手动配置多个内容, 可否写个脚本
- 重复的代码怎么抽象
- 如何抽象模式类似的业务
- 比如第三方对接
- 比如多个支付渠道
- 比如多种订单…
- 如何写一个
http-server
,tiny-spring
,crawler
,dns 服务器
6
7.4. 系统化学习
- 太过系统, 可能有点多…
7.5. 基础学习
- (*) 编程思想
- SICP
- Concepts, Techniques, and Models of Computer Programming
- (*) 工程能力
- The Elements of Programming Style
- Code Complete
- http://www.aosabook.org/en/index.html
- (*) 研发价值观
- The Art Of Unix Programming
- Python:
import this
- Rework
- Hackers and Painters
7.6. 专题学习
- 算法
- Grokking Algorithms 7
- ML/AI
- 分布式
- 编程语言
- 7 周 7 语言
- The little schemer
- http://cis.upenn.edu/~cis194/fall16/
7.7. 交流
- 总结
- 分享