RegisterEnterprise AI Summit — Oct 7–8 · Charlotte, NC
Video Library

Log in to watch

Log in or create a free account to watch this video.

Log in
London 2019
Share
Download slides

True North and Technical Debt

NC
Head of Technology, Findmypast

A True North is an impossible vision of perfect operations. It is a set of guiding principles that deliver direction and clarity in decision making. Direction and clarity are essential to solving your biggest problems. A True North aligns everyone towards your perfect vision of operations.


Neil Crawford is head of technology at Findmypast after serving as software architect and technical lead. He made his start in games programming but found his passion for web development working on Lives of the First World War. He blogs on the Findmypast tech blog and is an active member of the local JavaScript meetup in Dundee, Scotland.

Chapters

Full transcript

The complete talk, organized by section.

Neil Crawford

00:02

Welcome everyone, and thanks for coming.

00:04

It's the last day of our conference, so yeah, thanks for not taking the last half day as a holiday.

00:10

Okay, so I'm here to talk to you about true north and technical debt.

00:10

I work at a business called Findmypast, and we run a bunch of websites that help people trace their family history.

00:24

This isn't really a talk about what we do, but how we do it, and it's a talk about problems.

00:32

So I want you to cast your mind back to when maybe you were a developer in ops, or maybe you still are, and that's great.

00:41

So I want you to imagine coming to work on a Monday morning, and you're feeling pretty good about it.

00:45

It's going to be a good Monday.

00:50

And you have your standup with your team.

00:52

You pick up an easy one-pointer, or what you think is an easy one-pointer, and you get started.

01:04

So you start having a little look at the code, and actually, it's a lot more difficult than you thought.

01:04

It's only changing your URL, but the business logic underlying it is really complicated.

01:09

It takes you all morning to do it, and you think to yourself, "This should've been easier," but it's normal that it's not.

01:18

You commit locally, and then you type in these keystrokes.

01:25

You type G-I-T space P-U-L-L, and this sense of dread comes over you.

01:34

You hit Enter, and your worst fears are realized: 47 merge errors.

01:46

So you just stop, and you go for lunch.

01:46

You're not doing this now.

01:46

You come back after lunch refreshed and make a nice steaming hot mug of coffee to sit with your steaming pile of merge errors.

02:04

You get your shovel, and you start digging.

02:08

So, the merge errors take most of the afternoon to deal with, and you think to yourself, "This should be easier," but this is normal.

02:23

You eventually get to the end of the day.

02:23

You commit the code.

02:23

It's 5:00.

02:23

You think, "I'm not going to push this now.

02:23

It's too risky." So you come in the next day, you push your code, and everything's going okay.

02:34

And it's going to acceptance, and then the test fail.

02:35

And you read the test, and you're like, "Why has this test failed?

02:45

I'll just run it again." Run it again, another test fails.

02:47

Not that last one, but a different one.

02:52

Maybe run it again, and it's a different test.

02:52

And you're like, "Ah, third time lucky.

02:53

Fourth time lucky.

02:57

I got through." So yeah.

03:00

But this is normal.

03:03

And then finally, you get your work out to production.

03:05

You've spent a day and a half of what you thought was going to take 10 minutes.

03:06

A fleeting thought comes over you, "This should've been easier," but this is normal.

03:17

And that's where we were, and it got me thinking about why don't we get faster?

03:17

Why do we get slower?

03:27

I've been in many tech teams where the delivery rate looks like this over time.

03:31

As you add complexity and the systems get harder to work with, delivery gets harder.

03:31

And four years ago at Findmypast, I started looking at these kind of problems.

03:44

So the first one was we don't fix our problems.

03:52

I'll give you a couple of examples from my history.

03:55

When I started out as a games QA, we would come in at 9:00 every morning, and it would take one hour to burn the disks for yesterday's build.

04:09

I don't think we ever saw it as a problem of wasting 10 hours every morning.

04:16

And then I worked in another company where it was the norm to spend two days a week merging code.

04:23

This was normal, and we didn't see it as a problem.

04:23

And we never fixed those problems, and those businesses don't exist now.

04:23

