Artwork for podcast Loving Legacy
Avoiding Legacy? DDD, Collaborative Architecture and Product Thinking with Nico Krijnen
Episode 3130th April 2023 • Loving Legacy • Richard Bown
00:00:00 00:33:00

Share Episode

Shownotes

Do you hate legacy or do you love it? Do you accept it or do you want to stamp it out? This time I talk to Nico Krijnen (Lumunis) about the opportunities we have in our legacy codebases to understand our business better, the strategic use of new technologies to make important product improvements, the importance of collaboration and visualisation to create a shared vision of software architecture and our product no matter what state the codebase or architecture.

We discuss the meaning of legacy, what it is and when it appears, how to fix it, how to avoid it and how to prosper as a business while replacing it. We also talk about what you can do in your pipelines to avoid legacy automatically, the importance of visualisation, context mapping in DDD and C4 diagrams.

In a fascinating and wide-ranging discussion, we talk about what it takes to make great software in the age of microservices.

NOTES

The DDD NL meetup:

https://www.meetup.com/domain-driven-design-nederland/

Nico's workshops at DDD Europe:

Full-day workshop on June 6:

https://dddeurope.academy/applied-eventstorming/

2h hands-on at the main conference:

https://2023.dddeurope.com/program/playing-with-domain-models-in-code/

Automating architecture validation for Java and .NET:

https://www.archunit.org/

https://archunitnet.readthedocs.io/en/latest/

With an example of using it for a layered or onion architecture from one of Nico's workshops:

https://github.com/nkrijnen/workshop-apeldoorn-jug-2022-11/blob/main/part-01/src/test/kotlin/eu/luminis/workshop/smallsteps/ArchitectureTest.kt

Nico's speaker profile & linkedin:

https://sessionize.com/nico-krijnen/

https://www.linkedin.com/in/nicokrijnen/

And an overview of some of the courses Nico gives through Luminis:

https://www.luminis.eu/expert/nico-krijnen/

QUOTES

[01:41] "it seems that in our industry, only seniors and architects, et cetera, are getting in touch with domain-driven design at some point and I think that's a waste" [NK]

[02:10] "so one of the things I really wanted to do is trying to lower that learning curve [for DDD]" [NK]

[04:03] "you need to have ways to create sort of a shared mental model of the stuff you're working on" [NK]

[05:02] "We had a chat the other night about, how we feel about Legacy. I said, I love it and you said, I hate it. How does the legacy fit into to your daily work?" [RB]

[06:20] "legacy can have a lot of bit different meanings, but typically it means something that's not, at least how I see it, is it's a code base or a product that's not easy to work with anymore." [NK]

[06:38] " I like to go fast. I like to, to build stuff and, and be excited about those things and not feel dragged down by, a big stone that you're dragging along." [NK]

[06:47] "that's why I hate it [..] but to be honest, all our industry is full of it" [NK]

[07:03] "a lot of teams do not have the discipline to then go fast, but also go quality" [NK]

[07:45] "So typically when you meet a legacy system, first of all, what, what are the smells of its legacy? And secondly, what would you start to think about doing to improve that situation?" [RB]

[08:59] "we got someone in and they started working fully automated regression test, so deploys to production could be done, [in] half an hour. So that's different from a week, right? " [NK]

[11:16] "Cause it's a system that's making money, right? This legacy system is the place where, where you, where your business runs on." [NK]

[11:55] "So, I still hate working with legacy, right?I refuse to accept it. I think that's more than mindset, right? So I refuse to accept it as legacy." [NK]

[12:50] "You can transform that into a modulith like, which is, uh, what you call it nowadays." [NK]

[14:09] "So that's also why I think why I'm talking at conferences and spreading this knowledge because I think it's important to help the industry to realize this and also to find ways to get [legacy] under control" [NK]

[14:23] "We're building more and more software and, if we're not doing it the right way, we're just building, a lot more legacy. And I don't want to be there!" [NK]

[15:06] "I think the ease with which organizations now adopt Kubernetes and under underestimate the complexity, [is] quite scary, to be honest." [NK]

[16:46] "I think in a lot of cases people underestimate the value of just sticking with the stuff that you know and can handle" [NK]

[17:34] "Because I think a big portion of legacy is that people don't understand how the system works or what it's supposed to do, or at least do, or pieces of it." [NK]

[17:49] "I think that's where domain driven design, again, has a good role to play, is that it helps you to understand a domain. It helps you to understand the problem space." [NK]

[18:24] "it's good to use some experimental technology to do something that nobody else has ever done because it's gonna put you in a space where nobody is and where you can solve problems that nobody else can solve." [NK]

[19:56] "I would try to take the Frankenstein out of it, not accept that it's a lost cause." [NK]

[21:00] "[Legacy] is usually the point where people don't understand how a system works anymore" [NK]

[22:25] "In the workshop you encounter something that's called an Arc Unit, which allows you in your pipeline check or you compile time or test time, check that the architecture that you have in mind is not violated" [NK]

[24:08] " I think is always super important to have at least one visual in your, in your project" [NK]

[24:53] "try to write the minimal amount that you can, right, that you need, but that you are sure that you can keep up to date over time" [NK]

[27:43] "the real value of that kind of high level diagram is not so much having an up-to date version of it. Is it It is drawing it together with the people working on it." [NK]

[29:11] "giving context , about a system, what I think is really useful to draw a context map like from DDD, which essentially is like the high level context overview of, a system, but then more focused on the communication patterns between systems and especially also between teams" [NK]

[30:24] "a high level C4 diagram and a context map" [NK]

[31:05] "The temptation is always for everybody to prove their worth on any project" [RB]

[31:50] "we don't want to get the impression [of domain driven design] that it means you start to do a lot of design upfront." [NK]

Transcripts

Richard Bown:

Hello and welcome to Loving Legacy.

Richard Bown:

I'm your host, Richard Bown, and this time I'm joined by Nico Krijnen.

Richard Bown:

Is that right?

Richard Bown:

I said it right.

Nico Krijnen:

Yeah, that's totally right.

Richard Bown:

Thank you.

Richard Bown:

Um, good to meet you.

Richard Bown:

Good, good to meet you again.

Richard Bown:

Maybe you could introduce yourself to everybody and, um,

Richard Bown:

then we can discuss our topic.

Nico Krijnen:

Yeah, that's fine.

Nico Krijnen:

Um, so I'm Nico and I've been working in the software industry for a while.

Nico Krijnen:

I've been doing a lot of product development, let's say development as

Nico Krijnen:

part of a product for quite some years.

Nico Krijnen:

Had a nice experience of going from absolutely, uh, nothing to

