开篇说明
最近阅读了《卓有成效的工程师》一书,书中作者介绍了一些提高如果成为高效率工程师的思路和方法,原想分享一下读书笔记,但感觉书中语言也很简练小章节基本上能望文生义,干脆把书中模块标题直接摘要出来
● 关键词:杠杆率
● 卓有成效的的工程师是由他们在单位工作时间内创造的价值来定义,这就是杠杆率
正确的提高成效的思维模式
聚焦杠杆率更高的的工作
- 将杠杆率加入工作成效的衡量
○ 不同环境下时间的投资的回报率不同 - 提高杠杆率的三种方式
○ 减少某项工作的所需时间
○ 增加该工作的产出
○ 转向杠杆率更高的工作 - 合理分配精力到高杠杆率工作
○ 高杠杆率的工作不等于易于完成的工作,要明白杠杆的力臂
优化学习方式
- 培养成长型思维模式
○ 固定型思维:人的能力是先天注定的
○ 成长型思维:人的能力是可以后天成长跟培养的 - 提升学习速率
○ 学习曲线的指数性
○ 尽早投资
○ 不要忽略微小的进步 - 寻求利于学习的工作环境
○ 快速增长-正循环
○ 培训-成长
○ 开放-
○ 节奏-不能长期过激或过慢
○ 人员-与优秀的人共事
○ 自治-是否有选择权 - 将时间投到培养新技能的任务上
○ 学习公司里最优秀的工程师编写的核心抽象代码
○ 编写更多的代码:看过不等于学会
○ 研读内部可获取的任何技术和学习资料
○ 掌握你所使用的编程语言
○ 请公司里最严格的人审查你的代码
○ 参加专业技能培训课程
○ 主动参与感兴趣的项目的设计讨论,不要被动等待
○ 在不同类型的项目上工作
○ 确保团队里有比你更资深、可以请教的工程师
○ 勇于学习自己不熟悉的代码 - 持续学习
○ 学习新的变成语言及开发框架
○ 学习市场需求旺盛的技能
○ 阅读
○ 加入讨论小组
○ 参加讲座、行业会议和线下聚会
○ 建立并维护一个强大的人际关系网
○ 关注那些传授技能的博客
○ 为教学而写作
○ 拓展兴趣项目
○ 培养业余爱好
定期调整优先级
- 简单易用的待办事项清单
- 关注直接创造价值的工作
- 关注重要但不紧急的工作
/ | 紧急 | 不紧急 |
---|---|---|
重要 | 第一象限 危机 紧急问题 临近截止日期 | 第二象限 计划和补救 建立合作关系 新机遇 个人发展 |
不重要 | 第三象限 中断手头工作 大部分会议 大部分邮件和电话 | 第四象限 上网 忙碌的工作 浪费时间的不良习惯 |
- 守护创造者日程
○ 合理的时间划分并坚守 - 限制同时进行的任务数量
- 用“如果……就……”计划对抗拖延症
○ ex:如果下一项工作前有20分钟时间,我就去做———— - 培养调整优先级的习惯
○ 通过试验找到适合自己的流程和调整周期
提高执行力的策略
投资迭代速度
- 迅速行动,快速学习
○ 勇于争先 - 投资节省时间的工具
○ 如果某项任务必须需手动做两次以上,那么第三次就去编写一个工具 - 缩短调试验证周期
- 熟练掌握编程环境
- 不要忽视工程以外的瓶颈
○ 对他人工作的依赖
○ 人际关系的沟通
○ 关键决策者的批准
○ 审查流程
正确度量改进目标
- 用指标推动进展
○ 帮助专注于正确的事情
○ 防止问题复现
○ 推动进步:ex: 应用的延迟作为指标
○ 衡量一段时间的成效 - 用正确的指标激励团队
- 建立指标监控体系
- 采纳有用的数字
- 质疑数据的完整性、正确性
尽早且频繁验证想法
- 寻找验证工作成果的低成本方法
- 用 A/B 测试持续验证产品变化
- 当心“一人团队”
○ 避免最后推倒重做 - 建立决策反馈循环
○ 重要的决定做出后,要及时根据反馈评估,不要一条道走到黑
提升项目估算能力
使用准确的估算推动项目规划
○ 将项目分为细颗粒度任务
○ 根据任务需要时间估算,而不是自己或者别人期望时间
○ 将估算结果视为概率分布,而非最佳情况
○ 让实际执行人来估算
○ 谨防锚定偏差在实际列出任务前,避免给出初步时间,会影响之后的估算
○ 使用多种方法估算同一个项目
○ 当心“人月神话”
○ 根据历史数据估算结果
○ 使用时间盒限制任务范围与其承诺一个项目研究需要三天,不如承诺3天后会给出最大努力结果
○ 允许他人质疑估算结果
为意外情况留出预算
设定具体的项目目标和可度量的里程碑
及早降低风险
极为谨慎地对待重写项目
不要在马拉松比赛的半程冲刺
○ 了解加班的限度,不要过早加班,导致最后团队精疲力尽,不要因为进度落后就不知所措的加班,要明确加班能使我们按时完成项目,才能加班
创造长期价值的方法
权衡质量与务实
- 建立可持续的代码审查流程
- 利用抽象控制复杂性
○ 易于学习
○ 易于使用,甚至无须文档
○ 难以误用
○ 足够强大,能满足需求
○ 易于扩展
○ 适合于受众 - 自动化测试
- 偿还技术债
最小化运营负担
- 拥抱运营的简单性
- 构建可以快速试错的系统
- 持续推进机械任务自动化
- 让批处理进程幂等
- 提升快速响应及恢复的能力
为团队成长投资
- 帮助你周围的人获得成功
- 让招聘成为每个人的责任
- 设计好的入职流程
○ 帮助新人尽快度过适应期
○ 传授团队的文化和价值观
○ 让新员工了解成功所需的广泛基础知识
○ 通过社交方式让新员工融入团队 - 共享代码所有权
- 通过事后复盘汇聚集体智慧
- 建设卓越的工程师文化
○ 优化迭代速度
○ 坚持不懈推动自动化
○ 构建正确的软件抽象
○ 通过代码审查来关注高质量代码
○ 在工作中相互尊重
○ 建立代码的共享所有权
○ 对自动化测试投资
○ 提供实验时间
○ 培养一种学习和持续改进的文化
○ 聘用最优秀的人