Elegant Puzzle
Organizations
- Team sizing matters: Keep teams between 4-8 engineers for optimal functioning; too small (<4) creates survival risk, too large (>8) reduces efficiency
- Organizational transitions: Navigate through four states strategically - falling behind, treading water, repaying debt, and innovating
- Organizational structure: Design your structure based on where you want support (users, business or technical) and constraints (people, roadmap, hardware)
- Team evolution: Follow natural progression from ad hoc to temporary to permanent teams as needs stabilize
- Standardization approach: Standardize your approach to team design rather than the actual team structures themselves
- Manager span: Limit engineering managers to 6-8 direct reports; beyond this, quality of support significantly deteriorates
- Team topology: Consider “soil fertility” - don’t put your best engineers all on one team; distribute talent to maximize growth
- Team metrics: Track measure four key metrics for success - throughput, stability, engineering load, and team health
- Change management: Make organizational changes less disruptive by batching changes and communicating the rationale clearly
- Prioritization framework: Use the model of “succession of controls” - work directly on actual constraints (bottom-up) rather than setting arbitrary goals (top-down)
- Work classification: Categorize work as speculative, maintenance, or reduction to better understand value and communicate priorities
- Metrics selection: Choose metrics that demonstrate progress toward company goals and create virtuous cycles
- Strategy document structure: Make strategy documents practical with 5 sections: problem statement, vision, specific, constraints, and approach
- Vision testing: Ensure visions are actionable by testing if they help with prioritization, coordination, and prevent wasting resources
- Roadmap creation: Develop multi-quarter roadmaps that tie back to company goals and provide direction without excessive detail
- Capacity planning: Always plan at 70% utilization to account for interruptions, interviews, and unexpected work
- Career development: Use the “promotion packet” approach to give engineers clear targets and document their growth objectively
- Decision quality: Focus on creating systems that produce quality decisions rather than trying to make perfect decisions
Approaches
- Opportunity sizing: Evaluate opportunities through the lenses of availability, relevance, solvability, and value to determine priority
- Technical investment: Allocate 20% of engineering time to technical debt; schedule it explicitly rather than hoping it happens
- Migration completion: Drive migrations to 100% completion; partial migrations create overhead without delivering full value
- System modeling: Use napkin math to validate your understanding before diving into complex initiatives
- Meeting effectiveness: Always start meetings with context and end with explicit next steps to respect everyone’s time
- Presenting to executives: Structure executive presentations as a pyramid - conclusion first, supporting points next, details last
- Feedback delivery: Provide feedback that is timely, actionable, specific, and kind to maximize its effectiveness
- Career conversations: Hold career discussions that explore life context, aspirations, and how the company fits into their goals
- Interview process: Design interviews that validate skills for the role and provide candidates with a representative experience
Culture
- Team culture creation: Deliberately shape culture through artifacts (what you create), values (what you believe), and practices (what you do)
- Culture document: Create explicit cultural documents to align teams and make implicit assumptions explicit
- Inclusion focus: Prioritize inclusion over other cultural elements; without inclusion, other values cannot thrive
- Decision making: Document and clarify how decisions get made in your organization to reduce friction and align expectations
- Communication channels: Select appropriate channels for different types of communication; not everything should be in Slack
- Knowledge sharing: Create systems for preserving and sharing knowledge; avoid critical information living only in individual minds
- Recognition programs: Implement recognition that rewards your true values, not just what’s easily measurable
- Meeting culture: Design meeting-light cultures by requiring agendas and clear decision criteria
- Remote work: Support remote work with explicit documentation, scheduled social time, and communication training
Careers
- Career ladders: Create explicit, fair career ladders with examples and counterexamples to guide growth
- Growth opportunities: Provide three key ingredients for growth - room to scale up, authentic feedback, and role models
- Manager transitions: Support new managers with training, coaching, and clear expectations during their first 90 days
- Performance management: Address performance issues with a structured approach - identify, document, provide feedback, create plan, follow up
- Manager hiring: Select managers who demonstrate coaching ability, give credit, have self-awareness, and show systems thinking
- Retention strategy: Focus retention efforts on top performers through growth opportunities, not just compensation
- Psychological safety: Build systems where people can express concerns without fear; this is the foundation of high-performing teams
- Diverse hiring: Expand your hiring pool by reconsidering unnecessary requirements and designing inclusive interview processes
- Career mobility: Support internal transfers and career changes to retain talent and build institutional knowledge
Tips
- Team foundation: When starting a new team, immediately establish core processes for deployments, testing, and on-call
- Technical specs: Require written technical specifications for significant projects to clarify thinking and align stakeholders
- Architecture design: Approach architecture as optimization under constraints rather than seeking perfect solutions
- System evolution: Design systems to evolve gracefully; avoid both over-engineering and under-engineering
- Interview design: Create interviews that can be consistently evaluated and represent real work as much as possible
- Code review: Implement lightweight code review practices that catch issues without creating bottlenecks
- Knowledge management: Create systems for documenting knowledge that make it easier to write than to not write
- Meeting hygiene: Respect everyone’s time by having clear agendas, goals, and follow-ups for every meeting
- Communication clarity: Be explicit about communication expectations - what requires real-time vs. asynchronous responses
- Growth mindset: Approach challenges with curiosity rather than defensiveness to continuously improve
Key Takeaways
- Team design: Structure teams of 4-8 engineers for optimal performance and support
- Technical debt: Explicitly allocate 20% of engineering time to address technical debt
- Decision making: Focus on creating systems that consistently produce good decisions rather than trying to make perfect decisions
- Migrations: Drive technical migrations to 100% completion; partial migrations create maximum pain with minimal benefit
- Growth prerequisites: Provide three essentials for engineer growth - room to grow, honest feedback, and role models
- Strategy documents: Create practical strategy documents with clear problem statements, constraints, and approaches
- Capacity planning: Always plan at 70% utilization to account for unexpected work and maintain team sustainability
- Metrics selection: Choose metrics that demonstrate progress toward company goals and create virtuous cycles
- Documentation: Make documentation easier to write than not write to preserve institutional knowledge
- Inclusion first: Prioritize inclusion as the foundation upon which all other cultural values can thrive