Nico Krijnen:

a good working product with a lot of, , people using it worldwide.

Nico Krijnen:

That was really cool.

Nico Krijnen:

Journey.

Nico Krijnen:

Also being in somewhat bigger companies in, uh, what they

Nico Krijnen:

call the servant leadership role.

Nico Krijnen:

But I really also have a deep technical understanding.

Richard Bown:

Your background, is development though, would you say?

Richard Bown:

on the,

Nico Krijnen:

uh, developer.

Nico Krijnen:

. So my view is always very broad cuz I want a complete successful

Nico Krijnen:

software solution on the whole.

Nico Krijnen:

So, um, I need to know a lot, a lot of stuff on a lot of different topics.

Nico Krijnen:

Uh, but the field's just too huge.

Nico Krijnen:

You can't know everything.

Nico Krijnen:

So, uh, but still I'm surprised sometimes how much I know on specific stuff anyway.

Richard Bown:

Okay.

Richard Bown:

And you work for company called Luminis, is that right?

Nico Krijnen:

Yeah.

Nico Krijnen:

It's, uh, consultancy in, uh, Holland called Luminis.

Nico Krijnen:

And then Luminus as a whole is a bit bigger, so you also have a lot

Nico Krijnen:

of other colleagues who are pretty much all of them very smart people.

Nico Krijnen:

So, uh, there's a lot of people around you that you can, uh, lean

Nico Krijnen:

on and I think that's really nice.

Nico Krijnen:

Uh, combination.

Richard Bown:

and we met first, uh, end of last year, I

Richard Bown:

think November, December time.

Richard Bown:

There was a domain-driven design, uh, workshop.

Richard Bown:

So you, you organized the meetups as well, you, for DDD nl.

Nico Krijnen:

Yeah.

Nico Krijnen:

I knew about the meter for a while and I was always interested in DDD, because

Nico Krijnen:

I think there's a lot of value in it.

Nico Krijnen:

, it's somehow it seems that in our industry, only seniors and

Nico Krijnen:

architects, et cetera, our level are, are getting in touch with, uh,

Nico Krijnen:

domain-driven design at some point.

Nico Krijnen:

And I think that's a waste because there's a lot of value in there that also, uh,

Nico Krijnen:

juniors, et cetera, could benefit from.

Nico Krijnen:

They just didn't encounter the problems yet that, uh, that you need DDD to solve.

Nico Krijnen:

That is useful for pretty much everything you do.

Nico Krijnen:

so one of the things I really wanted to do is trying to lower that learning curve.

Nico Krijnen:

. The workshops really to help people experience firsthand what kind of

Nico Krijnen:

things you can do to take small steps.

Nico Krijnen:

Making that big change and to force yourself into a mindset, into a way

Nico Krijnen:

of working that helps you do that.

Richard Bown:

No, I love, I loved it.

Richard Bown:

I really enjoyed the workshop.

Richard Bown:

I went along again this week and again, I really appreciated the effort that was put

Richard Bown:

in there because it was, as you said, and you, he mentioned something that you just.

Richard Bown:

Said as well, like about how a lot of the time, the terminology or

Richard Bown:

the, yeah, don't mention dDD I think is, was part of its closing words.

Richard Bown:

Yeah.

Richard Bown:

Because it does tend to put people off because there seems

Richard Bown:

to be this kind of idea that the learning curve is quite steep.

Richard Bown:

So we might come across it as a software engineer day to

Richard Bown:

day and overcome it somehow.

Richard Bown:

But when you see it written down, you go, oh yeah, maybe that's a

Richard Bown:

big problem that I'll come into.

Richard Bown:

Where can I fit this, fit this into my way of working?

Nico Krijnen:

Yeah.

Nico Krijnen:

Whereas probably you already, you've already experienced this a bunch of time.

Nico Krijnen:

But yeah, if you don't know all the terminology, then you don't recognize it.

Nico Krijnen:

And then some of the ways stuff is described stays very abstract.

Nico Krijnen:

So then I make it very concrete by just letting people experience it in code.

Richard Bown:

So yeah, you mentioned visualization there as well.

Richard Bown:

We, through event storming and we talked about the other night

Richard Bown:

things about example mapping.

Richard Bown:

Um, and we did some domain modeling or pieces, pieces of these,

Richard Bown:

um, These are aren't activities that you do by yourselves.

Richard Bown:

They're really all about collaboration, aren't they?

Nico Krijnen:

Yeah.

Nico Krijnen:

Because, uh, in the end, software is getting more and

Nico Krijnen:

more complex these days, right.

Nico Krijnen:

And the time.

Nico Krijnen:

That, and I'm sure you, you were in that time as well, right?

Nico Krijnen:

Where we could just write pieces of software all by,

Nico Krijnen:

yourself, and it would be fine.

Nico Krijnen:

That time is long gone.

Nico Krijnen:

Right now we're building, uh, distributed systems with, uh, multiple people, with

Nico Krijnen:

multiple teams working on pieces where the cognitive load of all the technology that

Nico Krijnen:

we talked earlier, earlier about, right?

Nico Krijnen:

It's too much for one person or even one team to handle.

Nico Krijnen:

Uh, so you need a lot of collaboration to get stuff done, and it also

Nico Krijnen:

means that you need to have ways to create sort of a shared mental

Nico Krijnen:

model of the stuff you're working on.

Nico Krijnen:

Um, not just on technology, uh, but also with like domain experts, people who know

Nico Krijnen:

how uh, the problem that you're solving could be solved or what the problems

Nico Krijnen:

are that you may wanna, uh, solve or how something works in that domain.

Nico Krijnen:

Getting all the knowledge together, is a big challenge, because in the end,

Nico Krijnen:

right, a lot of engineers talk a different language than people who work in a certain

Nico Krijnen:

domain . So, DDD provides a lot of good ways to write the concept of a ubiquitous

Nico Krijnen:

language, of bringing that together.

Nico Krijnen:

And, uh, event storming is one of the, I think, very approachable ways to do that.

Nico Krijnen:

But there's many, many more collaborative ways of doing that.

Nico Krijnen:

I think it's really good to, uh, to put more and more focus on that and

Nico Krijnen:

just create more and more tools to allow us to do that, uh, in a good way.

Richard Bown:

No, absolutely.

Richard Bown:

Um, okay, so this podcast is about Legacy and about Loving Legacy, and

Richard Bown:

we had a chat the other night about.

Nico Krijnen:

Yeah.

Richard Bown:

we feel about Legacy.

Richard Bown:

Because you asked me, you said to me, so yeah, what's the name of it?

Richard Bown:

