Increase your effectiveness as a Software Engineer
As software engineers, we are constantly striving to improve our skills and increase our impact on our teams and organizations. However, the mere quantification of laborious endeavors, such as the amount of time invested, lines of code written, or tasks completed, does not reliably equate to a commensurate value proposition in instances where the end-product ultimately goes unused.
In this article, I would like to share some of my key insights and learnings from The Effective Engineer, written by Edmond Lau. Lau, a seasoned engineering leader with experience working at organizations such as Google, Quip, and Ooyala, offers a comprehensive guide to engineering efficacy. By embracing the principles outlined in his work, we can adopt a strategic approach to optimize our productivity and impact while minimizing wastage of our most precious resource: time.
Effective Engineers
To become effective engineers, it’s crucial to identify which activities produce the most impact with proportionally smaller time investments. As not all efforts, however well-intentioned, translate into impact.
Effective engineers are the people who get things done. They’re the ones who ship products that users love, launch features that customers pay for, build tools that boost team productivity, and deploy systems that help companies scale. — The Effective Engineer, Edmond Lau
Effective engineers produce results, get things done efficiently and focus on value and impact — they possess the ability to discern which results to deliver.
Leverage
Leverage, the ROI for the effort that’s put in, is critical because time is your most limited resource. Unlike other resources, time cannot be stored, extended, or replaced. Therefore, we must focus on what guarantees a disproportionately high impact for the time spent and systematically increase the leverage of our time.
In order to increase the leverage in the long-term, it’s worth investing in your rate of learning and seeking work environments conduciting to sustain your growth.
Prioritization
Make prioritization a habit, by always ask yourself if there’s something higher-leverage that you could be doing, and work on what directly leads to value.
There’s always going to be something urgent and non-important, prevent unnecesary interruptions and minimize the context switching produced by those. Instead, focus on what’s important and prioritize long-term investments that increase your effectiveness, even if they don’t have a deadline.
Execution
During the execution, it is essential to identify meaningful metrics that can be tracked to drive progress and guide you towards the desired end-goal. Failing to do so would leave you in the dark, forced to rely on guesswork and intuition.
It’s important to pick the right metrics to incentivize the behavior you want. For instance, if you would like to improve the system’s reliability the amount of bugs outstanding (could be weighted) could show the state of the system, instead a metric like the amount of bugs fixed, doesn’t reflect the status of the project and could even incentivize the developers to be less rigorous about testing when building new features (this happened to Adobe’s QA process).
We must aim to approach the problems iteratively to reduce wasted effort, shorten the feedback loops for our decisions, reduce the risk of large implementations by using small validations, and using A/B testing to continuously validate our product hypotheses.
It’s also worth investing in tooling that improves our iteration speed, as the faster we can iterate, the more we can learn. A time-consuming mechanic task that you find yourself doing many times could be easily automated with a script and leave you time for higher-leverage tasks.
Before trying to automate the decision-making, we must think twice, as it tends to be hard to get correct. For instance, if half of the servers stop responding due to overload, rebalancing the load to the other half could bring the whole system down, and it would be better to just drop half of the connections.
Conclusion
The Effective Engineer by Edmond Lau is a must-read for any Software Engineer looking to maximize their impact and productivity. By embracing the principles of leverage, prioritization, and execution outlined in this book, you can adopt a strategic approach to your work and ultimately become a better engineer. With Lau’s extensive experience working at companies like Google and Quip, his insights and learnings are invaluable to engineers at any level. So if you’re looking to take your engineering skills to the next level, make sure to add this book to your reading list.