And I've seen this pattern as well, where delivery rate gets worse, and then you work hard to kind of stop, and then you fix a bunch of stuff, but then it gets worse again.

04:39

And it's this constant goal conflict of right here, right now, the product that you want to deliver this week versus your long-term goals of working on the system of work.

04:56

And we're addicted to complexity.

04:58

This is something else that I've seen is that we like it when we develop a complex solution.

04:58

It makes us feel clever.

05:07

And I recently read this book by a guy called Dan Ward.

05:11

It's called "The Simplicity Cycle", and he says whenever you build anything, you should look at the goodness of what you're building and also the complexity.

05:19

In order to add goodness, you need to add complexity.

05:25

But there is an inflection point where adding more complexity makes it less good.

05:32

I bet you can all think of a product that was simple and is now complex, and you think it's now worse.

05:41

Microsoft Word.

05:51

And what you need to do is simplify.

05:51

And we do what's best for us.

05:55

So this is about making a decision within a set of bounds, a rational decision.

06:03

I recently had to sit down and figure out how many content management systems we have at Findmypast.

06:03

I started putting the feelers out.

06:03

I found one, then two, and then three and four, and five and six, and seven and eight.

06:11

And do you want to know the worst thing was?

06:11

I added two of them.

06:16

And this is not better for the whole, but it was better for the right now.

06:27

We all made those decisions in a rational way.

06:27

We had a delivery that we had to hit.

06:27

We had people that needed this functionality, so we just added and added and added.

06:33

And this is what we did.

06:33

We made it worse by making it more complex.

06:39

And we're obsessed with workarounds.

06:47

So I mentioned earlier in that little story about the tests, about rerunning them.

06:47

That is a workaround.

06:54

And you become normalized to that deviance, and it just becomes normal, and you don't even see them as workarounds anymore.

06:58

And we disagree about everything.

07:10

Four years ago, I remember having this really spirited discussion with somebody about whether or not it was worthwhile automating copying code onto servers.

07:21

They felt that it only takes five minutes.

07:21

I can just drag and drop the files.

07:21

It's fine.

07:21

I've been doing this for years.

07:28

But that isn't a good use of human ingenuity.

07:32

It's just toil.

07:32

It's just a waste of time.

07:32

It's not worth our while.

07:39

We should automate that kind of stuff.

07:41

But why were we even disagreeing about it in the first place?

07:46

And all of these things lead to a feeling of powerlessness.

07:50

When you face all these problems every day, when this weight of the system, you just don't feel that you can get stuff done.

07:59

If you're leaving at the end of each day not feeling like you've delivered anything worthwhile, like you have a purpose for being there, we need to do something about that.

08:18

And we were utterly, utterly lost, I feel.

08:26

So what did we do?

08:29

Finding our true north.

08:33

And what is a true north?

08:33

So a true north, I mentioned, is about the how.

08:33

So not the why of your business, not why you exist, not the purpose, and not what you're building, but the how.

08:43

How are you going to go about and do this work?

08:43

And this is a concept that came from Toyota.

08:43

And what it is, is it's this long-range target of how, how you're going to do something.

08:56

So I'm going to show you what Toyota's true north is.

09:01

Zero defects, 100% value added, one piece flow, and security for people.

09:07

You'll notice there's nothing about cars here or sewing machines.

09:11

This is about how they're going to do the work.

09:15

And you'll also notice that these are all impossible to attain.

09:20

We live in a non-deterministic world.

09:22

There are going to be accidents, but that doesn't mean that we shouldn't aim for complete security for people.

09:30

And that's what this is about.

09:30

It's about giving us direction.

09:36

So we have the CALMS model from DevOps, and this is the culture, automation, lean, measurement, and sharing.

09:44

So this is from John Willis and Damon Edwards.

09:44

And then Jez Humble added the lean.

09:44

This is from Lean teachings.

09:49

And I first read about this in Toyota Kata.

09:55

I would recommend that everyone read that book.

09:55

I think it's fantastic.

09:55

And there's a follow-up manual about how to build a coaching culture of problem-solving.

10:01

And that's where I found out about this.

10:09

And I said, "We need one of these at Findmypast." So our true north is our long-range unachievable target of how we build brilliant software.