Oh, legacy and I, I said, cause I love it.

Richard Bown:

And you said, oh, I hate it.

Richard Bown:

That was your response.

Richard Bown:

So yeah.

Richard Bown:

So how do you see that?

Richard Bown:

So what's the, yeah.

Richard Bown:

How does the legacy fit into to your daily work?

Nico Krijnen:

I mean, the best times I've had writing software was always

Nico Krijnen:

when you're just write, when you're thinking of new stuff, when you're

Nico Krijnen:

writing new stuff, , somehow that feels the most productive and especially when

Nico Krijnen:

doing it with, A team of people, right?

Nico Krijnen:

With different skill sets.

Nico Krijnen:

So you combine these skill sets and you create, you get this sort of

Nico Krijnen:

magic where you can create stuff that you could never do yourself.

Nico Krijnen:

So I think that's, that's, uh, really nice to be in such a situation.

Nico Krijnen:

And when you get into a situation where there's a system with a lot of

Nico Krijnen:

history and started it somewhere, and then, obviously still, uh,

Nico Krijnen:

being involved in it, uh, later on.

Nico Krijnen:

Um, but a lot of people joined that project throughout the

Nico Krijnen:

time, and obviously it's not.

Nico Krijnen:

At the start, it's your baby, sort of, right?

Nico Krijnen:

And uh, and you have total control over everything.

Nico Krijnen:

And you can put your vision, your ideas in there, and then a bunch of , years later,

Nico Krijnen:

your vision changes, your ideas change.

Nico Krijnen:

So you have to bring that along.

Nico Krijnen:

You have to be very disciplined and very structured to make sure that it

Nico Krijnen:

stays in a, sort of, in a good shape, but at some point, , if you don't

Nico Krijnen:

do that, it becomes legacy, right?

Nico Krijnen:

And, uh, legacy can have a lot of bit different meanings, but typically it means

Nico Krijnen:

something that's not, at least how I see it, is it's a code base or a product

Nico Krijnen:

that's not easy to work with anymore.

Nico Krijnen:

You don't like being in it, you don't, uh, feel like it's, uh, you are getting

Nico Krijnen:

stuff done at, at the pace that you would like to get stuff done, right?

Nico Krijnen:

I like to go fast.

Nico Krijnen:

I like to, to build stuff and, and be excited about those things and

Nico Krijnen:

not feel dragged down by, a big stone that you're dragging along.

Nico Krijnen:

So, , that's why I hate it, right?

Nico Krijnen:

, And that's really why I don't want to be in the situation.

Nico Krijnen:

But to be honest, all our industry is full of it, right?

Nico Krijnen:

Because there's so many places where we are trying to go faster and faster

Nico Krijnen:

and agile and faster, faster, and I think the big problem is that a lot of

Nico Krijnen:

teams do not have the discipline to then go fast, but also go quality, right?

Nico Krijnen:

And you have to have.

Nico Krijnen:

Both of those because the moment you let slip of quality and that control and

Nico Krijnen:

architecture and all those kind of things, , you end up in legacy very quickly.

Nico Krijnen:

So even if your, your idea is, ah, let's just rewrite because this, this stone

Nico Krijnen:

is so heavy, we can't lift it anymore.

Nico Krijnen:

Let's just, uh, start from scratch.

Nico Krijnen:

It sounds very appealing, but in a lot of cases, If you don't do

Nico Krijnen:

something about your mindset and the way you're doing that, you're just

Nico Krijnen:

gonna end up with another stone and you're dragging around two stones.

Richard Bown:

Okay, so a couple of things there.

Richard Bown:

First of all, you said the quality is, is important.

Richard Bown:

So I was gonna ask about your approach.

Richard Bown:

So typically when you meet a legacy system, first of all, what, what

Richard Bown:

are the smells of its legacy?

Richard Bown:

And secondly, what would you start to think about doing

Richard Bown:

to improve that situation?

Nico Krijnen:

Yeah, it depends very much on the situation, but, let's say last

Nico Krijnen:

year I was in a a place where, uh, a clear smell that I've picked up, right?

Nico Krijnen:

Because I just jump in the project and I, I look around and to be

Nico Krijnen:

honest, I wasn't there to fix the legacy but I smell things right.

Nico Krijnen:

And then, uh, one of the things I smell, it's okay.

Nico Krijnen:

This, this team is using a branching strategy that's way too complicated

Nico Krijnen:

for what they're trying to do.

Nico Krijnen:

There were two developers and they were having working on

Nico Krijnen:

three releases at the same time.

Nico Krijnen:

That's just, totally crazy.

Nico Krijnen:

Uh, and it was a, there was also a lot of meetings and stuff around it, right.

Nico Krijnen:

To organize what goes into which release and then never to re branch and re

Nico Krijnen:

well, lots of, lots of wasted work.

Nico Krijnen:

So then I go in and I say, okay guys, let's not do this.

Nico Krijnen:

Let's change the way we do that, do things.

Nico Krijnen:

Let's just move gradually Right.

Nico Krijnen:

Towards a more trunk based way of working.

Nico Krijnen:

Cuz it's just.

Nico Krijnen:

Two developers there, even if we're gonna add more later, let's try and get there.

Nico Krijnen:

But we need stuff to make that happen.

Nico Krijnen:

So one of the things they really needed is to get, there was sort of a

Nico Krijnen:

manual testing cycle that took a week.

Nico Krijnen:

Uh, so, uh, we got someone in and they started working on a, uh, test automation

Nico Krijnen:

suite, which took a half a year Right.

Nico Krijnen:

To get that in place.

Nico Krijnen:

But at that point they had a, uh, let's say fully automated regression

Nico Krijnen:

test, so deploys to production could be done, let's say after that ran,

Nico Krijnen:

which was, uh, Well, half an hour.

Nico Krijnen:

So that's different from a week, right?

Nico Krijnen:

So you, you, you change the ball game completely.

Nico Krijnen:

at that point you get to into a very different, flow of working and

Nico Krijnen:

things start to go fast again, right?

Nico Krijnen:

So it's the way you work.

Nico Krijnen:

So it's a branch strategy, but it was also, the way the pipelines were set up,

Nico Krijnen:

it was also the way the testing was done.

Nico Krijnen:

Cuz there was good unit testing, right?

Nico Krijnen:

But this.

Nico Krijnen:

It wasn't enough to give confidence that the thing is actually gonna work.

Nico Krijnen:

Cause they were having issues with stuff going or breaking every time.

Nico Krijnen:

. Also because of the complexity of the branch strategy, not knowing what

Nico Krijnen:

you're actually putting into production

Nico Krijnen:

so there's just one example, right?

Nico Krijnen:

But there's just so many, many others.

Nico Krijnen:

I mean, I remember that, um, in another early project we

Nico Krijnen:

had to replace Elasticsearch.

Nico Krijnen:

And we were, still using a very old version of that.

Nico Krijnen:

Uh, just, uh, didn't get, uh, get around to upgrading it because

Nico Krijnen:

somehow it wasn't important as all the features we're building, right?

Nico Krijnen:

Because we couldn't upgrade our spring libraries anymore because the spring

Nico Krijnen:

data library we use for less search couldn't be upgraded cause it couldn't

Nico Krijnen:

talk to the old version anymore.

Nico Krijnen:

So you sort of get this cascade of things that are holding you back.

Nico Krijnen:

We couldn't upgrade the Java version because of that.

Nico Krijnen:

There's just so many things stacking on top of each other.

Nico Krijnen:

So we just knew, okay, this, we have to tackle that thing, but

Nico Krijnen:

it was gonna be a big change.

Nico Krijnen:

Right.

Nico Krijnen:

It's not an easy upgrade.

Nico Krijnen:

But we just did it.

Nico Krijnen:

We all, again, took half a year to do that, but we kept the whole

Nico Krijnen:

system working all the time.

Nico Krijnen:

We had zero downtime deployments all throughout.

Nico Krijnen:

We did deployments twice a week pretty much.

Nico Krijnen:

, so we did that whole migration, but in such a way that we could essentially

Nico Krijnen:

get the whole new variant up and running and, and ready and test it, et cetera

Nico Krijnen:

before we do the actual migration of our production, uh, environment.

Nico Krijnen:

Uh, and it also meant that, because a big problem with these kind of

Nico Krijnen:

big changes is that while you're working on the big change, which

Nico Krijnen:

is gonna take half a year, right?

Nico Krijnen:

Somewhere halfway, there's gonna be a super high priority business thing that

Nico Krijnen:

comes by and it means you have to go back and work on the, the actual features.

Nico Krijnen:

Cause it's a system that's making money, right?

Nico Krijnen:

This legacy system is the place where, where you, where your business runs on.

Nico Krijnen:

So.

Nico Krijnen:

You have to, to do stuff on it.

Nico Krijnen:

Right?

Nico Krijnen:

Keep it relevant to your customers.

Nico Krijnen:

To be honest.

Nico Krijnen:

We did the migration within, uh, the complete migration we did in 10 minutes.

Nico Krijnen:

But we just prepared the whole thing in such a way that we could do that.

Nico Krijnen:

And that works.

Richard Bown:

Wow.

Richard Bown:

Okay.

Richard Bown:

Well, the, the two examples you gave a lot of your work is actually handling.

Richard Bown:

Legacy in some way, in some form.

Richard Bown:

Either improving it, um, or improving a process around it, or having to

Richard Bown:

build something which, which has got a legacy component already.

Richard Bown:

So not like that in that last example.

Nico Krijnen:

Yeah.

Nico Krijnen:

So, and I still hate, hate working with legacy, right?

Nico Krijnen:

But, refuse, uh, I refuse to accept it.

Nico Krijnen:

I think that's more than mindset, right?

Nico Krijnen:

So I, I refuse to accept it as legacy.

Nico Krijnen:

, if it's there and sometimes the decision is to, uh, to rewrite it, right?

Nico Krijnen:

If you can do that, , and.

Nico Krijnen:

The trade works well for you, then that's the way, uh and that's also

Nico Krijnen:

the way I do it in some cases, right?

Nico Krijnen:

But in a lot of cases, you just have to, uh, to make the legacy not legacy anymore.

Nico Krijnen:

Um, and that means bringing in discipline, bringing in ways of working,

Nico Krijnen:

that you do stuff in small steps.

Nico Krijnen:

And even on a, on a big people call it a monolith, right?

Nico Krijnen:

You can transform that into a modulith like, which is, uh,

Nico Krijnen:

what you call it nowadays.

Nico Krijnen:

in a lot of cases just creating a good modular system.

Nico Krijnen:

That is, even that is just one deployable unit or maybe two or three, right?

Nico Krijnen:

If you need some scalability in some places, um, is way faster

Nico Krijnen:

than all these other things.

Nico Krijnen:

And then creating all small microservices

Richard Bown:

something I was gonna say.

Richard Bown:

Yeah, I completely agree with you as well.

Richard Bown:

I think that's absolutely spot on.

Richard Bown:

You've gotta pick your horse for your course, essentially.

Richard Bown:

Um, however, there's a couple of things there.

Richard Bown:

Um, first of all, it is kind of inevitable these days that people

Richard Bown:

wanna build on the Kubernetes.

Richard Bown:

They wanna have stuff's CV based development essentially.

Richard Bown:

So a lot of the time where companies make a decision because it's gonna be,

Richard Bown:

it has to be the latest technology to attract people to that particular way.

Richard Bown:

Secondly, the around the way of working.

Richard Bown:

So you mentioned in order to create or get rid of legacy or control legacy, you

Richard Bown:

have to be very structured in the way you work, but also you need to be structured

Richard Bown:

in the way you work anyway, essentially.

Richard Bown:

So it's kind of, it's not creating, legacy is being structured

Richard Bown:

as well as fixing legacy.

Richard Bown:

So it's the same approaches essentially just from different balls

Richard Bown:

of mud or scales of ball of mud.

Nico Krijnen:

So I think if you work on something new, you, you

Nico Krijnen:

should also always, do it in that way, uh, as well, probably, right?

Nico Krijnen:

Because, uh, otherwise you're gonna end up with, with a legacy, which

Nico Krijnen:

you don't want to be, want it to be.

Nico Krijnen:

But still in our industry, I mean, how many places do you see that

Nico Krijnen:

do not have some legacy system?

Nico Krijnen:

I think as an industry we're, we're still definitely not in control here yet.

Nico Krijnen:

Um, and there's a lot of.

Nico Krijnen:

Knowledge right.

Nico Krijnen:

On how to do these things better, but somehow we are not managing to apply it.

Nico Krijnen:

So that's also why I think why I'm talking at conferences and spreading

Nico Krijnen:

this knowledge because I think it's important to help the industry to

Nico Krijnen:

realize this and also to find ways to get it under control, right?

Nico Krijnen:

And help people get it under control, , because, um, , we're

Nico Krijnen:

building more and more software.

Nico Krijnen:

And, if we're not doing it the right way, we're just building, a lot more legacy.

Nico Krijnen:

And I don't want to be there.

Nico Krijnen:

I don't want to work on more legacy, right?

Nico Krijnen:

