267

Core High-Level Principles

Software engineers are notorious for their poor soft skills, often thinking that being able to write decent code while isolated in a corner is all they need to succeed. This couldn't be further from the truth. Communication in particular is crucial for software engineer career development, especially to senior and staff level. This lesson teaches you:

  • Communication is fundamentally an exercise in empathy - The entire goal of communication is to align with or win over another human being in some way.
    • Strive to put yourself in the shoes of the person you're communicating with. Try to see the world through their eyes.
    • What are their values? What makes them happy? What are they struggling with? What do they care about? What's their background?
  • Understand others' incentives - This is especially important in a corporate environment where every employee has some incentives they're pursuing. This will often times manifest as what are the values of the other person's org and even more concretely, what they get rewarded for in performance review.
  • Over-communication >>> Under-communication - Under-communication's downside is that people are not aligned, which usually leads to lots of thrash and wasted work. That is much, much worse than the failure mode of over-communication, which is that you're a bit annoying (and this can be easily toned down and fixed). If you're trying to get better at communication, push for the over-communication extreme: Chances are, you will never reach it. It is very rare for someone to be communicating too much - Most people will appreciate the increased availability of information.

Related resources: