3 min read

Extreme Ownership - 4 Laws Of Combat Every Developer Needs To Follow

Extreme Ownership - 4 Laws Of Combat Every Developer Needs To Follow
Photo by Shane Rounce / Unsplash

Hey 👋 - Ilya here.

What's up and welcome to the Weekly One on One!

Here's one short tip on how to Level Up as a developer.

Today's issue takes about 2 minutes to read.

Enjoy


One of my favorite leadership books is Extreme Ownership by Jocko Willink. While he draws his lessons from combat, the pictures I see in my head are all from daily life as a software developer.

Those laws are universal principles, and they all work together to help us realize the most important thing -

Extreme ownership is about doing the 100% that is in my power and taking full responsibility for my actions.

Here's my take on the 4 Laws Of Combat and what they mean to me in terms of our day-to-day work.

  1. Cover and Move
  2. Simple
  3. Prioritize and Execute
  4. Decentralized Command

1. Cover and Move

This one is all about teamwork, interdependence, and relying on others. It's about working to achieve a common goal and keeping my own ego in check. It's also about breaking silos. It's not backend vs. frontend or dev vs. DevOps. It's about the customer, the company, and the team.

Question to ask:

  • Where am I acting selfish?
  • What can I do today to support my team and my organization?

Manifestations of the principle:

  • Helping out a colleague to troubleshoot an issue.
  • Tomorrow they help me out.
  • Don't let them wait for your PR review

2.  Simple

Our projects are full of ambiguity if we like it or not. The law of "Simple" makes us rethink and simplify everything, from processes to requirements, to communication.

Question to ask:

  • Are the requirements simple enough?
  • Is my status report simple enough?
  • Have I explained my idea simple enough?

Manifestations of the principle:

  • Simple code (code is for other people to understand)
  • Simple communication ("This is the bug. This is the impact. This what we're doing." instead of long texts with unclear action items)
  • Simple explanations

3. Prioritize and Execute

There is always more work to do, always more improvements to make, features to develop, and bugs to fix. It sounds simple, and there are numerous examples where we wish for more prioritization from above. For me its not only about the team and the organization but its also about my own work.

Questions to ask:

  • How do I prioritize and execute my own tasks?
  • Whats most important this morning?

Manifestations of the principle:

  • You know the #1 priority for your company
  • You know the #1 priority for your team
  • You know the #1 priority for you TODAY
  • You can quickly adjust as things happen

4. Decentralized Command

Last week I was pair programming with a colleague. We were about to release a feature we were working on and the deadline was tight.

Then we noticed a bug.

Our technical mind wanted to fix it. But bugs are unpredictable and we could miss the feature release date.

By understating the product and business impact of the bug we were able to decide to not deal with it.

It took 1 minute to decide. We could have wasted a day solving it or half a day chasing down the team lead or product manager to help us decide.

Decentralized command empowers people to make decisions. It's not about giving orders but giving enough context. It's my manager having trust in me that I am making the right choice given the circumstances.

Question to ask:

  • What is more important, speed or test coverage?
  • What is our highest priority as company? As a team?
  • What is the impact of this bug?
  • What is the impact of a delay?

That's all for this One on One. 1 tip at a time to Level Up as a developer.

See you again next week.

Whenever you're ready, I'd like to personally help you Level Up:

  1. Reply via email with your question or situation here
  2. Schedule a free one-on-one with me here

Cheers,

Ilya

Join other developers in the Weekly One on One. Every Wednesday you'll get 1 actionable tip on leveling up as a developer.