How Shopify builds a high-intensity culture | Farhan Thawar (VP and Head of Eng)
1. Choose the Harder Path
When faced with options, choose the harder path because even if it doesn’t work, you will have learned valuable skills, worked with smart people, and gained experience, making it a win regardless of the outcome.
2. Maximize Output Per Hour
Focus on maximizing output and expending more “kilojoules per hour” during dedicated work time (e.g., 9-5) rather than extending work hours, to achieve more within the same timeframe and free up personal time.
3. Prioritize Infrastructure Over Features
Prioritize building robust, enabling infrastructure that allows others to quickly build features (e.g., “in one hour”), even if the infrastructure itself takes longer to develop; this foundational approach unlocks exponential future velocity and diverse use cases.
4. Actively Delete & Simplify Code
Actively drive initiatives to delete and simplify code, viewing a smaller, more elegant codebase as a strategic advantage for resiliency, performance, and maintainability, rather than valuing sheer lines of code.
5. Generate Many Solutions
When problem-solving, avoid settling for the first “right” option or a limited A/B choice; instead, dedicate time to generating many more potential solutions, believing there are thousands of “right” options, to discover the truly optimal one.
6. Embrace Looking Stupid
Cultivate the ability to “look stupid” by asking “dumb” questions repeatedly, even if it feels uncomfortable or others react negatively, because the goal is deep understanding, and often others share the same unasked questions.
7. Question All Assumptions
Adopt the motto “Everything you know is wrong” to cultivate a first-principles mindset, constantly questioning assumptions and experimenting, even if it means “looking stupid,” to discover new possibilities and avoid being limited by existing knowledge.
8. Develop a Career Framework
Create a written framework of what you truly care about in a job or career, and use it annually to evaluate opportunities and avoid distractions, ensuring alignment with your values and saving time.
9. Merge Complementary Strengths
Recognize your core strengths and weaknesses, and instead of trying to excel at everything, seek out partners or leaders whose strengths (e.g., long-term vision) complement your own (e.g., execution) to merge forces and achieve greater alignment and progress.
10. Embrace Chaos & Change
Foster an organizational culture that anticipates and embraces “chaos monkey” scenarios and constant change, prioritizing resilience and rapid adaptation over rigid, slow change management, to maintain speed and deliver value.
11. Embrace “Projects On Fire”
Aim for a state where a few “big projects are on fire” at all times, not by intentionally creating chaos, but as a natural outcome of pushing boundaries, taking necessary risks, and moving fast, indicating that the organization is stretching into new, transformative areas.
12. Conduct Annual Meeting Armageddon
Annually conduct a “Meeting Armageddon” by deleting all recurring meetings with more than two internal participants, followed by a two-week moratorium on creating new recurring meetings, to combat inertia and force a re-evaluation of meeting necessity and cadence.
13. Utilize Pair Programming
Implement pair programming (two people on one computer) to foster intense, focused collaboration, reduce distractions, and accelerate finding elegant solutions, leading to extraordinary outcomes without necessarily increasing total hours.
14. Strategic Pair Programming
Use pair programming strategically for 4-8 hours a week when the problem is well-defined, but reserve longer periods for “wayfinding” and “pathfinding” to fully understand the problem before committing to a solution, even if it means deleting extensive work later.
15. Time-Boxed Code Deletion
When pair programming, set a strict time limit (e.g., one hour) for solving a problem, and if the solution isn’t complete within that time, delete the code (keeping tests) and restart, assuming the initial design or approach was flawed.
16. Embrace Code Deletion
Embrace a “start, delete, restart” approach to coding, especially during pathfinding, to overcome sunk cost fallacy and arrive at more elegant, shorter, and maintainable solutions, recognizing that code is a long-term liability.
17. Integrate AI Copilots
Integrate AI copilots into your workflow as a “pair programmer” to assist with code generation and exploration, and consider combining AI with human pair programming for enhanced collaboration, learning, and efficiency, especially when exploring new languages or complex problems.
18. Implement Weekly Progress Updates
Implement a system for weekly company-wide updates (e.g., “GSD” updates) to foster a culture of continuous progress, leveraging Parkinson’s Law to encourage teams to demonstrate achievements every week.
19. Conduct Six-Week Reviews
Conduct intensive, company-wide “six-week reviews” where teams present their roadmap, resourcing, and progress to leadership, using this cadence to drive accountability, demonstrate learning, and make rapid adjustments across all projects.
20. Act on Feedback Immediately
Act on feedback immediately after reviews, iterating and making changes without waiting for the next cycle, and for major initiatives like reorgs, prioritize rapid execution and “landing it” quickly over lengthy change management processes to maintain velocity in a volatile environment.
21. Multi-Level Project Alignment
Implement a multi-level review process (e.g., “okay one” for director-level alignment, “okay two” for VP-level architectural and contextual alignment) to ensure projects are on track, strategically aligned, and unblocked, driving intensity and progress.
22. Reframe Micromanagement as Pairing
Reframe “micromanagement” as “pairing on the problem,” where leaders frequently engage with teams to understand progress, offer advice, share broader context, and collaboratively unblock issues, ensuring alignment and faster problem-solving.
23. Optimize Communication Platforms
Shift announcement-style information and large group updates from real-time chat platforms (like Slack) to asynchronous feed-based platforms (like Workplace) to reduce distractions, increase “flow time” for individual contributors, and enhance overall productivity.
24. Implement “Code Yellow” Alerts
Implement “Code Yellow” alerts for critical infrastructure or developer experience issues, allowing a designated champion to pull resources from other projects to address and resolve these foundational problems, which, while initially slower, enable long-term speed and efficiency.
25. Categorize Development Work
Categorize development work into “experiment,” “feature,” or “infrastructure” to clarify intent and resource allocation, recognizing that building infrastructure, while slower upfront, enables faster feature development and broader utility.
26. Cultivate a Demo Culture
Foster a “demo culture” by encouraging high-fidelity updates, including live demos or interactive links to development environments, to gather direct, actionable feedback on the user experience and performance, thereby short-circuiting misunderstandings and accelerating iteration.
27. Intentional IRL Experiences
For remote-first companies, strategically implement “intentional IRL experiences” like annual company summits and “bursts” (short, focused in-person work sessions) to recharge the “trust battery” among employees and foster deeper connections that can deplete in a fully remote setup.
28. Manage “Trust Battery”
Utilize the “trust battery” metaphor to consciously manage interpersonal trust, either by starting new relationships at 50% and building it up, or by starting at 100% (assuming high trust) and allowing it to deplete only if alignment issues arise, using it as a shortcut for working relationships.
29. Build for Job Applications
For job seekers, instead of just sending resumes, build something using the API docs of companies you’re interested in; this provides valuable learning, a portfolio, and demonstrates initiative, even if it doesn’t directly lead to that specific job.
30. Build Rejection Resilience
To build resilience and comfort with rejection, engage in activities that involve frequent “no’s” or failures, like retail sales or cold calling, and learn to quickly move on and adapt without dwelling on negative outcomes.
31. Seek Harder Learning Environments
Actively seek out challenging environments or “harder rooms” where you are pushed to learn, as this often leads to meeting smarter people and a more impactful learning journey, even if it means being outside your comfort zone.
32. Learn From Smart People
Prioritize learning from people by intentionally placing yourself in challenging environments where you can interact with and learn from smart individuals.
33. Partner with Unreasonable Visionaries
When seeking co-founders or key partners, identify “unreasonable” people with strong, long-term visions, and actively meet with them to assess compatibility and potential for collaboration.
34. Resign When Framework Violated
If your established career framework is consistently violated, be prepared to resign, even without another job lined up, to uphold your values and ensure you’re working on what truly matters to you.
35. De-emphasize Traditional Interviews
Acknowledge that traditional interviews are poor predictors of job performance; instead, prioritize real-world work trials and on-the-job assessment to truly evaluate a candidate’s fit and capabilities.
36. Utilize 30-90 Day Job Trials
Treat the initial 30-90 days of employment as an extended “job trial” to assess true fit and performance, being transparent with new hires that this period is for mutual evaluation, and quickly parting ways if it’s not a good match for either party.
37. Internships as Job Trials
Leverage internship programs as a superior “job trial” and interview process, as they provide four months of real work product and mutual evaluation, offering far more insight than traditional interviews for full-time hiring.
38. Conduct “Life Story” Interviews
Incorporate a “life story” interview segment to understand the “why” behind a candidate’s career decisions and experiences, assessing their curiosity, range, and generalist tendencies, which are often better indicators of fit than a resume’s “what.”
39. Strategic Large-Scale Internships
View large-scale intern programs (e.g., 1000 interns) not as community service, but as a strategic win-win for identifying and developing future talent, leveraging their unique generational skills (e.g., AI native) while providing real work experience and a robust evaluation pipeline.
40. In-Person Intern Cohorts
For early talent programs like internships, mandate in-person attendance (e.g., three days a week) in specific offices to foster cohort building and provide essential in-person learning and mentorship, recognizing that new professionals benefit more from IRL interaction than experienced remote workers.
41. Unscheduled One-on-Ones
For large teams, replace scheduled one-on-ones with “unscheduled one-on-ones” by being highly available and physically present to unblock team members as needed, recognizing that managers are primarily for unblocking rather than routine check-ins.
42. Recruit Talent Anywhere
Actively recruit talented individuals you observe excelling in non-traditional roles (e.g., a waitress organizing a busy restaurant), recognizing that strong organizational skills, intelligence, and drive are transferable, regardless of their current industry or formal qualifications.