Podchaser Logo
Home
Principles of Work - Shorten Your Feedback Loops

Principles of Work - Shorten Your Feedback Loops

Released Wednesday, 3rd April 2024
Good episode? Give it some love!
Principles of Work - Shorten Your Feedback Loops

Principles of Work - Shorten Your Feedback Loops

Principles of Work - Shorten Your Feedback Loops

Principles of Work - Shorten Your Feedback Loops

Wednesday, 3rd April 2024
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:00

We're going to talk about a working principle

0:02

in today's episode of Developer Tea. And

0:14

this principle is one

0:16

that is core to every agile discussion,

0:19

every lean discussion.

0:26

It's core to

0:29

another industry,

0:31

and that's the learning industry, or

0:34

specifically learning theory. And

0:37

this principle is based

0:40

on things that

0:43

come from behavioral

0:45

science and study

0:47

of psychology. The

0:50

principle is based on the idea

0:52

of feedback loops. Here's

0:55

the principle. It's very simple. Make

0:59

your feedback loops short enough that

1:02

any singular action is

1:05

cheap enough that

1:08

when you're wrong, the

1:10

value of learning outweighs

1:13

the cost of being wrong.

1:16

I'm going to say that again, because it's kind of a

1:18

long one. Make your

1:20

feedback loops short enough that

1:22

any singular action is cheap

1:24

enough that when you're wrong,

1:26

the value of learning that you get

1:28

from being wrong is

1:31

cheaper than the cost of

1:33

being wrong in the first place. Set

1:37

another way, shorten your feedback

1:40

loops so that mistakes provide

1:42

learning that outweighs the cost of

1:44

making those mistakes. There's

1:47

a very interesting underlying

1:50

structure here that I want to

1:52

expose, but I want to

1:54

focus first on the idea of shortening your

1:56

feedback loops. What does this mean exactly? It

2:00

can mean a lot of different things depending on

2:02

the context. Very importantly,

2:05

the requirement to shorten a feedback

2:07

loop in this principle is two

2:10

things. One, it allows you to, on a

2:12

regular basis, review in some

2:16

kind of retrospective way. You're looking

2:18

back at whatever decision, whatever action

2:20

you've taken and looking at measuring

2:23

some kind of result. You're

2:25

trying to understand what was the impact of the action that

2:27

I took. Matching the feedback

2:30

loop has all kinds of good effects that we're

2:32

going to talk about after our sponsor message today.

2:36

The important thing to qualify the

2:38

shortening of the feedback loop, you

2:41

need to be able to

2:43

change direction. It's

2:45

not enough just to continuously

2:47

retrospect on what you've been doing. You

2:49

need the agency to be able to

2:52

make adjustments. Otherwise, all of this ends

2:54

up being kind of a

2:56

lost cause. If

2:59

all you're doing is you're retrospectively

3:02

looking at what you

3:04

have done in the past two weeks but you

3:06

don't have any agency to

3:08

adjust your heading, you can't change

3:11

anything about what you're learning, then

3:14

it's not really fitting

3:16

the mold of shortening the

3:18

feedback loop. The feedback

3:21

loop includes, very importantly,

3:23

includes adjustment. The

3:27

parts of the feedback loop, very

3:29

briefly, the parts that you need to have

3:31

for the feedback loop to be complete. First

3:34

is an action, some

3:37

kind of action, whatever it is, decision,

3:41

maybe some kind of code deployment that you

3:43

do, whatever it is. Second

3:47

is a measurement of

3:49

that action, so

3:52

some kind of, hopefully some kind

3:54

of objective measurement in the best

3:56

case. Three, review

3:58

of that measurement. And

4:01

here we're looking to see if we believe that

4:03

the measurement is indeed tightly

4:06

cohesive with our

4:08

action for

4:12

some decision about the

4:14

decision. In other words, if

4:18

you're looking at the measurement, you

4:20

may make a decision about

4:23

the decision. That is, some kind

4:25

of judgment call about the decision

4:27

that is instructive for

4:29

the final piece, which is some

4:32

kind of adjustment before restarting

4:34

that loop. So

4:36

the adjustment acts as the

4:40

prompt for the next action. If

4:43

you're missing any of those pieces, then your feedback loop

4:45

is not complete. And

4:47

shortening just some part of

4:49

that does not actually check the box here for

4:51

this principle. We're going to take a quick sponsor

4:53

break and then we're going to come back and

4:55

talk about why. Why do we care about shortening

4:57

the feedback loop? What kinds of

4:59

effects does that have, etc. Right after

5:02

we talk

5:04

about feedback

5:07

loops. Thinking

5:09

of feedback loops, what was

5:11

the last time that you had a long

5:13

feedback loop? Because you're trying to answer a

5:16

question about your code base and you spent

5:18

hours digging through Slack channels, PRs, Jira tickets,

5:21

and wikis trying to figure

5:23

out what was going on. Or

5:25

perhaps somebody on your team has recently faced this and

5:27

then they had to ping you and you

5:30

had to bounce out of the IDE or you

5:33

got interrupted in a meeting or something

5:35

to answer this question. Maintaining

5:37

a shared understanding of the code base, it

5:39

does get harder. As

5:41

an engineering team grows and as code base grows, getting

5:44

answers to questions becomes more time consuming

5:47

when you're onboarding new team members or

5:49

working on refactoring existing projects. Our

5:52

sponsor today, Unblocked, helps solve

5:55

these problems. It

5:57

provides helpful and accurate answers to questions about your code base

5:59

and your code and seconds. Answers are specific

6:01

to your team and your

6:03

application because it complements source code

6:06

with relevant discussions from GitHub, Slack,

6:08

Jira, Notion, Confluence, and more. Like

6:11

an extended team member who never sleeps, Unblocked

6:13

is aware of every decision, every discussion,

6:16

for every part of your code base. With

6:19

Unblocked, teams are shipping faster by

6:21

spending less time digging for information

6:23

and dealing with their options. Check it out.

6:26

Unblocked. So

6:36

our principle today is

6:38

not just simply shorten your feedback

6:41

loops. That is a

6:43

good heuristic. Very

6:46

likely, most people can probably

6:48

benefit from shortening their feedback

6:50

loops. But the

6:52

economic principle here is

6:55

the one that I want to talk about,

6:57

and that is to understand why we care

6:59

about shortening our feedback loops in the first

7:01

place. And it's an

7:03

economics problem. And when

7:05

we say economics, we're not just talking about

7:07

necessarily money economics.

7:09

This could also apply to your time,

7:11

to your effort, to

7:13

your satisfaction. There are economics that

7:15

apply to all of those things. So

7:19

understanding why do we care about shortening

7:21

the cycle time? There's a couple of

7:23

reasons why we care about shortening cycle

7:25

time. First of all, one

7:28

sub-principle here is that shortening cycle

7:31

time, or rather shortening the

7:33

feedback loop time, we consider these things

7:35

very similar, cycle time and feedback loop

7:37

time. Shortening your feedback

7:40

loop time, generally speaking,

7:42

will result in a cheaper

7:44

loop. It

7:47

is a less expensive loop, a less costly

7:51

loop. And this makes intuitive

7:53

sense if you think about our

7:56

feedback loop is one day versus five

7:58

days. Well, our total loop

8:00

cost, if you want to call it that. Our

8:03

total loop cost is five times as much, in terms

8:05

of time at least, for the

8:07

five day loop versus the one day loop. Now

8:09

there's an important caveat here, and that

8:12

is that shortening your feedback loop to

8:14

too short of a period of time

8:17

will incur some kind of overhead,

8:19

you know, kind

8:22

of a curve that looks

8:24

like a J, where

8:26

the cost actually goes back up

8:29

compared to the value of the

8:31

learning that you get from

8:34

the retrospective portion of the feedback

8:36

loop. So let me

8:38

say that another way. There is a certain

8:41

length of time, there's

8:43

a certain kind of length of loop I guess,

8:47

where the loop is a little bit too short.

8:50

And so you need to lengthen the feedback loop to

8:53

the point where it's at the bottom of that

8:55

J curve. And the

8:57

bottom of the J curve here is essentially it's

9:00

the cheapest possible feedback

9:03

loop that you can have relative

