The solution to burnout is to aggressively let others do the work. You have to let others play with your legos.
Let go of your legos
Early in a new product's life, you get to own everything. You build the code, you design the architecture, understand every stakeholder's wants and dreams, handle every bug and feature request. You own the process start to finish to on-call.
You think it, you build it. The product and the code are an expression of your best vision for how software should work. You don't achieve every dream, but you do your best with the resources and skills available.
When new people join, they look at your baby and they have ideas. What if you moved this code over there? What if the API was easier to use? How about we try something other than your favorite library?
At this point you have to make a choice:
- let go of your legos
- try to stay in control
If you try to stay in control, you'll drive everyone crazy. Mostly yourself.
If you try to stay in control
As you attempt to keep an iron grip on the direction of the product and its codebase, you'll frustrate new engineers who have their own ideas and suggestions. They suggest a great and obvious improvement, but every idea turns into a long battle when it doesn't fit your vision.
You think you're defending the quality of the vision, but really your ego feels attacked and you're pushing back. How could something you designed so carefully not be perfect? Who are these people to tell you there's a better way? Don't they understand the constraints you were under?
That was 2 years ago. Those constraints have changed.
If you keep this up, you'll become the bottleneck. The person we need to consult for every change. That means meetings all day every day.
Let go, it's okay
Or, you can let go of your legos: Set guidelines, agree on basic design and architecture goals, then ... let go. Problems will get solved in a way different to yours and that's okay. As long as they're solved.
Love the problem, not the solution.
Users hire your software to do a job. They don't care how you do it as long as the app doesn't get in their way, usually works, and isn't frustrating to use. Likewise stakeholders care about your team being able to keep things running and make improvements without blowing it up with bugs.
Beyond that, nobody cares about the details but you. Relax. Let people do their thing. They'll make your baby better than it ever used to be.
Code yourself out of the job
Your ego loves being the critical member of a team.
Everyone looks up to you, seeks your advice, runs important decisions by you, and makes sure their code is up to your standard. You're the genius who started this product and knows where all the bodies are buried. Feels great!
Then one by one your team starts leaving.
Joe gets pulled into a critical company-saving project. Huge career opportunity. Alice single-handedly talks the CMO off a ledge and repairs an important stakeholder relationship after a bug killed their metrics. Jane spends more and more time with product, helping define long-term strategy.
All the while you're sitting there making progress on your team's core products and making sure everything looks right. Your ego loves it, but your mind is thinking "Where are MY opportunities?".
They're not coming. You're critical to this project. Can't afford to lose you. Wouldn't dare distract you with something else. Plus aren't you swamped being in every pull request, meeting, chat thread, and discussion about your precious baby? You don't have time for new opportunities!
This is the hidden cost of hoarding your legos: You become trapped in your role. No time for big opportunities.
Your goal should always be to code yourself out of the job.
But how?
- Empower others to make decisions without you.
- Build systems others can follow on their own.
- Systematize common tasks.
- Make "the right way" to solve a problem the obvious way to solve that problem.
- Don't tell people what to do, explain the important factors you think about and let everyone reach their own conclusions.
Then step back and relax. You've empowered the team to play with your legos and you're free to take on new challenges and opportunities.
You might even change jobs to a different part of the business! Leave your baby in the good hands of your team. Trust.
The hardest part is letting others make decisions, not just do tasks.
Cheers,
~Swizec
Continue reading about Code yourself out of the job
Semantically similar articles hand-picked by GPT-4
- Code yourself out of the job
- How to succeed as a lead engineer βΒ tactics and mindsets from practice
- "Yes caviar is great, here's a ham sandwich"
- How to own projects like a senior engineer
- Own the outcome, not the work
Learned something new?
Read more Software Engineering Lessons from Production
I write articles with real insight into the career and skills of a modern software engineer. "Raw and honest from the heart!" as one reader described them. Fueled by lessons learned over 20 years of building production code for side-projects, small businesses, and hyper growth startups. Both successful and not.
Subscribe below π
Software Engineering Lessons from Production
Join Swizec's Newsletter and get insightful emails π on mindsets, tactics, and technical skills for your career. Real lessons from building production software. No bullshit.
"Man, love your simple writing! Yours is the only newsletter I open and only blog that I give a fuck to read & scroll till the end. And wow always take away lessons with me. Inspiring! And very relatable. π"
Have a burning question that you think I can answer? Hit me up on twitter and I'll do my best.
Who am I and who do I help? I'm Swizec Teller and I turn coders into engineers with "Raw and honest from the heart!" writing. No bullshit. Real insights into the career and skills of a modern software engineer.
Want to become a true senior engineer? Take ownership, have autonomy, and be a force multiplier on your team. The Senior Engineer Mindset ebook can help π swizec.com/senior-mindset. These are the shifts in mindset that unlocked my career.
Curious about Serverless and the modern backend? Check out Serverless Handbook, for frontend engineers π ServerlessHandbook.dev
Want to Stop copy pasting D3 examples and create data visualizations of your own? Learn how to build scalable dataviz React components your whole team can understand with React for Data Visualization
Want to get my best emails on JavaScript, React, Serverless, Fullstack Web, or Indie Hacking? Check out swizec.com/collections
Did someone amazing share this letter with you? Wonderful! You can sign up for my weekly letters for software engineers on their path to greatness, here: swizec.com/blog
Want to brush up on your modern JavaScript syntax? Check out my interactive cheatsheet: es6cheatsheet.com
By the way, just in case no one has told you it yet today: I love and appreciate you for who you are β€οΈ