At the same time, there's all these nice shiny little toys out there.

Nico Krijnen:

And we're still engineers.

Nico Krijnen:

We like playing with, with toys, at least I do.

Nico Krijnen:

Um, and, uh, the latest and greatest stuff is always better than the old stuff.

Nico Krijnen:

and in a lot of cases these new toys, uh, Are created to solve a problem, right?

Nico Krijnen:

Kubernetes is there to solve a certain problem as well.

Nico Krijnen:

Uh, I just don't think it's, it's there to solve every problem.

Nico Krijnen:

I mean I've, I've worked with it and there's definitely a lot of

Nico Krijnen:

value in, in the way stuff is there.

Nico Krijnen:

Um, it's also way too complicated for a lot of environments, I think.

Nico Krijnen:

Right?

Nico Krijnen:

I think the ease with which, organizations now adopt Kubernetes

Nico Krijnen:

and under underestimated complexity, I think that's quite scary, to be honest.

Nico Krijnen:

Um, especially if you see how cloud vendors are actually taking a lot

Nico Krijnen:

of complexity away from you and how you're trying to get it again.

Nico Krijnen:

Right.

Nico Krijnen:

Uh, on the other hand, you, you sort of are in control of, of a lot of.

Nico Krijnen:

Areas, at least it may feel like that.

Nico Krijnen:

Uh, so that's, um, I always like to be in that situation as well.

Nico Krijnen:

Right?

Nico Krijnen:

I mean, I remember that, um, when we built that, that product that I was

Nico Krijnen:

talking about long ago when we started on that, uh, one of the big things that

Nico Krijnen:

I really liked, Or the, the good choices I think we made is that we actually

Nico Krijnen:

took everything under our own control.

Nico Krijnen:

We didn't depend on third party vendors or anything to, uh, to help us.

Nico Krijnen:

We made sort of a buy versus build decision at early on, and the, the first

Nico Krijnen:

time we did, okay, we'll just buy part of it and built another piece, and later

Nico Krijnen:

on, yeah, that vendor was just, you know, the whole industry in that area wasn't

Nico Krijnen:

moving at the pace that we needed, so, We changed the decision and we said,

Nico Krijnen:

okay, we're just gonna build everything.

Nico Krijnen:

Uh, so we control everything and control the evolution that we need.

Nico Krijnen:

Um, and that really, uh, played out very well for us at that point.

Nico Krijnen:

Right.

Nico Krijnen:

But as a, it needs to be a conscious decision.

Nico Krijnen:

And I think in a lot of cases now, people are making decision based on

Nico Krijnen:

whatever is shiny or whatever vendors you're talking about or, or whatever

Nico Krijnen:

consultants are talking about.

Richard Bown:

Oh, I think it was always been like that, hasn't it?

Nico Krijnen:

Yeah, it is.

Nico Krijnen:

Right.

Nico Krijnen:

But, uh, that's not the, that's not the way it should be, right?

Nico Krijnen:

Uh, you, you should make, uh, trade offs based on what you really need.

Nico Krijnen:

But yeah, that's really hard always.

Nico Krijnen:

I think in a lot of cases People underestimate the value of

Nico Krijnen:

just sticking with the stuff that you know and can handle.

Nico Krijnen:

Uh, and that means less shiny, less toys, but stuff that you can move

Nico Krijnen:

fast with and that is, I think, usually quite underestimated.

Richard Bown:

I'm, I'm suddenly thinking.

Richard Bown:

This is, you are almost describing legacy, but it's kind of optimized,

Richard Bown:

so it's like a, you've gone through the process of improving your system.

Richard Bown:

Everyone understands how it all works.

Richard Bown:

Once you've got an optimized legacy system, essentially that's the

Richard Bown:

sweet spot in some ways because you could, everyone's familiar with it.

Richard Bown:

They know what the tools are like, they know how to extend it, and,

Richard Bown:

and it's also simple to deploy and it's easy to, to get releases out.

Nico Krijnen:

Yeah, but that's not how people experience legacy, right?

Nico Krijnen:

So I think if you take the word legacy out, but say a well organized, structured

Nico Krijnen:

system that people know and understand.

Nico Krijnen:

That's not legacy, right?

Nico Krijnen:

Because I think a big portion of legacy is that people don't understand how the

Nico Krijnen:

system works or what it's supposed to do, or at least do, or pieces of it.

Nico Krijnen:

There are, very good reasons for it.

Nico Krijnen:

Using new technology on certain stuff.

Nico Krijnen:

you really need to understand the, the field, and I think that's where

Nico Krijnen:

domain driven design, again, has a good role to play, is that it

Nico Krijnen:

helps you to understand a domain.

Nico Krijnen:

It helps you to understand the problem space.

Nico Krijnen:

And once you understand that, that really helps you to, um, to make better decisions

Nico Krijnen:

about the stuff that you're gonna do.

Nico Krijnen:

And maybe.

Nico Krijnen:

Right.

Nico Krijnen:

And I think also combining product thinking with domain-driven design

Nico Krijnen:

is really powerful space that's being explored by the community at the moment.

Nico Krijnen:

I think that is even more powerful because then you're also starting

Nico Krijnen:

to, uh, think a lot about, okay, what's important for our users?

Nico Krijnen:

Even makes the decision more targeted and then maybe there are cases which, cause

Nico Krijnen:

I experienced them, where it's good to use some experimental technology to do

Nico Krijnen:

something that nobody else has ever done because it's gonna put you in a space

Nico Krijnen:

where nobody is and where you can solve problems that nobody else can solve.

Nico Krijnen:

And obviously that's a, from a business point of view, a very good place to be.

Nico Krijnen:

So, If technology helps you there then maybe that's the the

Nico Krijnen:

thing you have to do, right?

Nico Krijnen:

But then you have to be conscious that it's gonna be a trade off, right?

Nico Krijnen:

It means you have learning curves.

Richard Bown:

Or you make it an experiment, you just say it's a mark.

Richard Bown:

It's almost a marketing experiment.

Richard Bown:

You throw it away.

Richard Bown:

So if it doesn't work, fine, we, we, we move on fast.

Nico Krijnen:

A lot of problems in those cases, right?

Nico Krijnen:

Is that you, people don't throw it away, right?

Nico Krijnen:

It's, uh, it's a marketing experience, uh, but then it's somewhat successful

Nico Krijnen:

and just lingers on and becomes another legacy stone that you have to carry along.

Richard Bown:

Yeah, that, that links onto to a nice point, um,

Richard Bown:

around exactly that exactly.

Richard Bown:

Attempts to fix legacy.

Richard Bown:

