开篇说明

最近阅读了《卓有成效的工程师》一书,书中作者介绍了一些提高如果成为高效率工程师的思路和方法,原想分享一下读书笔记,但感觉书中语言也很简练小章节基本上能望文生义,干脆把书中模块标题直接摘要出来

● 关键词:杠杆率
● 卓有成效的的工程师是由他们在单位工作时间内创造的价值来定义,这就是杠杆率

正确的提高成效的思维模式

聚焦杠杆率更高的的工作

  • 将杠杆率加入工作成效的衡量
    ○ 不同环境下时间的投资的回报率不同
  • 提高杠杆率的三种方式
    ○ 减少某项工作的所需时间
    ○ 增加该工作的产出
    ○ 转向杠杆率更高的工作
  • 合理分配精力到高杠杆率工作
    ○ 高杠杆率的工作不等于易于完成的工作,要明白杠杆的力臂

优化学习方式

  • 培养成长型思维模式
    ○ 固定型思维:人的能力是先天注定的
    ○ 成长型思维:人的能力是可以后天成长跟培养的
  • 提升学习速率
    ○ 学习曲线的指数性
    ○ 尽早投资
    ○ 不要忽略微小的进步
  • 寻求利于学习的工作环境
    ○ 快速增长-正循环
    ○ 培训-成长
    ○ 开放-
    ○ 节奏-不能长期过激或过慢
    ○ 人员-与优秀的人共事
    ○ 自治-是否有选择权
  • 将时间投到培养新技能的任务上
    ○ 学习公司里最优秀的工程师编写的核心抽象代码
    ○ 编写更多的代码:看过不等于学会
    ○ 研读内部可获取的任何技术和学习资料
    ○ 掌握你所使用的编程语言
    ○ 请公司里最严格的人审查你的代码
    ○ 参加专业技能培训课程
    ○ 主动参与感兴趣的项目的设计讨论,不要被动等待
    ○ 在不同类型的项目上工作
    ○ 确保团队里有比你更资深、可以请教的工程师
    ○ 勇于学习自己不熟悉的代码
  • 持续学习
    ○ 学习新的变成语言及开发框架
    ○ 学习市场需求旺盛的技能
    ○ 阅读
    ○ 加入讨论小组
    ○ 参加讲座、行业会议和线下聚会
    ○ 建立并维护一个强大的人际关系网
    ○ 关注那些传授技能的博客
    ○ 为教学而写作
    ○ 拓展兴趣项目
    ○ 培养业余爱好

定期调整优先级

  • 简单易用的待办事项清单
  • 关注直接创造价值的工作
  • 关注重要但不紧急的工作
/紧急不紧急
重要第一象限
危机
紧急问题
临近截止日期
第二象限
计划和补救
建立合作关系
新机遇
个人发展
不重要第三象限
中断手头工作
大部分会议
大部分邮件和电话
第四象限
上网
忙碌的工作
浪费时间的不良习惯
  • 守护创造者日程
    ○ 合理的时间划分并坚守
  • 限制同时进行的任务数量
  • 用“如果……就……”计划对抗拖延症
    ○ ex:如果下一项工作前有20分钟时间,我就去做————
  • 培养调整优先级的习惯
    ○ 通过试验找到适合自己的流程和调整周期

提高执行力的策略

投资迭代速度

  • 迅速行动,快速学习
    ○ 勇于争先
  • 投资节省时间的工具
    ○ 如果某项任务必须需手动做两次以上,那么第三次就去编写一个工具
  • 缩短调试验证周期
  • 熟练掌握编程环境
  • 不要忽视工程以外的瓶颈
    ○ 对他人工作的依赖
    ○ 人际关系的沟通
    ○ 关键决策者的批准
    ○ 审查流程

正确度量改进目标

  • 用指标推动进展
    ○ 帮助专注于正确的事情
    ○ 防止问题复现
    ○ 推动进步:ex: 应用的延迟作为指标
    ○ 衡量一段时间的成效
  • 用正确的指标激励团队
  • 建立指标监控体系
  • 采纳有用的数字
  • 质疑数据的完整性、正确性

尽早且频繁验证想法

  • 寻找验证工作成果的低成本方法
  • 用 A/B 测试持续验证产品变化
  • 当心“一人团队”
    ○ 避免最后推倒重做
  • 建立决策反馈循环
    ○ 重要的决定做出后,要及时根据反馈评估,不要一条道走到黑

提升项目估算能力

  • 使用准确的估算推动项目规划
    ○ 将项目分为细颗粒度任务
    ○ 根据任务需要时间估算,而不是自己或者别人期望时间
    ○ 将估算结果视为概率分布,而非最佳情况
    ○ 让实际执行人来估算
    ○ 谨防锚定偏差

    在实际列出任务前,避免给出初步时间,会影响之后的估算

    ○ 使用多种方法估算同一个项目
    ○ 当心“人月神话”
    ○ 根据历史数据估算结果
    ○ 使用时间盒限制任务范围

    与其承诺一个项目研究需要三天,不如承诺3天后会给出最大努力结果

    ○ 允许他人质疑估算结果

  • 为意外情况留出预算

  • 设定具体的项目目标和可度量的里程碑

  • 及早降低风险

  • 极为谨慎地对待重写项目

  • 不要在马拉松比赛的半程冲刺
    ○ 了解加班的限度,不要过早加班,导致最后团队精疲力尽,不要因为进度落后就不知所措的加班,要明确加班能使我们按时完成项目,才能加班

创造长期价值的方法

权衡质量与务实

  • 建立可持续的代码审查流程
  • 利用抽象控制复杂性
    ○ 易于学习
    ○ 易于使用,甚至无须文档
    ○ 难以误用
    ○ 足够强大,能满足需求
    ○ 易于扩展
    ○ 适合于受众
  • 自动化测试
  • 偿还技术债

最小化运营负担

  • 拥抱运营的简单性
  • 构建可以快速试错的系统
  • 持续推进机械任务自动化
  • 让批处理进程幂等
  • 提升快速响应及恢复的能力

为团队成长投资

  • 帮助你周围的人获得成功
  • 让招聘成为每个人的责任
  • 设计好的入职流程
    ○ 帮助新人尽快度过适应期
    ○ 传授团队的文化和价值观
    ○ 让新员工了解成功所需的广泛基础知识
    ○ 通过社交方式让新员工融入团队
  • 共享代码所有权
  • 通过事后复盘汇聚集体智慧
  • 建设卓越的工程师文化
    ○ 优化迭代速度
    ○ 坚持不懈推动自动化
    ○ 构建正确的软件抽象
    ○ 通过代码审查来关注高质量代码
    ○ 在工作中相互尊重
    ○ 建立代码的共享所有权
    ○ 对自动化测试投资
    ○ 提供实验时间
    ○ 培养一种学习和持续改进的文化
    ○ 聘用最优秀的人