10:22

And this was going to help with some of these problems that I mentioned before.

10:27

So we started off with a tech and product summit with nine options and nine pitches.

10:35

So I surveyed a bunch of different engineers and product people from the business and kind of got together nine options.

10:46

I presented to them what I thought a true north was and why it was important.

10:46

And then they self-selected to one of these options and then pitched their principle back to the team, and then we were going to vote on it.

10:59

So we got all of tech and product together, about 60 people, and we ran this as kind of a two-day internal conference.

11:02

And then the output of that was going to be our true north.

11:13

So these were the options.

11:13

Automate everything, continuous and instant deployment, a frictionless experience for all.

11:23

Zero defects, 100% uptime, monitor, alert, and visualize everything.

11:29

100% business value, something else entirely, or always improving, always experimenting.

11:35

And this is what our true north turned out to be.

11:35

This is what everyone voted for, was monitor, alert, and visualize everything, a frictionless experience for all, and always improving, always experiment.

11:48

Here's where we made our first big mistake.

11:48

We didn't support the change.

11:48

We got everyone really excited about this, but then we didn't look about how we were going to build that into our day-to-day work and into our processes.

11:55

We didn't think about that at all.

12:02

We created this kind of wave of enthusiasm but then lost all momentum because we didn't support the change.

12:10

And we needed time.

12:10

We'd created even more goal conflict between these principles, these long-term principles that you want to work towards, and the short-term of delivery.

12:27

So this is about convincing the business to give us some time.

12:32

And when I have to go and pitch for something like this, which is a big change to process of how we work, I form this kind of mental model or a theory of mind about how I expect them to think.

12:47

And for some reason, this is how I think execs think.

12:53

But no, they're always asking about the value of things.

12:58

So I set about creating an argument to see whether they would agree with me on certain principles.

12:58

So I'm including here two premises that I posed to them.

13:05

So the first is that this is a day, and that a day is filled with four types of work.

13:10

So the first one is innovation.

13:10

This is what drives the value for the business.

13:19

The second one is firefighting.

13:19

This is where we disrupt people's work.

13:19

For us, this is mainly incidents, but it could be something like, somebody comes and taps me on the shoulder and says, "Somebody's pulled out of an interview.

13:38

Would you come and do it?" And I have to drop everything and go and do that.

13:40

That would be classed as firefighting as well.

13:40

And these four types of work are similar to what you read about in "The Phoenix Project." We've got toil.

13:51

Toil is the tax you pay to deliver some innovation.

13:56

So in that story I told you earlier, there was maybe 10 minutes of innovation and then a day and a half of toil.

14:00

And the final one is improvement.

14:08

So where is the waste in this system?

14:10

It is toil and firefighting.

14:15

But how much of each type do you think that you spend?

14:20

So this is what we might like to be true.

14:24

With something like 75% innovation.

14:28

I don't know how many of you feel like you get to spend this much time on innovation.

14:33

Yeah.

14:33

I thought so.

14:33

So here's the reality.

14:36

It's maybe a lot more toil.

14:42

And then I pose the question: how do we make more space for innovation?

14:43

The only answer is we have to reduce the time we're spending firefighting and on toil.

14:53

And how do we do that?

14:53

We improve the system.

14:57

So it's about improvement time focused on those two things.

14:57

So constant and deliberate improvement to reduce toil and firefighting to make room for more innovation.

15:01

And then you stop and you say, "Can you agree with this premise?

15:11

Do you believe this to be true?" They agreed with me, so we can move on.

15:18

And the second thing is about intuition.

15:21

I'd like to do a quick survey.

15:21

Who in the audience has a mortgage?

15:25

Okay, great.

15:25

Okay.

15:28

Who in the audience knows how long they've got left on the mortgage?

15:28

Okay, great.

15:35

If you were to overpay that mortgage at £250 a month, do you know how long you'd have left on your mortgage?

15:41

This guy.

15:41

So, one.

15:41

So this is about intuition about compound interest or exponentials.

15:48

We're really bad at it.

15:51

So with no improvement, I want you to imagine a team delivering an abstract of 10 value per week.

15:58

This is about as mathsy as it gets.

16:02

