in building strong teams I currently lead Engineering at Wrapbook Previously IC and Manager at GitHub, before that founder at Sandglaz B.Eng. Computer Engineering & M.Sc. Machine Learning at McGill
teams • Otherwise as teams grow, decision making grinds to a halt • Empower people to make decisions • Make it explicit: ◦ Who is accountable ◦ Who needs to be consulted ◦ Who needs to be informed • Disagreement is ok. Know when to disagree and commit
Technical design documents and how to solicit feedback on them and communicate decisions • Never penalise mistakes (unless for repeated carelessness), ◦ Use them as a learning opportunity ◦ Fix the root cause
◦ It’s a coaching opportunity ◦ Give all points of view a chance to be heard ◦ Be explicit about tradeoffs ◦ Disagree and commit • Don’t give one person a Veto over the whole team ◦ Even if they are right most of the time. ◦ The rest of the team learns to not voice their opinion ◦ The ability to scale is gone
turnaround time for code reviews • Establish responsibility for driving PRs forward • Establish a single person responsible for doing the code review Observe, adjust, repeat
solve organizational problems If a problem is not visible, the root cause will not be addressed and designed away Make Problems VISIBLE Example: no one is reviewing code -> I will review all PRs to fix problem
the appropriate confidence level ◦ Updating copy on a page → easy to estimate ◦ Write a self-driving car algorithm → 🤷 • A more rigid process is ok for the first, but will hinder progress and result in constant conflict for the second • Most projects are in-between • Keep process lightweight and flexible to respond to new information • Alignment on goals > the perfect process
parameters ◦ What is the cadence? (e.g. weekly, biweekly, monthly?) ◦ When are scope, priorities and goals set? ◦ How to we improve the process and how we work? • Example from Wrapbook: ◦ Weekly Goals meeting ◦ Daily async stand-up ◦ Weekly Engineering+Product Leads prioritization ◦ Weekly Retrospectives + 1:1s
of work? • How to get feedback on work? • How often to deploy changes? Example: • PRs do one thing only (< 3 days of work) ◦ Easier to review ◦ Easier to test • Feedback: ◦ CI test suite running on each commit ◦ Code reviewed by 2 engineers (within 24hrs) ◦ Review app for each PR for easy feedback from stakeholders • Deployed multiple times a day • Feature flag changes that shouldn’t be visible by customers immediately
of the organization • All new hires on a new team does not usually work well • At Wrapbook, we split teams to form new ones → we even call it mitosis • Overgrow a team then split
IC • Technical Leadership • People Leadership The goal is to provide a common language to speak about expectations Provide a clear understanding of how to transition to different tracks
check your ego Look for complementary strengths to those on the team Decide on the needed job level, and test appropriately for it Be respectful of candidates’ time
while communicating transparently Be Yourself Respect and celebrate our diversity. Bias Towards Action Lean into taking action, fast in low stakes and deliberate in high stakes. Delight Customers Win users’ hearts with seamless, compliant, and secure services. Own Your Work Be accountable to our impact. Surface issues to learn together.