You must have seen this as well, where people have kind of come in and

Richard Bown:

say, oh, this is a, like a monolith.

Richard Bown:

We need to split it up.

Richard Bown:

And suddenly you end up with a monolith plus a couple of microservices,

Richard Bown:

plus some other pieces in an attempt to do the right thing, but not.

Richard Bown:

Carrying it through.

Richard Bown:

I've seen that.

Richard Bown:

I'm sure you have too.

Nico Krijnen:

Yep.

Richard Bown:

It's in that, at that point, you're kind of

Richard Bown:

screwed both ways, aren't you?

Richard Bown:

Because you kind of, you can get, you can get a system into a point where

Richard Bown:

you can't really go anywhere with it.

Richard Bown:

You and that point, you have to just throw it away or just leave it, you know,

Richard Bown:

because it becomes a bit of everything.

Richard Bown:

It's a Frankenstein.

Nico Krijnen:

Yep.

Richard Bown:

yeah.

Richard Bown:

How would you approach that?

Nico Krijnen:

Well, I, again, I would try to take the Frankenstein out of

Nico Krijnen:

it, not accept that it's a lost cause.

Nico Krijnen:

And sometimes it is, right.

Nico Krijnen:

You just have to throw it away.

Nico Krijnen:

But to be honest, I think in a lot of case, people don't realize that you

Nico Krijnen:

can still make it work, But you have to then probably make sure that you

Nico Krijnen:

start, rewriting the parts that really nobody understands anymore, get the

Nico Krijnen:

team like the, and the domain experts together and have them solve that

Nico Krijnen:

piece together so everybody understands that part of the software anymore.

Nico Krijnen:

And then you probably don't need the old part anymore and you can turn

Nico Krijnen:

it off and you only have to pick out pieces of that legacy part and,

Nico Krijnen:

uh, and chop away at it bit by bit.

Richard Bown:

Just go back into that for one minute because, uh, you defined

Richard Bown:

a legacy system is something which.

Richard Bown:

Is not supportable anymore.

Richard Bown:

Is that right?

Nico Krijnen:

No, it's a, there's a bunch of definitions, right?

Nico Krijnen:

I think Michael Feathers has a nice, nice one where he says, yes, a legacy system

Nico Krijnen:

is just a system that doesn't have tests.

Nico Krijnen:

Um, that I think in a lot of cases that's the case.

Nico Krijnen:

Yeah.

Nico Krijnen:

A lot of peop systems without tests, uh, become legacy, but

Nico Krijnen:

it's not necessarily the case.

Nico Krijnen:

What I've seen so far, it is usually the point where people don't

Nico Krijnen:

understand how a system works anymore.

Nico Krijnen:

Uh, and it can have a lot of reasons, right?

Nico Krijnen:

Can be because there are no tests.

Nico Krijnen:

Cause then, uh, or because the tests that are there are really poorly written,

Nico Krijnen:

in some cases, it's because the people with the knowledge about the system

Nico Krijnen:

left or, some new people joined that have a very different idea about what it

Nico Krijnen:

should be, start changing it and then.

Nico Krijnen:

Only do the change halfway you could say.

Nico Krijnen:

So you get sort of two systems or two different ways of working in, in one.

Nico Krijnen:

That's also what, what we talked about earlier.

Nico Krijnen:

System nowadays are very complex, right?

Nico Krijnen:

Distributed systems where multiple people are always working.

Nico Krijnen:

Uh, this is not just one person working on it.

Nico Krijnen:

This consistency is very powerful to have in a system, but it's also

Nico Krijnen:

really hard to maintain, right?

Nico Krijnen:

So you have to be very disciplined.

Nico Krijnen:

Um, And, um, I've been in the situation.

Nico Krijnen:

Why did the system that I once built, uh, over the years, it, it wasn't

Nico Krijnen:

the system that I built anymore.

Nico Krijnen:

Also, it didn't follow the principles that we set out at the start.

Nico Krijnen:

I mean, we wrote all the documentation about, uh, architecture principles

Nico Krijnen:

and those kind of things that we wanted to follow, but new people

Nico Krijnen:

join and at some point there's multiple teams working on it.

Nico Krijnen:

And, uh, There's is no way you, you can completely control that,

Nico Krijnen:

especially if you try to do it like two things as documentation.

Nico Krijnen:

Cuz yeah.

Nico Krijnen:

Whoever finds and reads these things anyway.

Nico Krijnen:

So I think one of the things that I'm also trying with these workshops is automate

Nico Krijnen:

a ways to enforce these things, right?

Nico Krijnen:

So, , in the workshop you encounter something that's called, uh, arc Unit,

Nico Krijnen:

which allows you in your pipeline check or you compile time or test

Nico Krijnen:

time, check that, uh, the architecture that you have in mind is not violated.

Nico Krijnen:

Uh, so these kind of things really help to also help juniors that

Nico Krijnen:

started on a, on a project or even other, uh, other coders that have

Nico Krijnen:

a different idea to, to understand why these things are there, right?

Nico Krijnen:

Because there is something that will prevent them from, uh, building that

Nico Krijnen:

version of the code if they, if they don't follow the, the intention.

Nico Krijnen:

So again, it comes, it comes down to discipline again.

Nico Krijnen:

Um, and that's, that's hard.

Nico Krijnen:

And also not a comfortable place to be, right?

Nico Krijnen:

Because, uh, discipline takes effort.

Nico Krijnen:

Uh, just doing your thing is a lot easier.

Richard Bown:

Exactly, and then people move on as well.

Richard Bown:

That's the thing.

Richard Bown:

If there's a, there's a churn, continuous churn of developers, which can happen

Richard Bown:

a lot of times, a lot of places.

Richard Bown:

Then there's disruption, and then disruption means things slow down.

Richard Bown:

Of course, when CH teams change and then pressure comes on to deliver and suddenly

Richard Bown:

ADRs, what ADRs, you know, so it's.

Richard Bown:

Yeah, it's that social element of coding, which is so important.

Richard Bown:

But not just the, not just the collaboration, but also the way

Richard Bown:

that we pass on information.

Richard Bown:

In fact, something you said about writing documentation or reading documentation.

Richard Bown:

I mean, that's the thing that, that I always do.

Richard Bown:

I always try and find documentation as soon as I start a job.

Richard Bown:

I'm trying to learn myself from the code how, how, what the architecture is, and.

Richard Bown:

How, how many places do I turn up and I say, well, where's, where's a picture

Richard Bown:

of the arch of, of an architecture view?

Richard Bown:

And no one can show me anything that's even up to date or

Richard Bown:

relevant updated in last year.

Richard Bown:

That's surely gotta be the starting point for anyone coming into the system.

Richard Bown:

But, uh, everyone learns differently.

Richard Bown:

That's, that's fine.

Nico Krijnen:

Yeah, so we talked about visual, uh, stuff earlier, right?

Nico Krijnen:

stuff visual, I think is always super important to have at least one visual

Nico Krijnen:

in your, in your project, right?

Nico Krijnen:

That you represent your architecture and, um, right, the high level

Nico Krijnen:

overview of what the system is supposed to be, how it's supposed to work,

Nico Krijnen:

just the high level mental model.

Nico Krijnen:

So everybody is, Able to talk about it, uh, and understand

Nico Krijnen:

it in, in a similar way.

Nico Krijnen:

if you have something like that and you make sure that you constantly

Nico Krijnen:

use it in the discussions that you have, you're gonna keep it up to date.

Nico Krijnen:

Because when you're having a discussion about it, you're

Nico Krijnen:

changing something, you're, you know, you have to change it, right?

Nico Krijnen:

So, uh, and the trick there is I think, to.

Nico Krijnen:

And at Luminus we have our Luminus way of working, uh, which sort of a document that

Nico Krijnen:

we try to help everyone here with to sort of have some principles and guidelines

Nico Krijnen:

to follow on how you do these things.

Nico Krijnen:

And we have a sectional documentation there, which says try to write the

Nico Krijnen:

minimal amount that you can, right, that you need, but that you are sure

Nico Krijnen:

that you can keep up to date over time.

Nico Krijnen:

Cuz uh, in a lot of cases I see people producing just tons

Nico Krijnen:

and tons of documentation.

Nico Krijnen:

But yeah, there's no way you're gonna keep that up to date.

Nico Krijnen:

So, Um, another approach I really like is taking, uh, like visualizations

Nico Krijnen:

out of the actual reality, which is the, the code, right?

Nico Krijnen:

Um, so nowadays there's more and more tooling that allows you to do that.

Nico Krijnen:

That's way more useful than having, something that you

Nico Krijnen:

have to maintain manually.

Richard Bown:

Well, indeed.

Richard Bown:

Yeah.

Richard Bown:

I think that's, that's important as well.

Richard Bown:

I was gonna ask, have you used C4 diagrams at all?

Nico Krijnen:

Yeah.

Nico Krijnen:

Yeah.

Nico Krijnen:

I'm, I'm, to be honest, I'm a big fan of, uh, of c4.

Nico Krijnen:

I really, uh, um, like that concept, um,

Richard Bown:

Do you find that, um, that people look at you funny though

Richard Bown:

because you're like, when I, cause I'm basically C4 makes complete sense to

Richard Bown:

me as well and the context, the, the top level box is the most important

Richard Bown:

part of any, anything for me there.

Richard Bown:

Um, I think it's the most warm part of anything.

Richard Bown:

I, I will just stick with the context for you to be honest.

Richard Bown:

I really want to go into components or anything even, but,

Nico Krijnen:

Don't agree.

Nico Krijnen:

Totally

Nico Krijnen:

agree.

Richard Bown:

But I get looked at weird now because I kind of got, I draw these

Richard Bown:

blobs and I've had people, actors and stuff, and I say, this is our system.

Richard Bown:

And people go, well, there's, where's the, where's the architecture?

Richard Bown:

Where's the interface here?

Richard Bown:

Where's the network?

Richard Bown:

Where's the whatever?

Richard Bown:

And I'm like, don't forget it.

Richard Bown:

Forget about that.

Richard Bown:

We don't need to worry about that.

Richard Bown:

We need to know the actors.

Richard Bown:

We need to have the systems.

Richard Bown:

And that's it.

Richard Bown:

You know, these blobs.

Richard Bown:

Um, and I kind of like, I'm kind of second guessing myself now because I go into

Richard Bown:

meetings and I present this and, they kind of like, they've already raised all these

Richard Bown:

questions at a detailed level and I'm like, I'll, I'll have a meeting with 'em.

Richard Bown:

I'll say, listen, that's not important.

Richard Bown:

All we need to understand is the interactions at this level, and

Richard Bown:

then we can dig in into the details later or maybe we don't need to.

Richard Bown:

That's the point.

Nico Krijnen:

Yeah, and I think like C4 does it pretty well, right?

Nico Krijnen:

And you have the system level and that, uh, the container level is

Nico Krijnen:

usually quite useful still as well.

Nico Krijnen:

But the focus there is on giving you the context of where your

Nico Krijnen:

system operates in, right?

Nico Krijnen:

All the things that are cited.

Nico Krijnen:

Um, and I think C4 does it on a, like more technical level

Nico Krijnen:

or you still see the actors.

Nico Krijnen:

So, uh, it forces you if you do it right to, uh, to put a

Nico Krijnen:

lot of details in there, right?

Nico Krijnen:

You, you, for every system and for every, every container there, you,

Nico Krijnen:

you describe as purpose, right?

Nico Krijnen:

You describe its relation to other pieces you describe the kind

Nico Krijnen:

of technology that it's using.

Nico Krijnen:

So it gives usually a lot of information already.

Nico Krijnen:

Um, at least when you come into a project, I think a lot of, I, I see

Nico Krijnen:

a lot of my colleagues also, they create these kind of diagrams when

Nico Krijnen:

they come into a project just to get an understanding and they enrich it, right?

Nico Krijnen:

They give it back to the project to make sure it, it stays there.

Nico Krijnen:

Actually had a talk with Simon Brown, last year, uh, at one of the

Nico Krijnen:

conferences where we Ran into each other.

Nico Krijnen:

And, um, so I was playing with the idea of, of wouldn't it be nice if

Nico Krijnen:

we can have to sort of always up to date documentation also on that level.

Nico Krijnen:

Right.

Nico Krijnen:

And, uh, so I had a discussion with him about that.

Nico Krijnen:

And the outcome that we came to is that well actually the real value

Nico Krijnen:

of that kind of high level diagram is not so much having an up-to

Nico Krijnen:

date version of it It is drawing it together with the people working on it.

Nico Krijnen:

Right.

Nico Krijnen:

And that act of drawing it.

Nico Krijnen:

Yeah.

Nico Krijnen:

You sort of bring up the knowledge from the group, right?

Nico Krijnen:

You get all the knowledge about how the system works together and

Nico Krijnen:

you create a shared mental model.

Nico Krijnen:

And, uh, I think a lot of collaborative techniques also

Nico Krijnen:

in the domain of design do that.

Nico Krijnen:

And a, uh, I think that's, that's the bigger value, just not just the image, but

