Background

My boss recommended me Team Geek recently. This is a book about managing software engineers. I think now it is an ideal time for me to read about it and connect the points described in book with what has actually happened in the real workplace.

Chapter 1 - The Myth of the Genius Programmer

  • Humans have a natural instinct to locate leaders and role models, idolize them, and attempt to imitate them.
    • We all secretly wish to be geniuses
  • Hiding is considered harmful
    • Hiding great ideas is like gambling
    • Bus factor
    • Rapid feedback loop while working inside a team
  • Three pillars
    • humility
    • respect
    • trust
  • Do not underestimate the power of social game
  • HRT in practice
    • lose the ego
      • build a sense of team accomplishment and group pride
    • deal out and handle criticism
      • constructive criticism wgucg us imbued with respect
      • learn to accept criticism
    • fail fast, learn, iterate
      • postmortem on failures
    • leave time for learning
    • learn patience
    • open to influence

Chapter 2 - building an awesome team culture

  • Team culture is a set of shared experience, values and goals that is unique
    • Care because it may be overtaken by a strong personality
    • A string culture gives you focus, efficiency, and strength -> a happier team
    • Find a team whose culture fits what you want
  • consensus-driven management
    • everyone has a strong sense of ownership and responsibility for the product’s success
    • leaders really listen to the team
  • Make certain that all information is available to as many people as possible in project documentation

  • Channels of communications
    • Mission statement
      • concisely define the direction and limit the scope of your product
      • confront differences and come to an agreement
    • Efficient meetings
      • standup meeting
        • basic announcements and introductions
      • no more than 5 in decision makeing meetings
      • set blocks as busy on calendar
      • set meetings near natural break
      • Five simple rules for running a meeting
        1. Only invite people who absolutely need to be there
        2. Have an agenda and distribute it well before the meeting starts
        3. End the meeting early if you’ve accomplished the meeting’s goal
        4. Keep the meeting on track
        5. Try to schedule the meeting near other interrupt points in your day (e.g. lunch, end of day)
    • Design doc
      • typically owned by one person, authored by two or three, and reviewed by a larger set
      • up-to-date
    • Mailing lists
      • copy of meeting agendas, meeting notes, disussion made, design docs and relevant textual information
      • make searchable index
    • Online chat
      • Group chat like slack
      • Do not be afraid to ask silly questions
    • Issue tracker
      • Encourage to file bugs
      • Prioritize bugs
    • Code comments
      • focus on why the code is doing what it’s doing not what the code is doing
      • standardize the style
    • Author tags issues in source code
      • not recommended as it is a waste of time
      • track credit at the project level
    • Code reviews for every commit
      • style, quality and careless mistakes
      • keep code changes small and reviewable
    • Have real test and release processes
      • automated tests and release
      • part of coding and review process

Chapter 3 - Every boat needs a captain

  • Why engineers fear to be a manager
    • spend much less time writing code
    • “In a hierarchy every employee tends to rise to his level of incompetence”
  • Great reasons to consider becoming a manager
    • scale yourself
      • image how much code a team could write under your leadership
    • you might jus be really good at it
  • The servant leader
    • strive to create ana atmosphere of HRT
    • only managing - manage both technical and social health of the team
  • Antipatterns
    • Hire pushovers
      • shall strive to hire people who are smarter than you and can replace you
    • Ignore lower performers
      • the benefit with a low performer as quickly as possible is that you can put yourself in the position of helping him up or out
      • temporary micromanagement
        • set up a specific time frame
        • make the goals small and incremental
        • meet the engineers every week to check the progress and be sure your set explicit expectations
    • Ignore human issues
    • Be everyone’s friend
    • Compromise the hiring bar
      • fight tooth and nail for high-quality engineers
      • If you still keep getting handed substandard engineers, maybe ist’s time to look for another job
    • Treat your team like children
      • people tend to act the way you treat them
  • Leadership patterns
    • lose the ego
      • cultivate a string collective team ego and identity
      • respect the ability and prior accomplishments of the team members
      • apologize when you make a mistake
    • be a zen master
      • mediate your reactions and maintain your calm
      • ask questions
    • be a catalyst
      • build consensus
      • help members when they hit a roadblock
        • knowing the right people is more valuable than knowing the right answer
      • make them feel safe and secure so they can take greater risks
    • be a teacher and a mentor
      • give them a chance to learn on their own
      • three things for a mentor
        1. experience with your team’s processes and systems.
        2. the ability to explain things to someone else
        3. gauge how much help your mentee needs
    • set clear goals
      • make sure your team is pulling in the same direction
    • be honest
      • be kind and empathetic when delivering constructive criticism
      • delivery is key when providing direct feedback or criticism
    • track happiness
      • ask “What do you need” at the end of one-on-one sessions
      • pay some attention to your team;s happiness outside the office
      • track their careers
    • other tips and tricks
      • delegate, but get your hands dirty
      • seek to replace yourself
      • know when to make wave
      • shield your team from chaos
      • give your team air cover
      • let your team know when they’re doing well
    • intrinsic motivation
      • autonomy, mastery and purpose

