Happy to share part of what I've been working on in the last two years at Uber!
How We Unified Configuration Distribution Across Systems at Uber https://t.co/4ONo5Q7e7v
Joakim Recht (Uber Distinguished Eng) on tech leads: "Software engineers need to write code. If you're not writing code, you're not a software engineer."
Joakim grew from a Senior Engineer to a Distinguished Engineer at Uber and I asked him what it took to get there. We covered:
• The project that grew his career
• What makes a great software engineer
• Learnings from promo committees
• When promos are unfair
• Biggest technical mistake at Uber in hindsight
• Advice for his younger self
𝗣𝗼𝗱𝗰𝗮𝘀𝘁 𝗹𝗶𝗻𝗸𝘀:
• YouTube: https://t.co/FE0ME5neta
• Transcript: https://t.co/fdAI6KKmnt
• Spotify: https://t.co/oxWTLwmpBj
• Apple: https://t.co/CN9FSyPSII
Migrating tech stacks @Uber's scale isn’t easy. Learn how we migrated our stateless container orchestration platform to Kubernetes and operate it at a scale of 3 million cores with 1.5 million pod launches daily.
read more: https://t.co/90ULE7OBDa
“Let’s follow up in 10000 meetings and micromanage every step of an engineer and ask them to spare most of their time producing demos for leadership, instead of putting 2-3 good engineers on the problem and see if there is a viable solution to the problem.”
There are no great programming languages. If a language doesn’t apply to your constraints, move on if you can. More broadly, tech is a free market of ideas and implementations so we can avoid designing everything by committee. No need for hard feelings. Use what works the best.
"First do it, then do it right, then do it better."
Just start. The journey to success often begins with a single step, but that first step can be the hardest to take. It's easy to get caught up in the fear of failure or the desire for perfection, but I hope this quote I first shared in 2013 can be a reminder of the importance of simply getting started as we go into 2024.
Just Start Somewhere
"Start slow if you have to. Start small if you have to. Start privately if you have to. Just start." - James Clear
Taking that first step doesn't require perfection or immediate mastery. The key is to overcome inertia and take action, as this action will lead to progress, learning, and (if you’re lucky and consistent) ultimately success.
When you start, you allow yourself the opportunity to grow, adapt, and move forward.
The Power of Starting
Beginning a new project or habit often feels daunting. According to psychologists, we tend to overestimate the pain of starting and underestimate our ability to persist.
However, studies show that "small starts" predict eventual success better than initial enthusiasm or early progress. This phenomenon is known as the fresh start effect - taking the first step energizes us and bolsters motivation.
So focus on starting without putting pressure on perfection. Progress and course corrections will follow.
First, Do It: Embrace the MVP Mindset
Doing it = get the simplest MVP out.
A Minimum Viable Product (MVP) represents the simplest version of a product or idea that allows you to test, gather feedback, and iterate.
By embracing this mindset (just get something done - it's OK if rough, a prototype, a draft), you focus on progress over perfection, understanding that getting something out into the world is far more valuable than waiting for the perfect moment.
Expand Your Comfort Zone
Venturing outside one's comfort zone can elicit fears of failure. Leaning into discomfort not only builds confidence and skills, but research shows it makes us more receptive to learning. Recognize that fear is often the mind's way of urging us to grow. Don't let it stop you from progressing.
Then, Do It Right: Refine and Correct
Doing it right = fix correctness issues.
Once you've taken that first step and put your MVP out into the world, it's time to refine and correct. This stage is about learning from feedback, identifying areas of improvement, and making adjustments accordingly.
It's a chance to iterate on your idea, ensuring that it meets the needs of your audience or customers while aligning with your vision.
Cultivate Curiosity and Resilience
Meeting new challenges with curiosity and resilience makes venturing outside our comfort zone more sustainable and enjoyable. Cultivate curiosity about growth opportunities and your capacity to rise to them. Set mini-challenges to incrementally expand your horizons.
When facing inevitable setbacks, avoid self-criticism and tap into resilience - the ability to recover, learn and continue progressing.
Self-compassion, adaptability and maintaining perspective are key here. With consistent effort, you build confidence in your ability to start, stumble, learn and work toward mastery.
Finally, Do It Better: Strive for Continuous Improvement
"Doing it better = iterate towards an ideal end-state (e.g., make it fast)."
The journey doesn't end with merely doing it right.
The final step is to continuously improve, striving for excellence and growth.
By iterating towards an ideal end-state, you demonstrate a commitment to progress, ensuring that your product, idea, or project remains relevant, innovative, and successful.
Set New Goalposts
As you improve, have a clear idea of when you are “done” or update your goalposts. Elite athletes turn small gains into competitive edges via the aggregation of marginal gains. Identify areas of potential improvement and set measurable stretch goals, from increasing efficiency to enhancing user delight.
Overcoming the Greatest Barrier to Progress
"The greatest barrier to progress is not lack of resources or talent, but fear of failure."
Recognizing that fear of failure is the most significant obstacle in the pursuit of success allows you to confront it head-on.
By acknowledging this fear, you can focus on taking that first step, knowing that once the ball starts rolling, it becomes much easier to keep it in motion.
Remember that starting is more than half the battle. Don't wait until you feel ready, because the perfect moment may never come.
The Bottom Line
Rather than striving for perfect execution, embrace the power of starting - put forth an MVP, soft launch an initiative, or set a milestone. Progress begets motivation. By simply starting, you open the door to growth and innovation. The rest will follow.
Embrace the power of starting and then iterating until you're happy.
One of the leadership principles I've learned over the years is that incentives are far more powerful at driving change than mandates.
If you incentivize engineers to communicate their ideas and share them regularly, you get better results than if you mandate specific design/architecture processes.
If you incentivize engineers to pay close attention to reliability metrics, your software gets more stable than if you regularly hammer them for causing outages.
If you incentivize engineers to come up with product ideas and execute on them, you get better products than if you force them to do the bidding of a product manager.
Setting up incentives requires more careful thought, communication, and patience. But the rewards are well worth it.
Communicating concisely is a skill.
Listen to an SVP or VP at Amazon talk. They don't blather with buzz words. Their communication is data rich, and generally short. Unless they're at an all-hands. No one is concise at an all-hands meeting.
Learning how to be concise is something you can practice. There are a few particular rules to keep in mind.
Rule #1 - Answer the question first.
In a project status meeting - "Is project X on track?"
"Well, at the moment we're working on a long list of tasks. The QA team is working hard on validating the next steps in the schedule, and we're looking at restarting the test cycle..."
Answer the question! And importantly, answer it first. Don't proceed into a lengthy explanation when a yes or no question was asked.
Rule #2 - No need to elaborate if a follow-up question is not expected.
In a project status meeting - "Is project X on track?"
"Yes, we're green."
Perfect. No need to elaborate because the project is green. It drives us all crazy when someone needs to explain why nothing has gone wrong yet.
Rule #3 - Offer a longer explanation when it's likely to be needed.
In a project status meeting - "Is project X on track?"
"No, we're red."
Not good enough. Because you *must* realize they'll want more information.
In a project status meeting - "Is project X on track?"
"No, we're red. Our QA cycle discovered 3 blocking bugs. The team is working on all 3 bugs. We don't immediately know how hard they will be to resolve. We'll have updates on these bugs and a new estimate on a launch date by end of day and will communicate all information then."
That's a fairly short answer which summarizes what people are likely to ask - what's wrong, when will it be fixed, and when will I hear our next update?
Learning when to use those specific rules makes a big difference in how you're perceived by your co-workers (and particularly senior leaders). For more on clear communication, read on!
https://t.co/NaDFypf8an
https://t.co/NaDFypf8an
Two great talks by @UberEng on how they operate Kubernetes at scale, and their batch scheduling platform.
These talks highlight the problem space of working with #Kubernetes at hyperscaler companies very well. 👏
https://t.co/lMI0kSCXtd
https://t.co/qVGSgr7Im8.
Why do companies repeatedly try to *measure* productivity?
As a leader of an organization, if someone on your staff asks for more people to accomplish their goals, what are the 3 major possibilities?
🧵 Efficient Learning Path to Master Containers 📚
1/ When I started with Docker in 2015, I viewed containers as lightweight VMs with fast startups. But this oversimplified view posed risks:
- Misunderstanding capabilities
- Misusing the technology
- Misjudging safety means
How do you move a two-million-CPU-core microservice system to cloud? At @Uber we don't just put our microservices in containers—we make them portable, so they can be shipped anywhere.
read more: https://t.co/yzu1m412GI