The Effective Engineer is a guide to master the techniques used by top software engineers to maximize their impact and make a meaningful difference. The book was written by Edmond Lau, a software engineer that for the past ten years worked with and led some of the best engineers in Silicon Valley at places including Google, Ooyala, Quora, and Quip.
This book shares actionable techniques and proven habits so you spend less time grinding on tedious tasks and more on what you actually care about.
1. Adopt the Right Mindset
Focus on High-Leverage Activities
The core idea of the book is to increase leverage, which is defined as follows:
Given the above formula, there are three ways to increase leverage:
- increase impact
- decrease time invested
- work on something else
Three questions are provided, designed to guide engineers to higher leverage activities:
- How can I complete this activity in a shorter amount of time?
- How can I increase the value produced by this activity?
- Is there something else I can work on that will produce more value?
Optimize for Learning
Learning is a high-leverage activity due to its exponential growth. As engineers build their base of knowledge, the combination of learned skills increases the areas to which an engineer can contribute. An engineer should regularly invest in active learning. The following tasks are suggested:
- Study code for core abstractions at your company.
- Write more code.
- Take classes on broad topics related to software engineering.
- Pick the harshest critic for code review.
- Participate in design discussions, even if they are unrelated.
- Pick diverse projects.
- Select teams with a few senior engineers so you can learn from their experience.
To stay committed to high-leverage activities, regularly review how you rank activities. A simple ordered to-do list is ok, however, an Eisenhower matrix to compare an activity’s importance and urgency is recommended.
2. Execute, Execute, Execute
Invest in Iteration Speed
The book strongly advocates for continuous delivery, which is “the ability to get changes of all types into production safely and quickly”. Some of the benefits of continuous delivery are:
- Allows small changes.
- Eliminates overhead of release process.
- Reduces context switching.
- Allows for new development techniques.
- Enables faster iteration.
Effective engineers invest in tools to increase efficiency. Tools can range from shell scripts up to full automation platforms for testing and deployment. In addition to engineering efficiencies, it’s important to check for non-engineering bottlenecks like meetings.
Measure What You Want to Improve
It’s very important to find a good metric because metrics drive progress.
The book suggests asking the following questions:
- Is there some way to measure the progress of what I’m doing?
- If this task doesn’t move a core metric, is it worth doing?
A good metric possesses the following qualities:
- Maximizes impact.
Validate Your Ideas Early and Often
Avoid investing time into products with an unknown chance of success. Work towards a minimum viable product (MVP) and validated with a prototype.
Improve Your Project Estimation Skills
Use accurate estimates to drive project planning with the following techniques:
- Decompose tasks into granular subtasks.
- Model how long a task will take as a probability distribution.
- The person who does the work does the estimate.
- Beware of anchoring bias.
- Validate estimate against historical data.
- Budget for unknowns.
When estimating projects, define specific goals and measurable milestones. Reduce risk early by tackling the riskiest areas first. Approach rewrites with extreme caution.
I personally think that “Effective Engineer” is worth reading. It’s nothing completely new, but provides some tips and techniques that are easy to understand and adopt. Additionally it shares a mindset and breaks down the exact steps you can take to maximize your impact as a software engineer.