Nico Krijnen:

the mental model that you create together.

Nico Krijnen:

Um, so to automate it wouldn't do that justice, right?

Nico Krijnen:

Because you wouldn't be able to have that collaboration going.

Nico Krijnen:

So, uh, um, yeah, I think, uh, that's also important to realize.

Nico Krijnen:

Some diagrams you just have to draw.

Nico Krijnen:

Uh, and that's fine.

Nico Krijnen:

Uh, you can't automate everything.

Nico Krijnen:

There's essentially a lot of value in not automating it.

Richard Bown:

Exactly.

Richard Bown:

It drives a conversation.

Richard Bown:

That's the whole point, I think.

Richard Bown:

Yeah.

Richard Bown:

Um, so apart from c4, cause C4 has some, is it the Structurized

Richard Bown:

tool or the framework as well, which allows you to, um, to model.

Richard Bown:

There's some, there's some more kind of, uh, loose, loosely coupled ones, I suppose

Richard Bown:

you could say, which allows you to just draw the diagrams without having to set

Richard Bown:

up relationships and stuff, which is cool.

Richard Bown:

Any other tools that you would recommend as well, or mo or models, um, that you

Nico Krijnen:

Les.

Nico Krijnen:

Yeah, so I think in this space, like giving context , about a system, what I

Nico Krijnen:

think is really useful to draw a context map like from DDD, which essentially is

Nico Krijnen:

like the high level context overview of, a system, but then more focused on the

Nico Krijnen:

communication patterns between systems and especially also between teams, right?

Nico Krijnen:

Cause uh, context maps are a lot about the organizational

Nico Krijnen:

structure that you're dealing with.

Nico Krijnen:

Um, and then you draw them.

Nico Krijnen:

From the point of view from the team, right?

Nico Krijnen:

And then looking outward, what are the, the other systems and teams that

Nico Krijnen:

we're, uh, that we're dealing with and how, what is our relationship there?

Nico Krijnen:

And, uh, just being aware of that.

Nico Krijnen:

Being aware of what relationship you have.

Nico Krijnen:

Like are you downstream?

Nico Krijnen:

Are you upstream?

Nico Krijnen:

Uh, are you going separate ways?

Nico Krijnen:

Like all these things are important to understand or if,

Nico Krijnen:

do we have a shared kernel?

Nico Krijnen:

These kind of things are important to understand cuz it gives you.

Nico Krijnen:

A mode of operating, uh, on that relationship.

Nico Krijnen:

And yeah, being aware of that is really important.

Nico Krijnen:

And I think in a lot of case people are not aware of it, right?

Nico Krijnen:

So, and that leaves them to maybe communicate or expect things that are

Nico Krijnen:

not to be expected of that relationship.

Nico Krijnen:

So creating these context maps, uh, is I think, very useful as well.

Nico Krijnen:

So I say, yeah, uh, a high level C4 diagram and a context map.

Nico Krijnen:

I think those were, would be the, the good ones to get a, a feel for, uh,

Nico Krijnen:

how, uh, well, when I, when I would onboard on a, on a team, it would be

Nico Krijnen:

lovely if we would have these things.

Nico Krijnen:

And then I think the other thing you really need to have is like a

Nico Krijnen:

business model canvas for the part of the, uh, the part that you're

Nico Krijnen:

working on to understand, okay, what is the business you're trying to do?

Nico Krijnen:

Why are we actually building the system?

Nico Krijnen:

So these kind of things just to, to give you an understanding on the, the

Nico Krijnen:

business domain that you're working in.

Nico Krijnen:

Don't see them being shared in a lot of places.

Nico Krijnen:

But yeah, I think it would be great if every project would have those.

Richard Bown:

Yeah, you'd hope so.

Richard Bown:

But yeah, again, I think the, the temptation is always for everybody to

Richard Bown:

prove their worth on any project and people who are kind of developer or either

Richard Bown:

your developers or your bas or whatever role you play, project managers, everyone

Richard Bown:

wants to show that they know stuff.

Richard Bown:

So they, they want to break out the tools, they wanna break out

Richard Bown:

the low level stuff and get diving on details and show activity.

Richard Bown:

Through busy work a lot of the time and this kind of helicopter view, context

Richard Bown:

view kind of stuff is, it's rare.

Richard Bown:

It's rare to see and it's, it's a shame I think because yeah, all the stuff that

Richard Bown:

we've talked about the, yeah, finding legacy, building legacy before even

Richard Bown:

you built anything, you know, comes through rushing ahead a lot of the

Richard Bown:

time rather than taking a bit of time, stepping back and just saying, okay,

Richard Bown:

what are we trying to achieve here?

Richard Bown:

And can we agree on that, at least through this collaborative process.

. Nico Krijnen:

And then again, we don't want to get the impression cuz that

. Nico Krijnen:

that's also an impression that a lot of people have from domain driven design.

. Nico Krijnen:

That it means you start to do a lot of design upfront.

. Nico Krijnen:

Uh, but actually that's, that's still not what you do.

. Nico Krijnen:

You really try to do it it, or you actually do it small.

. Nico Krijnen:

You do a bit of thinking there, but then you try to bring it into

. Nico Krijnen:

practice and see if it works.

. Nico Krijnen:

Because then you'll learn whether it's actually the case.

. Nico Krijnen:

So, uh, uh, definitely a bit more thinking up ahead, but not too much

Richard Bown:

Awesome.

Richard Bown:

Um, brilliant.

Richard Bown:

Well, Nico, this has been brilliant.

Richard Bown:

I I'll share a few things I think with our listeners.

Richard Bown:

Um, you mentioned this thing, the arc uh, plugin, um, in the

Nico Krijnen:

our unity.

Richard Bown:

arc units.

Richard Bown:

Yeah.

Richard Bown:

So maybe you could share the link with me for that.

Richard Bown:

That'd be

Nico Krijnen:

yeah, sure will do.

Richard Bown:

it's abl that, that sounds really interesting.

Richard Bown:

I want, that's myself.

Richard Bown:

I'll share a couple of other links about various things including the,

Richard Bown:

the DD meetup and, and DD Europe.

Richard Bown:

That'd be great.

Nico Krijnen:

Yeah.

Richard Bown:

like to say thank you so much for joining me.

Richard Bown:

It's been really good fun.

Nico Krijnen:

Yeah, same here.

Richard Bown:

Thank you so much to Nico for joining me today.

Richard Bown:

I hope you enjoyed the episode as much as I did.

Richard Bown:

I will include in the show notes, links to Nico's speaking engagements in his

Richard Bown:

workshops, and please join me again next time on the next episode of Loving Legacy.