Management

Tips

Here are some suggestion for working with people.
The way I judge the quality of these tips is by whether or not you would like them used against you?
Your mileage may vary, so think carefully.
I’d love to hear your feedback.

WORKPLACE

  • smile 🙂 relax! it’s just a job
  • you see your colleagues more than you see your family
  • you spend the best hours of your day with your colleagues, instead of your family
  • you take your work home, whether you notice it or not (ask me how I know)
  • so actively make your workplace positive, it’s in your interest
  • do more social stuff than your manager encourages
 

HIERARCHY

  • bottom-up > top-down (see The Cathedral and the Bazaar)
  • ban dotted-line reporting
  • flatten the hierarchy as much as possible
  • developers are closer to the coalface, they know better than you
  • give managers comprehensive ownership/responsibility of their domain (including all NFRs)
  • (this means ten comprehensive teams of eight, not one team of eighty, btw)
  • use a small hierarchy of role titles, pay people instead
  • if an engineer would rather have a “senior” title than a pay rise, the company may like it (no cost), but it may have a negative impact on the team (…do as I say, I’m a senior)
 

INTERPERSONAL

  • trust, then verify (thereby testing capability and honesty)
  • disarm with a smile (this is critical)
  • don’t be the smartest guy in the room; it’s not your job, and it makes you a target
  • delegate to your experts
  • hire people smarter than you
    • this is a good tell
    • if managers only hire yes-men and non-technical staff, it’s because they’re afraid
  • never talk over people
    • it’s strategic to let people unload their clip before you respond
    • it will make them feel heard, and it will give you time to consider a response
  • disarm with questions
  • ask for feedback, especially when it’s negative (you can’t do anything with positive feedback)
  • don’t message before 9:30 or after 4:30 unless it’s a production issue
  • no emails outside of office hours
  • schedule emails for tomorrow morning
  • schedule teams messages for tomorrow morning
  • no meetings 12:00-1:30
 

MEETINGS

  • respect people’s time
  • set more people as optional
  • set shorter meeting durations
  • avoid recurring meetings
  • always supply meeting agendas (half the problem will be solved with a clear agenda)
  • as a manager, you will bust heads that need busting. but will you get in touch with people when things are going well?
  • as such, 1:1s are for staff, not managers
  • use 1:1s to listen to your staff
  • ask permission of people, whether they report into you or not

CONFLICT

  • listen first, solve the problem second
  • this is a typical trap for engineers
  • “it’s not what you say, it’s how you say it” – Simon O’Leary
  • if your boss hires a difficult guy, it’s not the guy’s fault, it’s your boss’ fault.
  • so don’t resent your peers too much, it’s not good for your blood pressure
  • probation
    • you should know whether it will be a “yes” or a “no” in the first few months
    • don’t wait until one month before probation is finished to get rid of people
    • “if there is any doubt, there is no doubt” – Emil Koutanov
 

HIRING

  • the most important job in the company is hiring
  • (this was a motto at google during the “don’t be evil” years)
  • hire nice people first, geniuses second
  • you can teach tech, it’s harder to teach nice
  • nice == honest == capable building on fundamentals
  • promote internally if possible
  • it shows the company there is trust in the current staff
  • it motivates the entire group
  • as such, don’t restrict hiring to “the finished product”
  • i.e. train your staff, fill their gaps
  • building people up is the essential attribute of a people manager
 

MANAGING UP

  • senior managers are so far away from the coalface that they know nothing from first-person experience
  • i.e. they operate entirely on gossip
  • e.g. “[redacted] says your relationship is improving”
  • e.g. “[redacted] says your team is hard to work with”
  • as such, it is vital that you have excellent personal relationships with *all* staff (up, down, and laterally)
  • have peers that you can trust, such that you can take time off, etc (and they can too)
 

AGILE

  • in estimation sessions (planning poker) try to bid slightly higher than your team
    • if you bid lower they will consider it a slight, as if you undervalue their work
  • exclusively write functional (not technical) acceptance criteria in JIRAs
    • i.e. give developers room (and responsibility) to solve problems themselves
  • give your POs lots of autonomy regarding what should be built next
  • allocate 50% of team capacity to NFRs (load testing, integration testing, security, QoL, etc)

 

PRs

  • the most important developer skill is reading code
  • so give the team necessary capacity to review PRs every sprint
  • don’t bundle stuff into PRs
  • if it can be pulled out into a separate piece of work, do that
  • use PRs for sharing learning, not for beating people over the head
    • use a different communication channel for that
  • don’t let people with big egos use PRs as a place to show off, at the expense of team happiness