9:05

to the amount of learning that

9:08

you can get out of

9:10

the feedback loop. To get the kind

9:12

of intuition for this, let's imagine

9:15

that your team commits in

9:19

sprints. Let's say

9:21

we have two teams, team A, team B.

9:23

Team A has two week sprints, and

9:26

team B has two month sprints. At

9:29

the end of every two weeks, team A is

9:32

able to do some

9:34

kind of retrospective and adjustment to whatever

9:36

their plans are, and team

9:39

B doesn't do that until the

9:41

two month mark. Going back to our

9:43

original principle here, we

9:45

can kind of see which one of these is more

9:47

risky, just naturally. In

9:50

team A's circumstance, the

9:53

risk of making a mistake in

9:55

the direction that you're going is mitigated

9:58

by the fact that you're likely to be able to do

10:00

that. to catch that mistake whenever that

10:02

two-week retrospective rolls around. You can

10:04

change direction after two weeks. However,

10:08

the risk of making a mistake for

10:10

Team B is that

10:13

it's very possible that you'll continue down

10:15

that mistake pathway and

10:17

you will not catch that for

10:19

the duration of two months. So

10:22

this could be very expensive. Now,

10:24

of course, there is a cost associated

10:26

with the interruptions

10:29

that the feedback loop reset

10:31

has. It is

10:33

kind of like the changeover process for

10:35

sprints, if you're used to using sprints,

10:38

that kind of retrospective, the

10:40

actual time that the retrospective takes.

10:43

And this is why it's important to recognize

10:45

that there is indeed a threshold

10:48

where you should have

10:50

long enough that the time

10:52

required to do that changeover is justified

10:54

by the amount of learning that you

10:58

get out of that retrospective. Now,

11:00

to be clear, I'm using terms that are

11:03

probably most familiar to folks who have practiced

11:05

Scrum, but this feedback loop

11:07

is not something that is software engineering

11:09

specific. This is something that you can

11:11

do with any kind of process, with

11:14

anything where you have

11:16

any level of uncertainty of the plan

11:18

and the pathway. You can apply the

11:20

same basic concepts, this idea that you

11:22

have some kind of action, you have

11:24

some kind of measurement to determine the

11:26

effectiveness of that action. You decide how

11:29

effective it was based on observing that

11:32

measurement and making a decision about

11:34

that. And then you decide what to do about

11:36

it. And you start that all over again.

11:38

You make some adjustment and you start the feedback

11:40

loop back over. Why is

11:42

this such an important principle? Why does

11:44

this matter so much that

11:46

we have this optimization curves,

11:49

J curve of

11:52

optimization for feedback loops? There's

11:54

a lot of reasons why it's

11:57

important to optimize for this. The most

11:59

important from a business

12:01

standpoint is risk mitigation

12:04

Especially in areas of uncertainty software

12:06

engineering tends to have a lot

12:09

of uncertainty and tends to have

12:11

this kind of pivot Need

12:14

on a regular basis. You probably want to

12:16

be doing a retrospective To

12:19

pivot and change your direction or change your

12:21

decision adjust your priorities, etc.

12:23

And so Having that

12:25

in software engineering makes a lot of sense But

12:27

I want to call out a one

12:29

that's not really intuitive That

12:31

is that one of the most important

12:34

things that this enables

12:36

is it reduces the friction into

12:38

action All right, it

12:40

reduces the friction to making a

12:42

decision and taking action on something

12:45

now this It

12:48

should be balanced out by thinking

12:50

about action bias or bias to

12:52

action Sometimes we

12:54

talk about this in a positive light

12:56

But there is a downside to the

12:58

bias to action which is that sometimes

13:00

we take an action because we don't

13:03

necessarily know what to do And we

13:05

default to using the heuristic of well

13:07

doing something is better than doing nothing.

13:09

It's not always true But

13:11

with a feedback loop we can find that out

13:14

With a short feedback loop we can find

13:17

that out and the cost of any given

13:19

action being low enough That

13:22

we learn from it and that we

13:24

gain more value out of that learning

13:26

than we did loss from the incorrect

13:28

decision This encourages

13:31

action Think

13:33

