Behavioral Trade-Offs

Over the years, I’ve distilled patterns that seem common among top performing engineers. These in particular are interesting because as a novice manager, I often leaned towards their respective anti-patterns, and have since adjusted my viewpoints from empirical observation.

  1. Depth over Breadth: Software is a bit like magic — you add a bit of code or follow certain instructions and voilà, you’ve created something from nothing. This can feel like a great accomplishment at first, but as the inexperienced engineer goes from dabbling with Django to becoming a Python domain expert, the effort required to make substantial improvements increases dramatically (learning curve is logarithmic). The human tendency is to pursue the path with the fastest perceived growth, which encourages developers to constantly start new projects and learn new technologies. But high performers are skilled at resisting those urges and strive to develop depth. These individuals slow down and take the time to understand and investigate how things work. While the magic might not happen as quickly, by truly learning the ins and outs of different technologies, they will have a compounded impact over time.

  2. Output over Input: People will often attempt to quantify their contributions as a function of input: hours logged in the office, lines of code written, story points completed, and bugs fixed. The relationship between results and effort is not bidirectional; results require effort, but the latter doesn’t guarantee the former. It’s important to shift the focus from input to output, which is harder to quantify but more meaningful. A good approach is to define and track metrics that reflect the state of the business, and to define goals as targets within those KPIs. If we are building features to increase customer engagement, we should pay attention to frequency of use and retention. Or if we identify user generated content as a lever, we can target an increase in the number of user contributions. I prefer to define finer grained metrics that are closely related to the effort at hand. The relationship between effort and results is non-linear. In order to get the most value for our effort, it helps to think of our resources as a number of small bets, and then prioritize based on estimated ROI. This is in essence the mindset of a CEO applied from the lens of an individual contributor.

  3. Serial over Parallel: Many problems in software engineering are complex and sequential, requiring individuals to solve one issue before moving to the next. This can be a time-consuming process, creating situations that mandate staring at a screen or whiteboard for hours, or consuming detailed literature to determine next steps. When frustration builds up, it can be constructive to take a break and let our unconscious mind continue to work in the background. However, in my experience the average person has a below-optimal tolerance for frustration, leading them to quit too soon and often. At any given time, there are a few important and often difficult problems, and a countless amount of trivial ones, so it’s easy to convince ourselves we are making progress while missing the big opportunities. Top performers resist this temptation and focus intensely in delivering pivotal wins.

  4. Independence over Delegation: Most new grads are used to being told what to do: Show up to class, do some homework, study for a test. Likewise, because of the natural instinct to preserve energy for as long as possible, many people procrastinate, and once the task is completed, wait for the next assignment. High performers resist the natural urge to procrastinate, displaying strong self-discipline. They preserve energy as well, but do so by proactively looking for future efficiencies rather than procrastinating. Developing effective independence takes time. Beyond internal self-motivation, one must also refine the ability to identify the best opportunities. Overeagerness without direction can lead to worse outcomes than being a foot soldier. The best people ask a lot of questions to absorb the “why” as well as the “what”. Managing highly independent individuals is notably different. The relationship is inverted, with the individual contributor crafting the path forward, and the manager looking for ways to magnify their success.

  5. Core over Extracurricular: In college, the thinking was that the more extracurricular activities you participated in, the better. Why not? Exposure to new activities provides access to new skills, new people, and new experiences. The urge to participate in as many extracurriculars as possible often carries over to the workplace – particularly in startup environments with plenty of fun perks. Rather than being detrimental, extracurricular involvement is a magnifier of both success and failure. Consider a scenario where a developer didn’t meet an important deadline because they had to write a speech for toastmasters — what would their manager and peers think? Conversely, imagine an engineer who, in addition to demoing a great new feature to the entire company, organizes a 100-person hackathon; now that’s impressive. The best people embrace extracurricular leadership opportunities only after first mastering their core competency.