研发自我提升

1. 目的

1.1. 目的

  • 明确研发的发展方向
  • 明确需要具备的能力
  • 针对不同的类型能力, 如何培养和发展
  • 如何自我提升

2. 技术方向

2.1. 业务研发&架构1

  • 把握/分析业务流程
  • (复杂) 业务系统设计和研发
  • 业务研发的难点解决
  • 判断业务价值

2.2. 系统架构2

  • 数据库访问组件
  • 消息队列, 服务通讯框架
  • 分布式事物

2.3. 专业方向

  • DBA
  • 运维/可靠性
  • 安全
  • 算法
  • 搜索推荐
  • 大数据
  • 研发工具
  • 性能

3. 能力方向

3.1. 通用能力

  • 做的更好/更快/更美的意识和追求
  • 分析与拆解 找差异
  • 抽象 找共性, 找模式
  • 方法论
    • 理解, 计划, 分解, 练习
    • P(lan), D(o), C(heck), A(ction)

3.2. 专业能力

  • 业务能力 3
    • 分析理解,拆解落实
  • 工程能力
    • 工具, 调试, 环境, 研发流程, 测试, …
  • 业务架构能力
  • 编程抽象模型/编程范式4
    • 过程抽象, 数据抽象, 元语言抽象, …
  • 算法/ML/AI
  • 分布式系统

4. 自我提升

4.1. 个人学习方法

  1. 找到有兴趣的领域, 看书
  2. 练习
    1. 业余 lisp, haskell, 2048, udp, interpeter, project-euler , usaco
    2. 工作 各种提效相关的工具
  3. 总结 & 思考 & 分享
  4. emacs + org-mode 写文档

4.2. 基础的经验积累

  • 业务知识
  • 研发流程/规范
  • 对所用框架/工具的了解

4.3. 练习 && 工具化

  • 手动配置多个内容, 可否写个脚本
  • 重复的代码怎么抽象
  • 如何抽象模式类似的业务
    • 比如第三方对接
    • 比如多个支付渠道
    • 比如多种订单…
  • 如何写一个 http-server, tiny-spring, crawler, dns 服务器 5

4.4. 系统化学习

4.5. 基础学习

  • (*) 编程思想
    • SICP
    • Concepts, Techniques, and Models of Computer Programming
  • (*) 工程能力
  • (*) 研发价值观
    • The Art Of Unix Programming
    • Python: import this
    • Rework
    • Hackers and Painters

4.7. 交流

  • 总结
  • 分享

Footnotes:

1

一个系统, 主要就是 对外体现, 对内组件, 组件间关系 . 架构,就是对这个系统的抽象描述.

2

提炼出业务系统中, 与业务不太相关, 更共性的那一面.

3

这一点在我来看更依赖通用能力和经验积累

4

不同的看问题分析问题的角度

5

再比如, udp 协议栈, 解释器

6

推荐一本书能理解就足够了, 这个 容易读一些