职业之路的思考
        
 # 1. 技术人成长的重要元素
# 1.1 公司关注的人才要素
- 聪明
- 智力水平
 - 后天努力
 
 - 业务能力过硬
- 专长某一领域,减少竞争
 
 - 基本功扎实
- 软实力
 - 硬实力
 
 
# 1.2 知识的理解层次
第一层:了解,知道,没有使用过
第二层:会使用,了解基本原理,会做些常见的优化
第三层:知晓原理,熟悉底层实现,掌握各类优化
# 2. 软件研发能力
# 2.1 软件工程能力
- 目的是为用户/客户创造价值
 - 质量是生命线,质量第一
 - 实现软件的可持续交付
 - 使用科学的方法
 - 持续提升研发效率
 
# 2.2 软件研发能力要求
设计阶段
- 需求分析
- 分清需求和解决方案。仅做需求分析
 
 - 系统设计
- 避免过度设计,仅设计目前所需
 
 
编码阶段
- 编码能力
- 鲁棒
 - 高效
 - 简洁
- 风格统一
 - 高内聚,低耦合
 - 有意义的命名
 - 注释
 
 - 复用
 - 可测试
 - 可监控
 
 - 代码提交
- Change List的描述:做了哪些更改,以及如何更改。包含背景信息:issue编号,相关文档,设计思路等
 - 鼓励小型Chang List:改动代码行数少或文件个数少。小型的CL有诸多好处。原子性的做一件事,包含必要的测试代码
 - 大型Chang List要进行拆分,除非是自动生成的代码
 
 - 代码审查
- 代码审查原则:
- 不要求完美,要求有改善
 - 审查者对代码拥有所有权
 - 尊重个人偏好
 - 审查每一行代码,除非自动生成的
 - 在不牺牲代码质量的前提下,避免阻碍开发人员进度
 
 - 代码审查要点:
- 设计、功能、复杂度、测试、文档
 - 注释清晰,做好清理工作
 - 有礼貌:给出明确的指示,对开发者给予指导
 
 - 代码审查中的抵触:
- 先反思
 - 开会讨论
 - 上升
 
 
 - 代码审查原则:
 - 保证质量
- 原则
- 软件的正确性
 - 服务的可用性
 - 数据的可靠性
 
 - 实践
- 严格遵守研发流程
 - 有效的测试覆盖率和自动化测试
 - 定义并保障服务SLI
 
 
 - 原则
 
维护阶段
- 维护成本
 - 开源协作
 
# 2.3 软件工程师的软素质
- 有担当,值得信赖
 - 主人翁意识
 - 主观能动性
 - 沟通和表达
 - 结构化思维
 - 持续学习
 
# 3. 精通某一领域的方法论
# 3.1 Chunk it up 切碎知识点
- 庖丁解牛
 
# 3.2 Deliberate Practicing 刻意练习
- 刻意练习 - 过遍数
 - 练习缺陷、弱点地方
 - 脱离舒适区
 
# 3.3 Feedback 反馈
即时反馈
主动式反馈(自己寻找)
被动式反馈(高手指点)
上次更新: 2021/03/02, 02:03:00
← 分布式篇-Redis 管理之道 - 领导力 →