So this is linear, this is intuitive.

16:05

At the end of the third week, you've got 30 value.

16:05

At 1% improvement, I'm trading two value for 1% week-on-week improvement, or 20% of time.

16:17

Okay?

16:17

So this is how much value you have after the third week.

16:22

It's not so intuitive.

16:22

Okay?

16:22

That's compound interest.

16:28

But what is it on a yearly basis?

16:28

So that's the short term.

16:28

This is the long term.

16:28

This is easy.

16:28

520, 1040, 1560, 2080.

16:28

This is linear, again, intuitive, nice and easy.

16:42

Can any of you do the 1% week on week in your head?

16:46

Yeah .

16:47

So 542, 1497, 2978, 5537.

16:51

But what are the actual compound gains here?

16:56

4% in the first year, 44%, 91%, and 166%.

17:01

But what is 1%?

17:07

That was something that I was asking myself.

17:10

On a really good day, an engineer might get five hours of solid work done.

17:10

Five hours is 300 minutes.

17:15

1% is three minutes.

17:21

Over a week, that's 15 minutes.

17:21

Do you think you could spend one day and find 15 minutes of toil to get rid of?

17:29

If you did that every week, continuously, at the end of four years, you'd be 166% better off.

17:37

Do you not then have to do that once you know that, if you agree with the premises that I'm putting forward?

17:49

So I got the green light and we went ahead, and this is about how we then prove the point.

17:49

So measure it.

17:52

We did a little experiment with one team in one quarter, and we put up a sheet like this, and every morning at stand-up, they said how they'd spent their time yesterday.

18:06

So they got a couple of check marks, and we ended up with something like this.

18:09

This turned into a graph over time.

18:11

And can prove the point that with improvement, we could switch the balance from toil to innovation.

18:24

You'll notice that in the first few weeks, they didn't feel like they were spending time on improvement, and that's because they were maybe only doing about 5 or 10%, so they weren't putting the check marks up.

18:36

So we proved the point, and then we got the go-ahead to roll it out across all of engineering, and this was to spend 20% of their time on improvement.

18:51

So what we did was we got the teams on board, and we reiterated the types of work, the mental models that they were going to use, the true north principles about how work was going to be done.

19:05

We started measuring.

19:05

So the teams all started measuring, and then they got their graphs as well and started to plan improvements from what they were identifying for the causes of toil and firefighting.

19:20

But we did create some time conflict here, so this didn't work for all the teams.

19:20

Some teams did it on a backlog basis, where they put 20% in their backlog.

19:30

But it tended to be that they always got deprioritized again, and then the short-term delivery goals was what people went after.

19:38

So we ended up with a true north day.

19:38

We went to a bimodal way of working.

19:43

Quite a few teams do it on a Monday or a Friday.

19:45

They do their true north day, and they have their specific toil and firefighting things that they're going after with that time, and we found that to be more successful than the other way.

19:52

And now I want to talk to you about taking it a little further.

20:00

So this is about experiments that we're running right now.

20:00

So the first thing I want to ask you in regard to this is, how good is your working memory?

20:11

If I was to ask you exactly what I said on slide three, could you tell me?

20:16

Right.

20:16

Working memory is only two minutes long, so you can't remember the exact thing that I said, but you'll maybe remember the feeling.

20:20

You'll maybe remember the idea, but you won't remember exactly what happened.

20:27

And this is about the perishability of information after the fact.

20:31

That's why you're supposed to do postmortems as soon as possible after the incident is because the information will perish.

20:39

We will forget what happened.

20:44

So the first thing is about surfacing problems.

20:50

This is how we surface problems now.

20:50

We have three colors of card on every engineer's desk.

20:50

We have yellow ones or orange, and pink ones, and blue ones.

21:01

The yellow ones are for toil, pink ones are for firefighting, and the blue ones are for something a little different.

21:09

They're for process problems or autonomy problems, like I need to go and ask permission because I don't feel confident to make this decision.

21:14

And what we end up with are these, these shared problem walls.

21:23

So in Dundee, we're based over three floors.

21:27

At the door you enter the floor, it's this tower building.

21:27

It's this glass panel.

21:31

