The Effective Engineer is a must read for anyone in software development. The author, Edmond Lau, draws on his experience as a coder at both large software organizations and startups to educate us about the concept of leverage. In traditional physics, leverage is the ability to multiply the force applied to something using a long enough lever. In software development, Lau uses this as a metaphor to describe activities that we can focus on to produce a disproportionate impact.

The Effective Engineer

Lau defines leverage as:

\[\textrm{Leverage} = \frac{\textrm{Impact Produced}}{\textrm{Time Invested}}\]

This concept is exciting to me since I am always on the lookout for ways to increase my leverage and build things with lasting value. I want to spend less time but have a greater impact. There are so many valuable strategies in this book for increasing leverage that I think it is worth reading cover to cover. However, for the sake of brevity, I am going to mention three high-leverage activities in this review:

1. Shorten Feedback Cycles at All Levels

Want to embark on a new project? Find out what the smallest amount of work is needed to validate that this is a valuable endeavour. One way is to simply just talk to people about it and see what they think. An engineer that builds a sophisticated new system in record time that nobody uses isn’t considered an effective engineer.

2. Automate Mechanics over Decisions

Decisions are things that humans are good at that machines inherently aren’t because the rules are not always clear cut. However, machines are superb at repetitive scriptable work. So focus on automating as much mechanical work as possible.

3. Multiply Your Team’s Leverage

If everyone around you had 20% more leverage overnight, you would be taken along in the waves of their success even if you did not do anything differently. So invest in your hiring process to grow your team. Then take care of your team. Have empathy for each member. Invest in an onboarding program with codelabs showcasing design decisions of your company’s core abstractions. Also, invest in team learning activities since software development is largely constrained by the rate of group learning.