Learnings from working as a SWE in the US

I have been working as a Software Engineer in the US since early 2013. Here are some of the principles I learned throughout the years. I wrote the first version of this in February 2022.

Influence and driving change

  • Building trust is a requirement to have influence as a leader
  • When change is hard, make it optional at first until the group sees value in it
  • When you are new, spend time listening and observing, do not push any big change until you build trust, soon you will not be new anymore, enjoy the ride
  • People love coming up with solutions to their own problems, ask questions and help them find the solution themselves
  • When positions seem stuck, try to understand if it is mainly because of facts or emotions, your approach needs to account for that
  • Rarely appeal to authority, it tends to polarize people for a surprisingly long time
  • The ones who decide and influence are not necessarily the ones with the titles, but they are often the ones who speak the most
  • A metaphor always has limits as it illustrates only to an extent, use metaphor wisely as they are powerful tools
  • Monorepos, code coverage, integration testing, programming languages are tricky topics, everyone has strong opinions on them

Strategy and making decisions

  • Asking great questions is the path to finding the best decisions
  • It is harder to be mad at a bot than at a person, make bots enforce what is hard for someone to enforce
  • Some people like manual repetitive tasks, it is a form of meditation for them
  • Dev productivity can scale sublinearly with investment, Consensus decision-making does not scale, period
  • Code wins arguments, data wins arguments
  • If you don't have a representative sample, you over-index on what you see. Look at first time intern manager if you need proof
  • There are two ways to know: by experiencing or by researching, both are valuable in their own ways. Focusing too much on one leads to blind spots.
  • Some problems are overconstrained, which makes them intractable. Recognizing and calling out that they are overconstrained is half of the work to solving them
  • Emotional intelligence is just as valuable, if not more, than intellectual intelligence, especially when it comes to influencing others
  • People like games, people like emojis, people like to be heard, however, only some people like to make decisions
  • There are many ways to lead, you will invariably not appreciate all the leadership styles and consequently will not be convinced by all the leaders in your organization

Execution

  • The first step to improve execution: have goals, estimates and check ins
  • It is always better to fail early, rather than fail late, even better is to fail when there is time to fix it
  • It is better to be an awkward leader than not leading at all
  • Re-prioritization is a double edge-sword, use it wisely
  • If it can be automated, and it is worth it, it has to be automated

Relationship building, mentoring, and people development

  • Communicate feedback as early as possible, even if it feels uncomfortable to do so as long as it does not break trust
  • Understanding individual motivation and goals is the only way to adequately motivate someone at a deep level, there are no ways around it
  • Situational leadership is a great framework for those times when technical mentoring seems not to be working
  • In coaching you almost never give your opinion, you mostly listen
  • Fairness vs individualization is a tension that every leader feels
  • In 1 on 1s just like at the doctor, some people come prepared and some don't, refrain from judging, not everyone is like you
  • In relationships beware of double jeopardy, it never feels nice to be judged multiple times
  • I have yet to meet someone in my industry who is intentionally not doing well unless they are already on their way out
  • When giving feedback give people an out, and be kind. Indeed, you know little about what is going on for them, heck, you don't even know all that is going on with yourself
  • When you want to say something to someone in a group setting, think twice about whether they would rather hear it in a one on one setting
  • Get to know people at a personal level at work, it helps build better understanding and connections, plus you may learn something you can apply to your own life and make a friend
  • Some people do not want to be a leader, forcing them to do so leads to unhappiness
  • Betting on strengths is less painful than fixing weaknesses, both are often deeply ingrained in the individuals from their upbringing and bias
  • On social awareness: some people will say the same thing to everybody, others will choose their words carefully depending on the audience and context
  • People don't like to be quoted on something they spoke about, for some people the spoken word has less value than the written word

Team health

  • Without a vision, some individuals will not stick around, especially people early in their career who don't see the job as just a way to earn a living
  • If for a given process the engagement is low, either make it more enticing (have you tried playing music on Zoom?), or remove it altogether. Low engagement process weights down on team health.
  • Surveys identify trends and point to solutions, as long as they are worded carefully and people have time and motivation to take them
  • Survey results will vary widely based on when you send the survey, even a few days or hours can make a difference
  • Retrospective are more fun with a bit of music
  • If you think a meeting is boring, chances are others feel that way too
  • Don't forget to measure and account for the KTLO work (Keep The Lights On)

Incidents

  • When incidents happen, focus on remediation, only on remediation
  • Leadership is more important than domain expertise when coordinating an incident response
  • Blame in incident reviews is a sure way to make people lie and not improve

Learning, progressing, getting useful feedback

  • When in doubt, take a walk, when panicked, take a walk, when you are absolutely certain, take a walk
  • Mistakes are a key part of the learning experience, they are a gift, as long as you learn from them
  • The best way to know if you are doing it right is to track what you are doing, how you spend your time, and present it to someone who knows
  • Ask for feedback, it may be hard for the conversation to come up otherwise
  • Invest in working with data early in your career, it will help measure your work, influence others, and it is fun
  • Seek mentors who are experts in the specific domains (hiring, strategy, execution, etc.) you are trying to get better at, not just "mentors" in general
  • Our ability to withstand change at work varies over time and is influenced notably by (1) what is going on outside of work (2) how used you are to the current state of things
  • When people comment on your work, their words are just comments, nothing else, don't take it personally