Chapter 4 - Deal with poisonous people

  • It is more constructive and practical to identify and reprimand the intolerable behaviors
    • naive to judge whether a people is good or bad
  • Fortify your culture
    • have a visible mission statement
    • establish proper etiquette around email discussions
    • document all history
    • collaborate effectively
    • have a clear policy and procedure around fixing bugs, testing and releasing software
    • streamline the barrier to entry for newcomers
    • reply on consensus-based decisions, but also have a process for resolving conflicts when consensus can not be reached
  • Identify the threat
    • check team’s attention and focus
    • make a mental note that a person is consistently exhibiting poisonous behaviors
    • Not respecting other people’s time
    • Ego
      • anyone who is incapable of
        • accepting a consensus decision
        • listen to or respect other points of view
        • reach compromise
      • immature or confusing communications
      • Perfectionism
  • Repel the poison
    • Redirect the Energy of Perfectionists
    • Don’t Feed the Energy Creature
    • Don’t Get Overly Emotional
    • Look for Facts in the Bile
      • Always bring the argument back to a technical discussion
    • Repel Trolls with Niceness
    • Know When to Give Up
    • Focus on the Long Term
      • it’s not worth compromising your culture for the short-term gains

Chapter 5 - The art of organizational manipulation

  • Organizational manipulation
    • employ certain manipulative techniques to get things done effectively
  • Under an ideal manager
    • pursue extra responsibility as you’re getting your work done
    • take risks and do not fear failure
      • If you don’t take risks in your work, you’ll have fewer failures, but you will have fewer big successes as well
    • Act like an adult
    • Question things that you are unsure about
    • Don’t hesitate to update your team’s leader on what you’re doing before she asks you what’s going on
  • Traits of a bad manager
    • Fear of failure
    • Insert herself into any interaction you have with people outside your team
    • Keep the knowledge power to herself and not share it with you, no matter how much it might help you to do your job Take credit for your successes and blame you for your failures
  • Office politician
    • He spends more time looking impactful than actually being impactful
    • Steer clear of the office politician
      • route around him when possible
      • do not carelessly badmouth him
  • The bad organization
    • most companies are not engineering-focused - engineers are means to accomplish business goals that are typically not technical
    • unrealistic deadlines and lack of qualified technical people to get projects completed on time.
    • Difficult to acquire enough hardware to effectively run your product
    • The most egregiously bad organizations have ossified command and control structures that resemble fiefdoms.
    • your company might lack important things like focus, vision, or direction.
  • Strategies to get things done
    • It’s easier to ask for forgiveness than permission
    • If you can’t take the path, make the path
      • If you’re going to successfully eliminate a bad habit, find a better one to replace it
    • Learn to manage upward
      • Ensure your manager and people outside are aware that you’re doing it well
      • Focus your energies on launching products over just about everything else
    • Offensive vs Defensive work
      • A team should never spend more than 1/3 time and energy on defensive work
    • Luck and the favor economy
      • Help others
      • Learn something new in the process of helping someone
    • Get promoted to a position of safety
      • Put some amount of effort into “playing the promotion game” to get yourself promoted in addition to excelling at your job
      • The higher in the organization your can get, the more control you will have over your destiny inside the company
    • Seek powerful friends
      • connectors, old-timers, admin
      • Being face-to-face with someone else in real life
    • Use email to ask a busy executive for anything
      • Shorter emails are even more likely to get a response
      • Email - at most 3 bullets and a call for action
    • Plan B - Get out

Chapter 6 - Users are People. Too

  • You also need a lot of other people to use your software and be happy with it.
  • Question your career choice if there is no users using your software
  • Manging public perception
    • can not ignore marketing
    • actively cooperate with marketing
    • care about users’ emotional perceptron of your software
  • Pay attention to first impressions
  • Under-promise and over-deliver
  • Work with industry analysts respectfully
  • Usability of your software
    • choose your audience
    • consider the barrier to enter
    • measure usage, not users
    • speed matters
    • do not be all thing
    • do not be lazy
    • hide complexity
    • manage your relationship with users
    • Don’t Be Condescending
    • be patient
    • create trust and delight

Epilogue

  • HRT
  • Applies to other social problems