Hey everyone and welcome to today's episode of Developer Tea.
In today's episode, we're going to be talking about one of the most common habits that I see in high-performing managers and high-performing senior engineers.
This is, and it's not just a single habit, it's not something that you would, You know, just go and do this one thing over and over.
It is kind of a meta habit.
It's a way of thinking about the world and a way of thinking about your work.
But it's so simple that you could write it down on the back of a napkin.
My name is Jonathan Cottrell and my goal on the show is to help driven developers like you find clarity, perspective and purpose in their careers.
And we've been doing this career growth podcast, accelerator series.
What is the point of the career growth accelerator series?
It is to help senior engineers.
It is to help uh, you know, high to mid-level engineers who are trying to go to senior Right.
It's to help people who are stuck in the mid management levels and are not getting the recognition.
Maybe you've gotten a straight three on your one to five rating and your performance reviews for the past year, two years, three years, four.
You feel stagnant.
You feel stuck.
You're not really sure how to grow in your career.
And you keep on putting more energy in, but not getting anything extra out.
Many of you, you may not realize this, but many of you are headed for burnout.
If I just described you, if you're putting a bunch of energy in and you're not getting something out, you will eventually run out.
You will eventually hit a wall.
You're eventually going to burn out.
And so in today's episode, we're going to talk about a way of thinking about how to spend your energy in the most productive way more often, right?
The goal of this is not to fix a particular problem, but to give you the tools to think about how you spend your energy, how you spend your time, and to constantly improve that right.
And this is why I say it's a meta habit.
It's not really one specific.
It's not, hey, every morning you wake up and do X, right?
You meditate for six and a half minutes and then skip coffee and emails until 927.
That's not what this is about.
There's no single trick that's going to get you to break through your walls, to get you to break through to the next level.
There's no specific trick that's going to suddenly cause your career to grow overnight.
You may run into certain things that have a lot of untapped potential for you.
If you haven't been investing anything, for example, in self-review, if you haven't been investing anything in cross-functional relationship building.
Those are areas where you might find a ton of potential.
But most of the time...
The things that matter in our lives, the things that really are rewarding, the things we care about doing, the things we care about accomplishing the kind of resources that we care about earning.
These things take work.
They take a lot of focus.
They take a lot of effort.
It is not easy.
And if you're here to make it easy, then you're doing the wrong thing, right?
But that's not the same thing I'm not saying the same thing as you can't make it more efficient.
You can't spend your time in a better way.
So really what we're talking about in this episode is not just to tell you to keep grinding.
That's not a smart way to spend your time.
You will burn out, you will run out of steam, especially if you're not seeing commensurate gains right,
Especially if you're seeing sublinear.
In other words, you're putting in X and you're getting back less than X.
You should at least be seeing some kind of return on your investment that you would consider equivalent to what you've invested right.
But the goal for career growth For most seniors.
You've kind of done as much linear investment as you can.
In other words, just getting X back out of an X investment, just meeting.
That is not going to be how you break through to the next level in your career, because you've probably already reached your limit or you're close to reaching your limit.
So giving much more is not going to be a significant jump up.
We have to think differently.
We've got to change the way we're thinking.
All right.
So what is this meta concept?
We're going to talk about loops today.
All right.
And not to spoil it, because we're going to kind of paint the picture of what your life looks like without thinking about this automatically.
Whether you know it or not, whether you know it or not, you are engaged in some loop or multiple loops.
Everyone has multiples of these. in your life, right?
So these are not like a scientifically validated construct.
This is more, think about it as a mental model, a way of understanding the world.
Your loop is defined or you know, the shape of it is determined by By default, kind of automatically, right?
So the decisions you've made up to this point, the kinds of pressures, the kinds of biases, the kinds of incentives that you have, those kind of define your loop right.
So everybody has heuristics, for example.
When you wake up, what is the first thing that you do?
And so the most obvious example of a loop is wake up, do a bunch of stuff, sleep, start over, right?
This is a loop that you go through.
You may also have certain loops that play through when you're in meetings, right?
So when something happens, you do X, Then something else happens, you do Y, Then something else happens, you do Z, And then the thing that triggers X starts back over, and you keep doing this same kind of loop over and over.
The loops are not necessarily repetitive.
They can be complex.
If you were to think about this in terms of code.
A while loop doesn't necessarily have to repeat the same thing over and over.
It can have multiple conditionals.
While you have no meetings, you will work on code.
But if a meeting shows up, you're going to run a different loop for your meeting.
Right.
So think about this as the heuristics that are built into your brain.
You know, and you can kind of zoom way in on a very small version of a loop, or you can go much larger.
In fact, very large.
For example, if you are, if you're like me, you tend to have loops that define the way that your career will will play out.
So you have a while happy at job, stay at job kind of loop.
Right.
So this is kind of the default.
We have a lot of things that inform our decision making loops.
And the reason why I say they're loops is because we very rarely move on from these behaviors.
We rarely do something once and never again.
Right.
It is a behavior that we look for some kind of condition and we respond to that condition.
And then conditions change and then we're looking for a condition and we're responding to the condition again.
So it is a in that particular way, it's a loop.
So what we're going to talk about today, after our sponsor break, we're going to talk about designing an inner and an outer relationship.
Today's episode is sponsored by Unblocked.
And I was going to make everything better.
But if you are like me, you are ignoring most of the comments that they're leaving on your pull requests.
And this isn't because AI is incapable.
In fact, the people who are promising you the moon with AI, you know, they're directionally correct.
AI is incredibly good at understanding code and finding bugs even.
But it's really limited by whether or not it has enough context, right?
Most AI reviewers focus on surface level issues that don't have enough context.
Things like style nits, obvious refactors, things that you would catch pretty easily if you were to go and just take a quick glance.
This is something that's pretty much clear from the diff in the PR.
Meanwhile, the things that you actually care about whether a change violates an architectural pattern that your team has agreed on, or maybe it's quietly duplicating logic from another part of the code base that it doesn't even know about.
These things go unnoticed.
They are not picked up in the AI code review.
And then it leads to if you just are accepting these code reviews without doing this extra review, then you're going to have this code rot, a problem of the code degrading over time into a bunch of slop right.
And you're essentially reducing the seniority level of your code.
That's the problem that Unblocked is built to solve.
Unblocked has an AI code review process that is grounded in decision grade context.
This includes prior PRs, design discussions documentation, system level constraints In essentially the same context that a senior level engineer would rely on when reviewing code.
Teams using Unblocked report, fewer comments, higher signal and automated reviews that they actually trust.
Enough that many have actually turned off other AI review tools entirely.
Even if you've totally written off AI code, review Unblocked is worth a look, particularly because it's free to begin with.
You can get a free three-week trial at getunblocked.com slash developer team.
That's getunblocked.com slash developer team.
Thank you again to Unblocked for sponsoring today's episode of Unblocked.
We're talking about loops today.
I want to step back for a second and explain why this is so important.
In past episodes in fact maybe as long ago as a decade on this show, we talked about things like useful defaults.
The concept here is much like.
I believe it's James Clear who says that we don't rise to our level of aspiration I think is the word he uses or rise to the level of our ambition maybe, but we fall to the level of our systems.
When he uses the word systems here, You can kind of read that as habits.
He's kind of famous for his book, Atomic Habits, right?
So our habits are the things that we do with very little conscious effort.
It doesn't take a lot of mental strain.
It doesn't take a lot of changing our behavior, going out of our way.
It's something that we're well set up to do with very little strain, very little effort.
That doesn't mean that the thing that we're doing takes very little effort.
For example, if you are in the habit of working out with intensity, the workout itself certainly takes effort.
But the choice to do that, the cognitive leap to make it to that habit.
For some people, that may be much harder than others, right?
This kind of activation energy concept.
And so when we talked about useful defaults in the past, we're really talking about developing good habits and having you know an answer, an easy answer, to what do I do when I don't know what to do?
What do I do if, you know, I think that I'm done for the day, but it's only halfway through the day?
That's a good question.
If you're a manager, by the way, that's a pretty good question to talk through with a junior report of yours.
What do you do when you feel like maybe you've run out of work, right?
You've kind of burned through the list of things that you have to do.
This is kind of rare, right?
Usually we have more work than we know what to do with.
And so you can also ask the same question in that scenario.
What do you do when there's too much to do?
Okay, so these are the beginning parts of loops.
We're kind of asking, what is your loop?
When you get to the end of your list, what is the next thing that your encoded loop and you could call this a habit, but it doesn't necessarily even have to be a habit.
You could consciously choose to do this thing without it happening automatically, right?
The useful defaults concept is, okay, what is the default thing that I fall back to?
What is the thing that I do when I don't know what else to do?
What is the default behavior that I choose whenever I have too much to do? right?
What is the default behavior when I am interviewing someone, right?
If you're a manager, what is the default behavior when I'm reviewing someone's code?
How do I set myself up for success by having all of this long stack of useful defaults, right?
For myself.
All right.
So.
So then I want to talk a little bit about loops now, because they are sort of like useful defaults, but they're a little bit more of a conditional state, right?
So a loop is something that you will do until some termination, right?
This is when we talk about loops in code, that is, you know, you break out of a loop, right?
And the loop is something that you'll do while something else is true.
And you may have multiple conditionals in a loop.
You may have, you know, while X and Y and Z, I will take these actions.
All right.
So.
This is especially interesting as a mental model as we continue to adopt new AI tools into our tool belt, because we're designing these loops the literal loop in this case so that they can repeat with some kind of process that happens over and over that an AI is involved in.
And this is where we get the phrase human in the loop, right?
So AI goes and does a thing.
The human is asked a question.
Maybe we're asked for verification, for affirmation of a particular step.
Maybe we're asked to confirm that a specific, particular kind of command that our ai agent wants to run is acceptable.
Right, so?
So human in the loop is one tactic that we use to make the loop more effective.
Okay so, so that's the mental model that we're using here.
Now i want you to think about this as an abstract concept in your career.
Don't think about this as okay, how do i get my you know my coding work done?
Think instead about this as what are the different loops that you engage in for your career growth?
So, for example, while it is a normal working week, I will continue to have recurring one-on-ones with all of my teammates.
This is an example of a loop, right?
While it is, you know, while it is a holiday week, I will make it a point to put an out of office emoji on my Slack.
You know status.
That seems simple, right?
So then hopefully with that last one, you're asking the question, why would you do that?
Why is that loop useful?
And this is where we introduce the idea of an outer loop.
The outer loop is kind of a meta observation.
So it's going to say, okay, I'm going to run a particular loop based on something else.
And I'm going to look at the output of that inner loop and I'm going to decide something about that loop.
So, for example, I may recognize with my outer loop that I want to instill on my team a culture of transparent communication.
And a culture, and this is for managers, right?
And it could also be a senior engineer that chooses to do something like this.
A culture of transparent communication.
And we want to make sure that people are taking the rest that they need.
And so I'm going to set an example.
And therefore, right?
So that's the outer loop kind of reasoning, right?
I'm looking at the behaviors of the team that I have.
I have a bunch of other loops running, like we're going to keep working.
We're going to keep doing our standups.
We're going to you know every two weeks we're going to review the work that we've done and all of these things, right?
We're going to have retro.
That's part of another inner loop.
So I'm looking at all of this information that's coming out.
My outer loop is saying, what does all this information mean?
And what can I do?
How can I respond to this by changing, adjusting my inner loops?
And by the way, there's not just two of these.
Of course, you can have multiples of these that are larger and larger.
And the further out you go, the more abstract you get, the closer to your personal values.
Probably you begin to get out away from the tactics of your work.
So why would you do these things, for example, might be an outer loop question.
And so if you have this setup where you're constantly evaluating, right?
You're evaluating on a loop.
That is your outer loop behavior.
And then, on the inner loop, you recognize that this is not the thing that you know.
This inner loop is not the whole picture.
We're going to perform these things.
We're going to stick with the inner loop.
We're going to do it as if it's a protocol, so that we have information that we can evaluate with the outer loop right.
So then we can adjust, we can sub in, sub out.
And what this allows you to do.
If you have this mental model and you're approaching this with intention, you can actually make more informed adjustments to your behaviors, right?
You can adjust those inner loops in a way that provides more information about what the adjustment brought on.
So this is essentially an experimental method.
You're changing few variables, you're having some kind of observation and you're doing this habitually.
And so eventually you get to the place where your inner loop has been clarified and it's been changed enough times that you can kind of view it as a default behavior.
And so now your outer loop is helping you define your useful defaults.
Right.
So if you're not using this idea, if you're not, if you don't already have this set up as like a mental model for yourself, the most likely what you're doing is you're running one big loop.
You're trying something.
You're evaluating whatever happened when you tried it and you make an adjustment and you try something else.
And this has worked for humans for a very long time.
But if you can't step out away and evaluate the system and set yourself up for long-term success, then each of those efforts are going to be linear in their impact.
You're going to have a little change and then another little change.
And it's very hard to determine what the overall direction is.
It's very hard to understand this as a recurring behavior.
Right, you can't set up longer term conditionals that you care about?
For example, i'm going to try this until i'm going to try this particular behavior until right.
That would be the until part is defined by that outer loop thinking right, so the inner loop might be i'm going to go to the gym, All right.
But the outer loop is saying I'm going to go to the gym for X amount of time until I determine whether it's working.
If this particular, you know, workout program is getting me the results that I want.
And so if you don't have that outer loop, you're going to run into these problems where you You can't evaluate something on a longer term horizon because you don't have anything governing the experiment.
What I want you to take away from this is not necessarily that you need two loops.
That's kind of a broken way of thinking about it.
It's that we have these default loops.
We have these responding opportunities that we're kind of set up with.
And if we can start to think about evaluating the recurring behavior getting to an outer loop right.
It doesn't have to be that you have some long list of loops that I run in your obsidian, your second brain, or something.
I
I say that because I've considered doing something like that myself.
It's probably not very useful.
The behavior that the senior engineers the most effective seniors.
They may not even call out a loop.
This is just a mental model for you to capture this behavior.
The core, fundamental behavior here is being able to evaluate, being able to step up a level and evaluate the system, Not just the single behavior and the single outcome, but the system, the recurring behavior and the longer term trajectory outcomes right.
You know, I had one meeting and it went poorly.
I'm never going to have a meeting again.
That would be an example of not outer loop thinking, right?
I had a meeting.
It went poorly, but I'm going to run the experiment for five iterations and then we'll decide what to do from there, right?
That is outer loop thinking.
Thank you so much for listening.
Try Unblocked because it's going to give you higher context in your reviews, like a senior engineer would have.
This is one of those an example of a system that you can evaluate from the outside looking in.
You got three weeks to try it out for free.
That's getunblocked.com slash developer team.
Thank you so much for listening.
If you enjoyed this episode, you can find us on Twitter.
Apple Podcasts.
You can find us on any podcast player.
Of course, you can also now find us on YouTube, the Developer Tea channel on YouTube.
Thanks so much for listening and until next time, enjoy your tea.