Learnings: Effective Engineer by Edmond Lau
Learnings: Effective Engineer by Edmond Lau
The Effective Engineer by Edmond Lau is a book that talks about Edmond's experience working at Quora and Google. It covers a wide range of topics related to software engineering, including productivity, time management, career growth, and technical skills. The book is filled with practical advice and actionable tips that can help any engineer become more effective in their work. It's a great read for anyone looking to improve their engineering skills and advance their career.
What's this book about really? It has some ideas that are useful for junior and senior level engineers, but some ideas are also useful at the lead level, and perhaps going a little bit into the staff level. Basically, if you want to improve your technical impact, this book would be useful, but if you are looking to lead people and be a force multiplier for your team, this book doesn't go into the soft skills aspect of leadership needed to be truly effective in that regard.
By this book's own guidance—which is to find the place where you are able to most effectively make an impact by choosing the most leveraged activities—at some point, you would be beyond the recommended practices of this book.
What is your goal? Who are you, reader?
This book assumes this: your intentions are to be a team player, and your goal is to move the team and the company forward, not just yourself.
This is not a book focused on furthering your career; perhaps you might as a side effect, but it does not give much guidance on that aspect.
Nor is this for the CTO, Director, or anyone who doesn't regularly get their hands dirty with code.
Most important message in this book
All other advice and directions flow from the first principle in part 1 of this book, which is to focus on High-Leverage activities. High-Leverage refers to things where your effort and time spent yield the most impact and bring value.
Part 1: The mindset
Prioritize High-Leverage Activities
When you are trying to find what to work on, ask yourself what makes the most effective use of your time.
Optimize for learning
The author recommends that one focus on learning, and even argues that choosing the right job, focus, and putting effort into learning is a very high-leverage and potentially the most important activity you can do. I would agree with that, and the author goes into why:
- Learning has a compounding effect: the more you learn, the more you can leverage, and the easier it is to learn more.
- The joy of doing what you WANT to do and learn is a high-return decision.
- This sets up a framework for what you are looking for in a job and co-workers to learn from and grow.
Prioritize your activities
The author argues that it's worth the time and effort to regularly check your to-dos and identify which activities can maximize your leverage. This makes sense from the point of view that high-leverage activities provide the most value.
Part 2: Execution
This whole section can be summed up in a few bullet points:
- Invest in and focus on things that will help your iteration speed:
- Automation
- Tooling
- Debugging methodology, techniques, and tools
- Measure what you want to improve through metrics. Instrument your systems.
- Test and validate your ideas early
- Invest in feature flagging, A/B testing
- Gain feedback when possible
- Reduce risk by breaking large assumptions into smaller, testable ones
- Approach a problem iteratively to learn quickly.
Project Estimation
It is very common for engineers to struggle with estimating the effort and timeline of a project. Since a lot of planning and cross-team communication will be based on this, it is important to become better at it over time. A few hints:
- Incorporate estimates into the project plan
- Allow for buffering for the unknowns
- Set measurable and provable milestones
- Swallow the frog: Do the riskiest, most unknown items first; then the rest of your project plan will have reduced variance.
Part 3: Build Long-term value
This section is more about long-term advice, which can also be summed up in a few bullet points:
- Manage tech debt, don't let it pile up, and focus on the areas that incur the most
interestover time. - Automate testing and any other manual tasks aggressively, since it will always pay dividends over time.
- Abstraction of complex software problems will go a long way to make you and your team more effective over time.
- Try to fail fast; if software crashes, you want to know where and why quickly, instead of trying to build a system that tolerates it only to have a confusing bug later.
- Automate recovery from the failure mode, and practice it if manual.
Your team's growth, invest in it
- Help people become successful.
- Hiring is hard, and you need to hire good people. This is a priority.
- Share and debrief anything worthy, and share the wisdom.
- Invest in onboarding and mentoring
- Build a great engineering culture (if it was so easy to do so...)
Conclusion
There are some great advice in this book from the author, and it definitly helped me think about certain engineering practices which I took for granted, and gave me insight as to why we do them. Also, certain focus areas, which I was holding it as low value, such as failing fast, or tooling, became more important in my own consideration.
This is a great read for someone at the right level, and at the right place to implement it. That person is not a junior, nor someone who is too high above lead or staff.
Comments
Comments powered by Disqus