about this you want your

13:35

engineering team to be more Decisive

13:38

you want your managers to be more

13:40

decisive You want your

13:42

engineers to pick up tickets

13:44

and start working on them make decisions about

13:47

the product that they're working on You

13:50

want them to deploy code more regularly make

13:53

it so that the cost

13:55

of mistakes is very low

13:58

the cost of mistakes

14:01

being low encourages learning. This

14:04

is a direct correlation to how

14:06

often you are reviewing to ensure

14:09

that you are adjusting in response to your

14:11

mistakes. This is when the learning occurs is

14:14

in that feedback loop. If

14:16

you make your feedback loop shorter, you're much

14:18

more likely to learn. You're

14:20

much more likely to be able to make adjustments that

14:22

matter. Here's one

14:25

more kind of final bonus benefit that

14:27

we can't leave this episode without talking about. Making

14:30

your feedback loops shorter is going

14:33

to increase the quality of the messaging

14:35

within the loop. Think

14:38

about this. We've talked about the communications theory

14:40

stuff in recent episodes of the show. I'd

14:42

encourage you to go back and listen to

14:44

that to get more of a primer on

14:47

what that actually

14:51

means. But if we talk about that feedback loop

14:53

in the communications theory, if

14:56

you think about a very long feedback loop, imagine

14:59

this being like shouting

15:01

to somebody across the room in

15:05

a noisy room especially, and

15:09

shouting across a very long

15:11

distance or playing a game of

15:13

telephone. These are very

15:15

similar to very long feedback loops. A

15:18

short feedback loop has a

15:20

nearly directly provided message.

15:25

Reducing the likelihood that some random

15:28

effect, that some other confounding

15:31

variable, has entered the

15:34

picture. When we

15:36

do that measurement part of our feedback loop,

15:38

the measurement has a much higher cohesion to

15:41

reality. In other words, it's

15:43

much more correlated to some

15:45

effect from our decision. If

15:49

we're making a decision and immediately looking at

15:51

the feedback from that decision, making

15:55

an adjustment, and then repeating, we're trying

15:57

to figure out what part of our

16:00

of the decisions or the actions

16:02

that I'm taking, how are they affecting

16:04

the thing, the measurement that I care about? If

16:08

I have a long feedback loop,

16:10

then it's very possible that more

16:12

things are affecting that measurement. And

16:15

so we learn less. It's a leaky

16:19

feedback loop. And

16:21

so it's much harder to learn, it's much

16:23

harder to attach specific outcomes

16:25

to specific actions because our feedback

16:27

loop is too long, it's easily

16:29

corrupted, there's a lot of

16:31

noise in the system. So this

16:34

is an additional benefit. And also by

16:36

the way, that's part of

16:38

why shorter feedback loops are cheaper.

16:40

They are cheaper not only just

16:42

in direct spend, but they're also

16:44

cheaper because they're simply more efficient. The

16:48

system is more efficient. So

16:50

you don't have any additional waste on

16:53

top of that feedback loop. Thank you

16:56

so much for listening to another

16:58

principles of working episode of

17:00

developer tea. Once again, the simple

17:03

heuristic here for most of you is

17:05

to shorten your feedback loops. That's a

17:07

simple heuristic. There is an optimal

17:10

length for your feedback loops. And

17:13

there's multiple types of these. You

17:15

don't have to think about this just as your

17:17

sprint cadence. You can also think

17:19

about how tight can I get my feedback loops

17:22

when I'm writing code? Can I get

17:25

immediate feedback for my tests, for example,

17:27

which is a very common example to

17:29

try to tighten the feedback loop on. Thank

17:31

you so much for listening to this episode. If

17:34

you enjoyed this episode, please consider joining

17:36

the developer tea discord community or head

17:38

over to developertea.com/discord. Thank you again to

17:41

today's sponsor Unblock. Get

17:43

answers from pretty much every source

17:45

that you use from Jira to

17:47

GitHub to Confluence to Notion,

17:50

all of the above. Go and check it

17:53

out. Head over to getunblock.com. That's

17:55

getunblock.com. Thanks

17:58

so much for listening and until next time. Enjoy. our heads.

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features