
《The Effective Engineer》中提出的杠杆率公式,强调了如何有效利用时间这一宝贵资源,以实现更高的工作效率和产出。
前言
最近我阅读了《The Effective Engineer》一书,收获颇丰。本书的作者曾在Quora为新入职的工程师们制定培训计划,旨在帮助他们快速上手。如何在新员工不熟悉代码库设计和规范的情况下保持高质量的代码?如何确保新员工具有高效的工作能力?这些问题对于许多人来说,可能偏离了传统软件开发工程师的职责。但作者却认为,有效的培养新入职的工程师,所产生的影响远比个人写代码更大。
作者的培训计划包括代码审查、结对编程、设计讨论等内容,显著提升了新员工对系统的掌握程度。很显然,这些努力得到了回报,许多新员工在入职的第一周便能够成功交付小功能,并在几个月后发布了新的Android应用、内部分析系统以及优化的推荐系统等。
作者认为,这种系统化的培训计划是对工程团队的“杠杆率”投资,是影响力最大的工作之一。
提高杠杆率
什么是杠杆率?杆杆率是由一个简单的公式决定:单位时间的投入所产生的价值和影响。
$$ 杠杆率 = \frac{产生的影响}{投入的时间} $$
换句话说,杠杆率就是时间的投资回报率(ROI)。作为工程师,我们不应该试图通过加班加点完成更多的工作,而是要将有限的时间投入到最具价值的任务上。
二八定律仍然有效:80%的产出源于20%的工作,而这20%的工作就是“高杠杆率”的工作。作为工程师,最重要的任务就是识别并专注于这20%的高杠杆任务,将自己的精力集中在那些能产生最大影响的工作上。
如何提高杠杆率?有三种方式:
- 减少完成某项工作所需的时间:通过优化流程和工具,提高工作效率。
- 增加该工作的产出:提升工作质量或扩大其影响范围,如通过代码复用来提高效率。
- 投入到更具杠杆率的工作:定期评估任务的重要性,调整优先级,集中精力在具有更大潜力的工作上。
这三种方式可以转换为三个问题:
- 如何在更短的时间内完成这项工作?
- 如何增加该工作产生的价值?
- 是否有其他工作可以在当下创造更多的价值?
作为软件开发工程师,工作价值可以通过多个维度来衡量:发布产品、修复bug、提升用户转化率、对公司盈利的贡献等。然而,我们的一天可能包括参加会议、排查bug、开发新功能、审查代码、面试新员工等。如果将一天的工作都视为有价值,可能会忽略工作背后的真正影响。
因此,我们可以通过这些问题来提高每项任务的杠杆率。例如,在召开会议之前,提前准备议程并设定明确目标,能使会议更加高效,节省时间,提高讨论质量。
再例如,投入时间搭建一个基础设施,尽管短期内看似乎没有直接效果且耗费时间,但它能为未来的工作带来巨大回报,这种“未来收益”的投资是杠杆率的体现。
优化学习方式
学习本身也是一种高杠杆活动,早期优化学习方法可以带来长期收益。
作为工程师,学习不仅仅是技能的积累,更是一种高杠杆的工作。那些拥有固定型思维模式的人,通常认为能力是先天注定的,倾向于做自己擅长的事情;而拥有成长型思维的人则相信,通过后天的努力可以提升智力和技能,他们把挑战和失败看作是成长的机会。正是这种心态,使得后者往往能在职业生涯中取得更大的进步。
将时间投到培养新技能的任务上
软件工程师很容易陷入日常工作的漩涡中,不知不觉把所有精力都投入到赶进度和解决短期问题上,却忽视了培养那些能长期提升工作效率的核心技能。为了打破这一现象,我们需要明确给自己设定成长目标。
一种行之有效的方式是将每天的时间拆解并优化,将20%的时间用于个人技能提升。与其每周抽出一整天来学习,每天投入一至两个小时进行集中学习会更加高效,因为它能帮助你养成持续学习的习惯。你可以把这段时间用于:
- 深入钻研自己的专业领域和工具,提升核心竞争力;
- 扩展“相邻学科”(Adjacent Disciplines),例如,如果你是基础设施工程师,可以学习机器学习、Web开发等相关技术。
在此过程中,以下是一些有效的学习策略,帮助你充分利用工作中的资源:
- 学习公司里最优秀的工程师编写的核心抽象代码,了解他们的设计思路。
- 多动手编写代码,实践是最好的学习方式。
- 阅读并研读公司内部的技术文档和学习资源。
- 精通你所使用的编程语言,成为语言专家。
- 请那些严格的同事或领导进行代码审查,提升自己的代码质量。
- 参加技术培训课程,不断刷新自己的技能树。
- 主动参与感兴趣的项目设计讨论,培养跨部门的合作能力。
- 在不同类型的项目上工作,积累多样化的经验。
- 阅读并学习不熟悉的代码,拓展自己的技术视野。
- 确保团队中有比你更资深的工程师,通过向他们学习提升自己。
持续学习
学习的机会不仅仅存在于工作场所。我们应该把学习视为一个持续的过程,积极寻找工作之外的学习机会,争取每天都进步一点。以下是一些建议,可以帮助你培养在工作之外的学习习惯:
- 学习新的编程语言和开发框架,拓宽技术栈。
- 学习市场上需求旺盛的技能,提升个人的竞争力。
- 阅读专业书籍和博客,持续跟进最新的技术趋势。
- 加入技术讨论小组,参与交流与合作,提升自己的问题解决能力。
- 参加行业讲座、技术会议、线下聚会,扩展人脉并获取第一手资料。
- 关注并学习那些提供实用技能的博客,获取行业内的最新知识。
- 为教学而写作,通过教学整理和加深对知识的理解。
- 扩展兴趣项目,将个人兴趣与职业发展结合,提升创造力。
- 培养业余爱好,保持身心平衡,激发灵感。
总结
《Effective Engineer》为我们提供了一套方法论,帮助我们在日常工作中提高效率。通过运用杠杆率这一概念,我们能够更好地评估工作的成效,并优化工作流程。最终,作为工程师,我们应:
- 利用杠杆率来衡量工作成效,专注于那些时间投资回报率最高的工作;
- 系统性地提升杠杆率,通过加速工作、扩大影响力,或者转向更具杠杆率的任务;
- 集中精力在那些能够产生巨大影响的工作上,形成高效的工作习惯。
通过不断提高杠杆率,我们不仅能够提升个人的工作效率,还能在团队和组织中产生更大的影响力,从而推动职业生涯的长远发展。