The effective engineer – (Part-IIIc)
Tags: blog, concepts, life, programming
Published: 2019-05-08 01:05:30

---
title: The effective engineer – (Part-IIIc)
published: true
tags: blog,concepts,life,programming
canonical_url: https://itscoderslife.wordpress.com/2019/05/07/the-effective-engineer-part-iiic/
---

Again I started reading this book [“The Effective Engineer” by Edmond Lau](https://www.amazon.com/Effective-Engineer-Engineering-Disproportionate-Meaningful/dp/0996128107/ref=sr_1_1?keywords=the+effective+engineer+by+edmond+lau&qid=1554741721&s=gateway&sr=8-1). I noted down these points while reading so that it can be kind of cheat-sheet for myself and others too. I strongly recommend buying the book and reading it at-least once.

The book is divided into 3 parts and my idea here is to write 3 blog posts one for each. So here is the second part of the series. You can read the [Part-I here](https://dev.to/itscoderslife/the-effective-engineer-series-part-i-1kp4) and [Part-II here](https://dev.to/itscoderslife/the-effective-engineer-part-ii-382a).

For Part-III, I am going to do a little different. The third part of this book is considerably a lengthy part especially the second chapter of this part. So I felt to break the final part into 3 sections each for a chapter in the book. You can get a [summary of first chapter of Part-III](https://dev.to/itscoderslife/the-effective-engineer-part-iiia-1ieb) and that of [second chapter](https://dev.to/itscoderslife/the-effective-engineer-part-iiib-2obn) here. 

Let's continue to the last leg of third chapter...

## **Invest in your team’s growth**

**“Sink or swim”**

– Investing in onboarding is just one way to invest in your team’s growth.  
– If you want to increase your effectiveness, it’s important to recognize that building a strong team and a positive culture has a considerable amount of leverage.  
– The higher you climb up the engineering ladder, the more your effectiveness will be measured not by your individual contributions but by your impact on the people around you.  
– Your career success depends largely on your company and team’s success, and the success of your company or team depends on more than just your individual contributions.  
– You’ll accomplish much more if those around you are aligned with you rather than against you, and you can do that by investing in their success.

### Make hiring everyone’s responsibility

– A good interview process achieves two goals.  
– First, it screens for the type of people likely to do well on the team.  
– Second, it gets candidates excited about the team, the mission, and the culture.  
– Even if a candidate goes home without an offer, they still leave with a good impression of the team and refer their friends to interview  
– As an interviewer, your goal is to optimize for questions with high signal-to-noise ratios  
– questions that reveal a large amount of useful information (signal) about the candidate per minute spent  
– with little irrelevant or useless data (noise).  
– Good, well-executed questions let you confidently differentiate among candidates of varying abilities; bad, poorly managed questions leave you unsure whether to hire the candidate.

_engineering candidates to answer algorithm and coding questions on a whiteboard. These textbook-style questions evaluate a candidate’s computer science knowledge, but they can often fall short in gauging whether an engineer actually gets things done in a work environment._

> Shift toward interviews that include a hands-on programming component. Augment a suite of whiteboard interviews with a practical coding exercise on a laptop.

Examples:  
– Problems included designing and implementing a small end-to-end system, squashing bugs in a popular open-source codebase, refactoring a poorly organized application, and pair programming on a self-contained project.  
– Task candidates with implementing and demoing a functional Tetris game to test their ability to manage a project and trade off different technical choices under time constraints.  
– Incorporate hands-on or even take-home programming exercises into their interviews.  
These interview questions do require a larger upfront investment to design and calibrate, but their growing adoption indicates that many teams find the payoffs to be well worth it.

High leverage strategies to keep in mind:  
– Discuss with your team to identify qualities of a potential team member  
– Evaluate and refine your interview process periodically  
– Design interview problems with multiple layers of difficulty  
– Control the interview pace to maintain a high signal-to-noise ratio.  
– Look for red flags by rapidly firing short answer questions  
– Shadow or pair program  
– Check for culture fit

**Design a good Onboarding process**

– Ramp up new engineers as quickly as possible  
– Impart the team’s culture and values.  
– What are the key things that every engineer should know?  
– What valuable tips and tricks have you learned since joining the team?  
– A key part of a good onboarding program is ensuring that everyone starts on a consistent, solid foundation.  
– Socially integrate new engineers onto the team.

4 pillars of on-boarding program:  
– Codelabs  
– Onboarding talks  
– Mentorship  
– Starter tasks

**Share ownership of the code** – to avoid being bottleneck.

Here are some strategies:  
– Avoid one-person teams  
– Review each other’s code and software designs  
– Rotate different types of tasks and responsibilities across the team  
– Keep code readable and code quality high  
– Present tech talks on software decisions and architecture  
– Document your software, either through high-level design documents or in code-level comments  
– Document the complex workflows or non-obvious workarounds necessary for you to get things done  
– Invest time in teaching and mentoring other team members

**Build collective wisdom by post-mortems**

– Flight rules – write down every important event happened or decision taken and reason behind it  
– Five why(s)  
– Compile team lessons on honest (even though uncomfortable) conversations  
– Be receptive  
– Start instilling the culture with small projects in the organisation

**Build a Great Engineering Culture**  
– Great engineering cultures:  
– Optimize for iteration speed.  
– Push relentlessly towards automation.  
– Build the right software abstractions.  
– Focus on high code quality by using code reviews.  
– Maintain a respectful work environment.  
– Build shared ownership of code.  
– Invest in automated testing.  
– Allot experimentation time, either through 20% time or hackathons.  
– Foster a culture of learning and continuous improvement.  
– Hire the best.

**In the end, the author quotes:**

> “A great engineering culture isn’t built in a day; nor is it already in place when a company first starts. It begins with the values of the initial team members, and it’s a continual work-in-progress that every engineer helps to shape. It evolves over time with the decisions we make, the stories we tell, and the habits we adopt. It helps us make better decisions, adapt more quickly, and attract stronger talent. And when we focus on high-leverage activities, we not only become more effective engineers, we also lay the groundwork for a more effective engineering culture.”

There is one more post in the series where I will share what the author thinks are good books for an engineer and what blogs to follow.