We put up the problems on the wall, so you have to walk past them as you're going in and out of the door.

21:35

And this has some interesting side effects that people read about them because they're up there, they're in their face, it's visible.

21:37

People start having conversations about these problems as well.

21:50

So we have all these shared problem walls about the people are raising issues that they're having with work.

21:57

Okay?

21:57

And then what we do is we swarm them.

22:02

So every Friday at 12 o'clock, we get the entire engineering team, that's 35 engineers in Dundee, and we bring them all up to floor nine, and then we talk about the problems on the wall.

22:12

Some of them get solved right there and then.

22:12

Somebody just knows the answer.

22:12

Some of them are harder to deal with.

22:16

They're big cross-team efforts.

22:20

And what we do with those is we see people are really interested in solving them, but what we do is we start a swarm in Slack, and we invite everyone in, and then we let people use their true north day next week to tackle that particular problem.

22:32

And you see some really interesting cross-pollination across the teams, and that's worked really well for us so far.

22:44

We're about five weeks into that, and we've already solved some really big cross-team problems.

22:44

We had 104 toggles in our UI code base.

22:44

That's now down to 50.

22:55

The complexity there was rising, and the engineers identified that and dealt with it themselves.

23:04

But that was a proper cross-team collaborative effort.

23:08

So it seems to be working.

23:11

And then you have the various people involved.

23:12

So, the last bit that we've been doing is coaching and learning.

23:12

So our teams all run a weekly or a fortnightly retrospective.

23:28

One of the questions that we've started asking in that retrospective is, look at all of the work that you've done in the past week or two weeks.

23:38

What would need to change, hypothetically, to deliver that work in half the time?

23:45

Everything's on the table.

23:47

And that leads to some really interesting ideas about what changes we could make in our system, and lots more of these cards go up on the wall.

23:55

It tends to be there's more process or autonomy things come out of those.

24:02

And then finally, we have monthly coaching with the team leads about embedding these practices within the wider team.

24:15

So we have the weekly cycle with the team and then the cross-team cycle on a monthly basis.

24:15

And it's about deliberately practicing problem-solving and making it part of everything that you do.

24:30

So what have we learned?

24:30

We've learned that I can't remember what I said two minutes ago.

24:39

We've learned that we're all really bad at maths when it comes to compound interest, and that we all have a lot of problems to solve.

24:47

And I want to leave you with one final question.

24:51

What game are you playing?

24:51

Are you playing a game that ends in three months?

24:51

Are you trying to win a three-month game?

25:01

Or do you think your business is going to be here in four years' time?

25:01

Or is it going to be here in 100 years' time?

25:01

In terms of Findmypast, people are always going to want to know about their history.

25:11

We are playing in an infinite game, not a three-month game.

25:17

So you have to adjust what rules you are playing to.

25:22

And that's where I think a true north and deliberate problem-solving can really help.

25:28

Thank you very much.

Q&A

25:42

I think we've got time, four minutes for questions if anyone has any.

25:49

Yeah.

25:49

Actually, so how did you go about measuring the amount of the work percentages that you presented?

25:59

How did we go about measuring it?

26:00

Yeah.

26:01

So with the check marks, at the end of every week, we put in the percentage of work that people were spending, and then we tracked it.

26:10

And we saw that generally, the teams over time could identify where they were spending time on toil, tackle that, and once they tackle that, they were able to deliver more value or spend more time, at least qualitatively, on innovation.

26:28

For example, developers would self-identify, "On this story, I spent like X amount of time doing toil, and next month, we prioritize it and spend more time on it." Yeah.

26:37

But if I'm being honest, that didn't actually work that well.

26:42

It worked to prove a point, but the problem walls work a lot better because you've got the cards there, and as you experience the problem, you just write it down, and then you put it up.

26:46

And the whole thing about swarming it and getting people talking about it is much more useful than measuring it.

26:57

We could measure it from the number of cards on the wall probably, but we've not been bothering at this point.

26:57

We've just been attacking what we deem as the highest priority problems.

27:06

So does that answer your question?

27:06

Okay, great.

27:06

Okay, I think we're done.

27:12

Thanks, everyone.

27:15

Thank you.