Loosely Coupled - Beyond the symptoms, A deeper dive into identifying problems
Karol:
Good morning, good afternoon, and good evening, everybody.
Karol:
Welcome back to Loosely Coupled, brought to you by Bridging the Gap.
Karol:
My name is Karol Skrzymowski, and I hope everybody has something nice to drink.
Karol:
Today, for me, it's not coffee for a change.
Karol:
It's a, well, black tea with ginger, honey, and all sorts of spices because I'm a little bit under the weather.
Karol:
And speaking of all those lovely seasonal symptoms, we'll be talking today about symptoms and problems, and looking deeper into what are actually problems that we're experiencing, what are the actual, or maybe these are just symptoms that we're experiencing, not problems.
Karol:
And to guide us through the process of the problem space of problems, we have Woody Zuill, a lean and agile software development guide, who, well, has been coding and cracking on with IT topics for over 40 years now.
Karol:
And, well, I'm not going to go with lengthy descriptions from the bio.
Karol:
I'll let Woody tell us something about himself.
Karol:
So, Woody, welcome to the stream.
Woody:
Karol, thanks for inviting me.
Woody:
I'm really looking forward to this.
Karol:
And, well, good morning.
Woody:
Yeah, good morning for me.
Woody:
It's morning where I'm at in the Pacific coast of the US.
Woody:
So, we're in the morning time here.
Woody:
And I guess you're probably in the mid-afternoon or something like that, a little later, almost evening.
Karol:
No, it is evening.
Karol:
It's seven o'clock in the Netherlands.
Karol:
So, it's already evening time.
Karol:
Hopefully, my kids will go to sleep as soon.
Karol:
So, no unexpected noises on the live stream.
Karol:
But it is what it is.
Karol:
All right.
Karol:
Woody, tell us something about yourself before we dive into the problem space of problems.
Woody:
Well, when I started programming, I needed to have some software for myself.
Woody:
And I couldn't afford to buy good software.
Woody:
And most of the software I could afford didn't work very well.
Woody:
So, I thought, well, maybe I need to learn to write software.
Woody:
And I started learning to write software.
Woody:
So, that's somewhere around 1983.
Woody:
So, it's over 40 years ago.
Woody:
And I did not have anyone to learn from, really.
Woody:
So, I mostly learned it out of a couple of books.
Woody:
As a matter of fact, I'm going to turn around right now.
Woody:
I found this the other day.
Woody:
I think it's the first book I ever bought.
Woody:
I don't know if everybody can see that on programming topics.
Woody:
And it's called Basic Advanced Topics, which I thought is really a great title to say, this is basic, but it's advanced.
Woody:
So, anyways.
Woody:
You know, it's got a lot of explanations, but it's also got code that you can type in and copy into your stuff.
Woody:
So, anyway.
Woody:
So, that's when I started.
Woody:
I started learning in basic back in 1982 or 3.
Woody:
And it really was helpful to me.
Woody:
And I worked solo as a programmer for about 15 or so years, just writing software for myself in a business that I owned.
Woody:
So, that's my programming start.
Woody:
And then I decided to switch my career to just programming and went to work at places that, you know, I could work as a programmer.
Woody:
But in the 1990s, the end of the 1990s, it was almost impossible to not get a job.
Woody:
If you wanted to be a programmer, you just needed to know how to spell VB and you could get a job programming, right?
Woody:
And so, if you could spell VB or ASP, there was so much work, they did not scrutinise whether you could actually do it or not.
Woody:
And so, I started working, by the late 90s, I started working full time as a software developer.
Woody:
And what I found was, as much as I loved software development, I hated working at places where they were doing software development.
Woody:
So, this is an issue for probably a lot of people besides me, is that we like doing the thing that we like doing, but finding a way to make a living at it, working at a place, you know, it can be really bad.
Woody:
I've actually worked at places that were horrific.
Woody:
Now, I got a lot of experience being a boss myself.
Woody:
I've owned a number of little companies.
Woody:
And I don't think I was a very good boss.
Woody:
But when I started working for other people, and I started learning how bad a boss could be, I started realising maybe I need to learn more about this.
Woody:
So, that's where the topic of today is coming to.
Woody:
The things that we would see, if you want to get to there yet, well, you know, I'm just free flowing here, you can guide me.
Woody:
Okay, so the thing is, is I would work at these places.
Woody:
And I was going, you know, I don't like this place.
Woody:
I worked at one place I really liked.
Woody:
And then it was a three month contract.
Woody:
When that work was done, I went off to other places.
Woody:
And so I would say this, that every place I worked had these symptoms of underlying problems.
Woody:
And I didn't know yet that these were just symptoms.
Woody:
I thought they were the problems themselves.
Woody:
And so I start trying to figure out how to deal with that.
Woody:
And one of the biggest problems I think that I had was, was to be put on a team.
Woody:
But then we never worked as a team.
Woody:
So in other words, why did you put me on a team?
Woody:
Why do we call this group a team?
Woody:
But we're all sitting, you know, we're sitting in separate cubicles wearing earphones to listen to radio or listen to music while we're working.
Woody:
And we're never really doing anything like a team.
Woody:
And I would think of a team, many of the things I did when I was younger, were very much teamwork.
Woody:
Like I played, when I was really young, I played music in little rock and roll bands and later folk music bands.
Woody:
And that, you know, you don't all get on the stage and then put on, earphones, listening to different music, and then play whatever it is you want to play.
Woody:
You know, it's like, that's not going to be a performance.
Woody:
That's just going to be a bunch of noise.
Woody:
And noise could be a performance too, don't get me wrong.
Woody:
But yeah, so this is the thing.
Woody:
As I start working for other people, one of the things I noticed is we were often put on teams, but we never actually worked as a team.
Woody:
So that's one of those, I would call this kind of a potential problem, but I think it's more of a symptom.
Woody:
Like this is something I could notice.
Woody:
If they put me on a team, then I could take that as a symptom.
Woody:
Like there's some, there's going to be some underlying problems here.
Woody:
Let's see if we can figure out what that is.
Woody:
If we really truly working as a team, and I only got that a few times, well, somewhere around that time, I was also exposed to pair programming in 1998 or 1999.
Woody:
And that was like real true teamwork.
Woody:
Two people sitting together in front of the same computer, talking about the code they're writing, discussing what they're going to do and doing it.
Woody:
And there's a lot of advantages to that.
Woody:
So as I was identifying the problems that I felt I found in my work, I was also finding things that made my work easier.
Woody:
And the two big ones, you know, people will recognise these if you're in this space, for me were pair programming and test-driven development.
Woody:
If I got good, if I followed rigorously the ideas of test-driven development, my work would be easier to do and less problems in the code and so on.
Woody:
So I started looking for places that were already bought into some of these ideas, and that never worked for me.
Woody:
It was rare to find someplace.
Woody:
So there are two sides to this, looking for a place to work that's really great.
Woody:
And then wherever you're at, trying to help make things better.
Woody:
So that's, I was not good at either of those things.
Woody:
I couldn't find a great place to work.
Woody:
And I found that I could not convince anybody that we should try to make things better.
Karol:
Sounds like a lot of my stories, where I see that there are problems, I try to pinpoint them and identify.
Karol:
The organisation ends up putting a huge band-aid over a gaping wound.
Woody:
Yes.
Karol:
And not solving the underlying problem at all, not even listening to any reason over what could be the actual problem, but just looking at the surface of things, right?
Woody:
So that's a really, that's exactly what we're talking about here.
Woody:
And I would take this maybe into this direction, that to believe that what I think the problem is, or I think the solution is, often it was not a good path.
Woody:
In other words, it's not about what I think, it's about how can I help others start thinking about the problems?
Woody:
So in other words, it's not about having a solution, it's about being able to experiment and being open-minded.
Woody:
So how can I help this place I'm working?
Woody:
I'm not a consultant or anything.
Woody:
I'm what they would probably have called a contract programmer.
Woody:
How can I help them see that, like we have too much queuing, or the people that can answer our questions aren't available to us right now, or that we are not doing test-driven development and therefore we've gotten to the point in our work where it's mostly about fixing bugs.
Woody:
I've worked on projects that the first few months, it's mostly about writing new features, but after that it turns into a whole lot of work fixing bugs.
Woody:
Now, I'm not saying that whatever we used to do is still worthwhile thinking about.
Woody:
I really do believe that times will change and what used to work, there's a saying, what got us here won't get us there.
Woody:
The old stuff like Deming would say, most managers are taught how to manage in a way that is no longer considered useful.
Woody:
Whatever we are teaching in universities has already outdated itself, and so that's problematic.
Karol:
To a very large extent.
Karol:
I'm looking at this, for advertising the stream I quoted from Andrew Harmel-Law, the situation that was over his talk at DDD Europe this year.
Karol:
Andrew delivered a splendid talk about the second hardest problem in software architecture being variability.
Karol:
It was a really great talk.
Karol:
It was a really great topic, very well outlined and explained and in a snackable way presented that it was not distracting for my brain, so I could actually follow it because it was storytelling.
Karol:
What was very key in that particular talk, Andrew, and I think he did that also deliberately, wrote that this is a second hardest problem.
Karol:
For the whole talk, he absolutely forgot to mention what's the first hardest problem.
Karol:
The first question he got from the audience at the end of the session was, okay, Andrew, but you talked about the second hardest problem.
Karol:
What's the first hardest problem in software architecture?
Karol:
Andrew stopped for a second there and said, oh, you're right, I haven't said anything about that.
Karol:
All of you!
Karol:
Pointing to the audience.
Karol:
Of course, that met with a roar of laughter over the whole auditorium, but it is a very true statement that I heard oh so many times over oh so many topics, even on the stream.
Karol:
Technology is never the problem.
Karol:
It's us humans that are the problem, in essence.
Karol:
This is, of course, a very drastic simplification and generalisation, but what that means is that the root of all problems is just human nature.
Woody:
I'll buy that.
Karol:
You'll buy that.
Karol:
Good.
Karol:
All right.
Karol:
Another thing that I read recently in this, because I'm reading this lovely book, Domain-Driven Refactoring, by Alessandro Colla and Alberto, and I'm going to butcher this name, probably Acerbis, given that it's Italian.
Karol:
I suppose that's the right pronunciation.
Karol:
Not entirely sure.
Karol:
Sorry, Alberto.
Karol:
I shared this quote with you earlier over LinkedIn.
Karol:
I think this is a very true statement for all engineers, all developers, that we have this tendency to find solutions and fix things as quickly as possible, because it's extremely uncomfortable to stay in the problem space where the problem is unsolved and just look at the problem from all perspectives and look what it actually is.
Karol:
I think this is very much the essence of what we're talking about today.
Karol:
Okay.
Woody:
Let's get into that.
Karol:
We're solving symptoms, not problems then, right?
Woody:
Yeah.
Woody:
If we think we have gotten into the problem space, then I would say, normally, we're in the symptom space.
Woody:
We think we've gotten into the problem space, but we haven't.
Woody:
This is an issue.
Woody:
Symptoms mask problems.
Woody:
There's a famous systems thinker, his name's Russell Ackoff, and he used to talk about these four different ways of addressing a problem.
Woody:
The first one, he says, they all have solve and absolve, resolve, solve, and dissolve.
Woody:
He has his own descriptions for this.
Woody:
I think that the absolve is merely just ignoring things and hoping they'll go away.
Woody:
Sometimes, they do.
Woody:
I was once contacted, I was working in a company, and we would help this other company in getting their code into better shape.
Woody:
I'm talking about in the late 90s.
Woody:
They sent us over a batch of code that was about one method that was something like 5,000 lines long.
Woody:
They said, oh, we're getting this bug in here.
Woody:
We started analysing it.
Woody:
Then about a day later, they sent a note to us saying, oh, wait, stop.
Woody:
We solved it.
Woody:
We said, well, what did you do?
Woody:
Well, we don't know.
Woody:
It just started working again.
Woody:
It's like, okay.
Woody:
You didn't solve anything.
Woody:
You're just ignoring that underneath there, there's a problem.
Woody:
This is not an uncommon thing.
Woody:
If we get a problem, but it's not very frequent, we don't pay much attention to it.
Woody:
If you get a little bit of a toothache, and then the next day you feel fine, you don't think you've got a problem.
Woody:
Anyways, the resolve is kind of like you resolve it.
Woody:
You take enough action to make it feel like the problem's been solved.
Woody:
I believe that's dealing with the symptoms.
Woody:
I think that's what he brings up.
Woody:
Solving it is you actually get to the root problem, and you fix it, whatever that is.
Woody:
We could give many examples, but we do a root cause analysis.
Woody:
We find the problem, and we fix whatever's causing that problem.
Karol:
Then the question is, what is desolve then?
Woody:
Desolve is taking it to a system level.
Woody:
What in our system is allowing problems like this to occur?
Woody:
You adjust the system instead of just solving the problem, because problems will recur.
Woody:
I believe we can match this up a little bit to the Cynefin.
Woody:
If your listeners are familiar with Cynefin, if they're not, they can be looking that up.
Woody:
We could put it on that mural board or somewhere.
Woody:
The idea here is you've got four main domains, and one, all fifth domain is considered, he puts in the centre of his diagram.
Woody:
You've got the clear domain, the complicated domain, the complex domain, and chaos domain, or chaotic.
Karol:
Or confusion, right?
Karol:
The middle one.
Woody:
I think the middle one's sort of confusion.
Woody:
We don't know what our problem is, or we don't know what kind of a problem we have.
Woody:
It's very obvious.
Woody:
When we're in the clear space, to me, that's a space where A plus B is the problem, and the solution is always C, and we don't need to even think about it.
Woody:
I like to use an example.
Woody:
If you walk into a store to buy some milk, you just go to where the, in the US anyways, you go to where the milk is, you pick it up, put it in your cart, and when you get to the place to pay for it, you pay for it.
Woody:
There's no unknowns here.
Woody:
That's a very clear space.
Woody:
A complicated space is where you need to do some analysis.
Woody:
I would say, in a lot of ways, you have a checklist of things that you need to do to determine.
Woody:
For example, putting a new roof on an old house, you can't just call them up and ask for the, how much will a new roof cost?
Woody:
Well, they have to know what's the size of the roof, what's the condition of the existing roof, what materials do you want to use for this new roof, and do you want the 10-year guarantee or the 25-year guarantee?
Woody:
There's a lot of things, but once they've filled in all the blanks and they've taken all the measurements, they can calculate a pretty accurate price.
Woody:
Now still, they might, there's Kenevan, they might come up, so that's got confusion in the middle, and each time I look at these charts, they change something on them, but the complicated space is really about relatively well-known domains with a number of variables.
Woody:
So I can give a real good example from my past.
Woody:
I used to own a shop where we made signage and advertising graphics, and one of the things we did was screen printing.
Woody:
So in screen printing, you have a fabric stretched across a wooden frame, use a squeegee to essentially draw ink across it, and this leaves an image.
Woody:
So this is, everybody knows about silk screening or screen printing, and we'd identify 37 variables.
Woody:
So if there is a problem with our image, like it's a little smeared or it's the layer of ink is almost transparent, it's not thick enough, we could look at those and then we could go to our chart and see, well, what are the variables that could cause this problem?
Woody:
So I could document all the variables and therefore make it the troubleshooting mechanism really fast.
Woody:
And in the end, that's a complicated domain.
Woody:
You need to have expertise, you need to have knowledge, you need to be able to do some simple experiments maybe, but most of it's, you just need to fill in the blank, you answer the questions.
Woody:
So in that space, we don't know that A plus B is the problem.
Woody:
We need to discover the problem and then we can solve for it.
Karol:
So for those who actually work with software and read the manuals of whatever technologies they're buying, I remember back in the day when we were working with Tibco BusinessWorks 5, Tibco had very standardised error codes everywhere.
Karol:
So if anything in the framework went wrong, which was a standard problem, standard error, it was a named code with the description and you could look it up in the documentation and see what's the resolution for that, where potentially can you find, what potentially you can do to solve it quickly, right?
Karol:
So this would be that space.
Karol:
So if you would have identified a list of variables, and in that sense, your list of variables is done down to error codes or known error codes, you already have a kind of procedural approach to solving your problem because you know where to look, you have the knowledge, you have the PDF booklet or whatever in front of you with the manual, done.
Karol:
Pretty much 90% of the times, yes.
Woody:
Yeah.
Woody:
So you have the expertise.
Woody:
So you yourself know how to identify these things and know where to go for the answer and stuff like that.
Woody:
Now, when we move into complex space, which is where I really put software development, because what you're really talking about there was using software, but in the creating of that software, we're moving into the complex space.
Woody:
In the complex space, we don't really know, you know, sometimes they talk about wicked problems as being a problem where we won't start discovering the problem until we start trying to solve it.
Woody:
So that's one definition of a wicked problem.
Woody:
And so this is kind of the space of software development.
Woody:
If we are in software development, if we are not having these kinds of problems to solve, I don't think we're really doing development.
Woody:
So this is the issue.
Woody:
We can say, to me, if we're doing software development, we need to discover things that we don't yet know, and the process of discovering exposes what's missing for us.
Woody:
So in this space, we operate with theories, and then we do experiments.
Woody:
And even if we know exactly what we want to write in our code, we end up discovering we were wrong.
Woody:
And once we start trying to use the thing, oh, wait, that's not going to work kind of thing we'll hear.
Woody:
So anyways, that's the complex space.
Karol:
So this is where the iterative approach comes into play.
Karol:
This is where Agile comes to play with iterations, scrum as value that we discover as we go.
Karol:
This is where we jump into domain-driven design, right?
Karol:
We can constantly upgrade our model of understanding of the problem domain or some sort of business domain.
Woody:
That's right.
Woody:
So a lot of times, so this goes like planning of what software we want in the first place.
Woody:
My experience with this has been whatever we thought we wanted up front, we were going to find out we were wrong later.
Woody:
So why do we spend so much time figuring out what we want?
Woody:
I think I would say it this way.
Woody:
It's in the writing of the code and creating the software that we discover what we want, and that if we attempt to do it beforehand, we're doing it in a crippled fashion.
Woody:
This is really kind of, in a way, the scientific process.
Woody:
We need to have theories and do experiments and discover.
Woody:
And I have often found, so I would almost put it this drastically, that if we document, so let's give the example of creating the architecture.
Woody:
So we can't really create the architecture until we know everything we want this software to do and some of the mechanisms we want it to use.
Woody:
And we start designing, like in the old days, we're going to do a client server or an end tier.
Woody:
And nowadays, we have all the cloud stuff and all these other things.
Woody:
The architecture allows us to make the big up front decisions, or we believe we need to make the big up front decisions that are going to be very difficult to change later on.
Woody:
And what's going to end up happening is we're crippling ourselves because every programmer who works on this code, after we start working on it, is going to be complaining about the architecture that isn't flexible enough to handle the problems that we're trying to solve.
Woody:
So we should take, that as a symptom, and we should get down to the root of that and try to figure out what we should do instead.
Woody:
And that's why I really believe the iterative pattern of working is so useful.
Woody:
Back in the 80s, which I never really worked outside of my own little envelope, own little environment of writing software.
Woody:
But back in the 80s, they were discovering that on bigger projects, they needed a way to try to figure out everything they need up front.
Woody:
So the heavy duty documentation and heavy duty planning really became a solid thing in a lot of companies.
Woody:
In the 90s, they started discovering, hey, this isn't working.
Woody:
And Standish Group or whoever that did the chaos report was discovering, sharing data about this. So
Karol:
And this also, just to pitch in here, this also stopped working because also the velocity at which the environment changes, this just sped up drastically over the years.
Karol:
And now the, let's say again, variability is way, way higher than in the 80s.
Karol:
So obviously if our water drift goes faster, then obviously having very long iterations, waterfall-like approaches where we plan up front for a year and then execute for the next four, these will never run out because this will just not relate to any reality.
Woody:
Yes.
Woody:
Well, that often grinds to a halt after a while because we kind of, like the old saying, paint yourself into a corner.
Woody:
It's like you're painting the floor.
Woody:
This is like the old example.
Woody:
You painted from the door over this corner instead of from the corner over to the door, no way out.
Woody:
And I've seen projects that get two or three years into them and everybody's saying, we're dead in the water now.
Woody:
This is never going to get us anywhere.
Woody:
So this is, I'm sure everybody's experienced something like that.
Woody:
My overall experience in software development has been that the things that we discover along the way, we're not really allowed to use them because we're trying to finish the thing that we promised we would finish.
Woody:
And a lot of software happens this way.
Woody:
So back to the symptoms.
Woody:
So in the clear space, the symptoms aren't much, everything's clear.
Woody:
It's a well-known space.
Woody:
In the complicated space, that's where the symptoms are often indicators to us of something we need to be paying attention to.
Woody:
That is accentuated in the complex space.
Woody:
Now in the chaotic space, we could give an example.
Woody:
For example, the smoke alarm is going off in the kitchen.
Woody:
And I can say, oh man, I got to go take the battery out of that thing because that's just so annoying.
Woody:
Well, we're dealing with the symptom.
Woody:
I'm annoyed by the buzzing sound instead of the symptom.
Woody:
You have the pot on the stove, the water has all been boiled out of it and stuff's getting hot enough to start burning.
Woody:
And pretty soon we're going to have a fire.
Woody:
And if we're not paying attention to the actual problem, just one of the symptoms such as I'm annoyed by the buzzing, we got it.
Woody:
In the chaotic space, we act on what we know what's in front of us and we take action immediately.
Woody:
And in the case of a fire, I don't know if you've ever been at a place where they actually had a fire.
Woody:
But everybody gets out of the building and only people who know how to safely deal with the fire are allowed to do anything beyond that.
Woody:
So I worked for seven years or six years with a fire department on the board of directors.
Woody:
And a big chunk of what we focused on was having our firefighters extremely well trained so that they're not going to get killed when they're going into a building by making foolish decisions.
Woody:
There are lots of symptoms in that space that are hiding problems that could kill you.
Woody:
So you got to be really careful.
Woody:
So that's a good example.
Woody:
I didn't think of using here, but I'm glad it came up.
Karol:
And then lastly, if we're in the confusion space, we just don't know anything yet and we need to do discovery about what the hell's going on, what we know, what we don't know and what we know.
Karol:
We will not discover what we don't know, we don't know, but basically at least.
Woody:
But there are a lot of people that I've worked with in managing these things.
Woody:
And like I gave my example, when I first started working, looking for a place that I would have enjoyed working at, I had a lot of trouble finding that.
Woody:
And then when you're inside a place where you're working, a lot of the people don't do it.
Woody:
I don't think Cynefin came out as a public thing you could learn about until 2007, 2010, somewhere in there.
Woody:
So in the earlier years, I didn't know that.
Woody:
Matter of fact, this really helped me understand how to explain this stuff.
Woody:
There was a thing before this called the Stacey model, which is very much the same thing, uses the same kind of similar terminology.
Woody:
So I was starting to learn that stuff back then, but I didn't have a complete understanding of it.
Woody:
But to get to the point, I think most managers want to work with things as if they're in the complicated or clear space.
Woody:
And they actually make decisions based on that.
Woody:
And that really means we're often dealing with the symptom rather than the problem.
Woody:
If you ever had a manager or some of you, I always warn people, I usually end up insulting managers somewhere along the way.
Woody:
But I've been a manager much of my life in different ways, in companies I've owned, in companies I've worked in.
Woody:
So I have some right to make fun of myself.
Woody:
But what I noticed a lot of times a manager will say something similar to this, don't bring me problems, bring me solutions.
Karol:
Oh my, I just literally saw a graphic with this quote on LinkedIn just before the stream.
Woody:
Oh really?
Woody:
So that's a good point because it's still around.
Woody:
So I'm not completely out of date.
Woody:
But the issue here is that we cannot, solutions are not the space that, I'm going to be really bold about this.
Woody:
So being in the solution space of trying to solve a problem usually means we are trying to solve symptoms.
Woody:
So this is very problematic to me.
Woody:
So to give a good example, in software development, I have an exercise that I do.
Woody:
So if I'm called into a company to do a consulting, I'll do often do this exercise.
Woody:
But even in some of my trainings, I do a lot of workshops on mob programming or software teaming or workshops on something I call beyond estimates, which is mostly about why I think estimates aren't helpful to us in software development.
Woody:
Anyways, I do an exercise that kind of goes like this.
Woody:
What are the things that are making it difficult for you to be effective in your work right now?
Woody:
What are the things that are making it difficult for you to be effective?
Woody:
And I will get a list and I will, I'm going to go ahead and open up something so I can, go ahead.
Karol:
For all those watching, you can answer Woody's question in the comments on YouTube and LinkedIn.
Karol:
We'll see if this matches anything that Woody has prepared.
Karol:
Let's do that exercise.
Karol:
Let's do that.
Woody:
Let's do that.
Karol:
Restating the question, what things get in the way of you getting your work done effectively?
Woody:
That's right.
Woody:
Right now, currently.
Woody:
I always like to put that on.
Woody:
It's not, what are the things that will make it difficult or can make it difficult, or that maybe you've seen, but what are the things you're currently experiencing that are making it difficult for you to be effective in your work?
Woody:
Now we can just let people, are we seeing things coming in?
Karol:
Well, we do have a slight delay between the studio and the actual stream on LinkedIn and YouTube.
Karol:
So this may take a moment for people to actually get there.
Karol:
But the question is in on the screen visible, not yet visible on YouTube nor LinkedIn.
Karol:
So we'll give them a moment.
Karol:
In the meantime, let's, let's dig into this.
Karol:
So maybe I'll shoot some, well, I cannot really say that I can answer this question for the position of my current employment, because I actually finally managed to find a good employer.
Karol:
And I'm happy about my place right now.
Karol:
The only thing that really gets in the way of doing my getting my work done effectively is the lack of time.
Woody:
Oh, yeah, there you go.
Woody:
So that's a, that's a really good example.
Karol:
No.
Karol:
Yeah, let me elaborate.
Karol:
Because I want to do so many things and get into so many initiatives, that I need to decline certain aspects, not to do them and delegate them elsewhere.
Karol:
Because there's not enough time in the day for me to cover all the topics I would want to cover.
Woody:
Yes.
Woody:
So this is a, this is something that I've read about.
Woody:
For a long time now, a lot of psychologists will identify this, this issue.
Woody:
And part of it can be, fear of missing out.
Woody:
Part of it can be, I'm interested in a lot of things.
Woody:
Now, personally, I'm interested in a lot of things.
Woody:
And I'm usually allowing whatever seems most interesting at the moment, to be the thing I'm going to focus on.
Woody:
And I have owned about 20 businesses in my life.
Woody:
And usually what would happen is, I would either start up or buy a small business.
Woody:
And it's something I'm really interested in.
Woody:
And in about a year, I get bored with it.
Woody:
And so now I've start looking at the next thing that I might get interested in and get bored at.
Woody:
And I want to get rid of the thing I'm already in, you know, was interested in.
Woody:
But now I know enough about it, I'm no longer interested in it.
Karol:
Woody, you do realise that you sound right now like a typical person with ADHD.
Woody:
Yeah, now, I've got a book here somewhere that is called Oh, I don't remember that.
Woody:
I'll look it up later.
Woody:
But when I first heard of ADD, that was probably in the 80s.
Woody:
So I got this book on the topic.
Woody:
And it had a test of like 100 qualities, but symptoms of someone who might have ADD.
Woody:
And dang, I hit like 96 of them or something.
Karol:
Sounds all right.
Woody:
So I'm, I'm at best self diagnosed with ADD or ADHD, because I believe there's a superpower that comes with it.
Woody:
And that's the ability to hyper focus.
Woody:
So you know, I would find I could get really focused on something to the distraction of everything else, and be hyper focused on something.
Woody:
So I'm not saying it's good or bad.
Woody:
I'm just pointing something out.
Woody:
Yeah, so I might have, but that's, so I've done this, I've owned a number of different kinds of businesses.
Woody:
And so, but this is part of the issue.
Woody:
We don't have enough time.
Karol:
So see, my not enough time is exactly stemming from that ADHD part, because I do have ADHD.
Karol:
But me declining to work on certain topics and just delegating certain topics away from me is part of my autistic part, which my ADHD is pure chaos.
Karol:
And then my autism just puts a structure on top of that and forces that into a submission.
Woody:
So although I have no advice about this, whatever.
Woody:
One thing that I've noticed, whenever I started a business, by the time I get to about 10 employees, I was spending more of my time delegating work to other people managing the other people than doing the thing I was interested in, in the first place.
Woody:
So that's just an observation about myself.
Woody:
That often would be the point.
Woody:
If I had six or eight or 10 employees, it was getting to the point where I'm not interested in this part of this thing.
Woody:
Let me do something else.
Woody:
And that's a part of why I got into software development.
Woody:
Matter of fact, we got something coming in.
Karol:
Yes, we have something from Carolina.
Karol:
So too often, everything has to be done quickly.
Karol:
So the deadline was tomorrow.
Karol:
That's one of the things, yes.
Karol:
Supervisors aren't interested in solving the problem.
Karol:
Typical managerial issue, right?
Karol:
But rather in putting out the fire as fast as possible, and then waiting for the next fire to happen, basically.
Karol:
In consulting, there was a colleague in the CRM space that just told us one day, and that landed as a meme on our desktops, as our actual background of the desktop, that we are all consultants.
Karol:
We all love a good dumpster fire.
Woody:
Yes.
Karol:
So that's basically a dumpster fire situation there.
Woody:
This is really, there's a quote that is often attributed to Peter Drucker, and I'm going to paraphrase it.
Woody:
He says, much of what we consider to be management is simply making it hard for people to work.
Woody:
And that's a big part of this right here.
Woody:
Now, I don't know if he actually said that.
Woody:
I've never found an original source for that quote, but I have found the earliest version of it.
Woody:
I found, and he's supposedly quoting Peter Drucker, but he doesn't say where he gets it from.
Woody:
So I don't know if it's really from Peter Drucker, but I love that quote.
Woody:
The issue is as managers, our job is to make it look like we're managing things.
Woody:
So we need to, we want charts.
Woody:
We want things to measure.
Woody:
Well, there's another good quote I'll share from, I think it's from Russell Ackoff, which I usually paraphrase a little bit, but I'm going to try and do it exactly as he says, when a manager can't measure what they want, they start wanting what they can measure.
Woody:
This is really problematic.
Woody:
So this is a big part of the issue right here.
Woody:
We're using proxy measurements that make it look like we're doing something, but are actually meaningless to be doing.
Woody:
And we're not just, are they proxy measurements?
Woody:
They're usually some kind of a lagging indicator, which means the usefulness of them has passed by the time we get the information that we need.
Woody:
An example of that, that I often see in software is people measuring a cycle time, which I would say cycle time is meaningful only when you have highly repetitive processes, like in manufacturing.
Woody:
And we don't get that when we're working.
Woody:
Oh, you got a quote to do.
Woody:
Managers who don't know how to measure what they want.
Woody:
Yes.
Karol:
This is from Russell Ackoff.
Woody:
And I said it pretty much hit it.
Woody:
Yeah.
Karol:
That's a great book.
Woody:
So that's this little book right here.
Woody:
A little book of F-laws.
Woody:
Yes.
Karol:
And it's actually easily findable online if somebody wants to read it.
Karol:
This is quite an interesting read.
Karol:
It's not that hard to find.
Woody:
And he's got a bigger version of that book too.
Karol:
Yes.
Woody:
But that's a perfect, that's a, so I've been using that for years and I got to, you know, let's make fun of myself, you know, as a manager through the years, I found myself having to do those things.
Woody:
And this is why when I started doing software development, I would, the highest I would allow myself to work was at a team lead level.
Woody:
I kept turning down becoming, you know, a development manager or whatever manager, because when you get into that space, you have to use these pretend proxy measurements to show that you're doing your work.
Woody:
And I'm not willing to do those things.
Woody:
I have ended up managing projects and managing large groups of people.
Woody:
I think the most ever was maybe 80 or so people, but yeah, dang it.
Woody:
So let's get back to symptoms if you don't mind.
Woody:
Do we have anybody else sharing?
Karol:
Yes.
Karol:
We have Maksim here sharing on YouTube, not knowing expectations.
Woody:
Yes.
Karol:
Expectations and then follow up or if they change without one, knowing it, which is something I find very often in IT, the expectations change or requirements change without any notice, notification to the team, to the project programme whatsoever.
Woody:
So I can relate to, so I can be very narcissistic or whatever here and relate to my own experiences, every one of these things.
Woody:
I worked on a project once where there was a team that was supposed to be creating the requirements for some work, which I think is a harmful process, but they never really got anything.
Woody:
So we, as the developers had to start creating this software without having any requirements whatsoever.
Woody:
We only knew the bigger umbrella, which I'd rather just know the bigger umbrella rather than a well-written requirements document.
Woody:
Everybody's had this.
Woody:
I've worked with requirements documents that maybe have descriptions for 60, 70, 80 features or parts of features.
Woody:
And then we get into them and we start finding out we can't write it from this list of requirements.
Woody:
We need to go talk with the people who are asking for these things.
Woody:
And so the work that was done to create the documents was done before the knowledge was full enough to do a good job with writing that.
Woody:
That's something that I see happen over and over again.
Karol:
Yeah, because there are different levels of abstractions of requirements, right?
Karol:
You have a very high level requirements.
Karol:
Well, I would say business expectations, which not necessarily mean business needs, where needs are at the actual something that is actually translatable to requirements, not expectations.
Karol:
And then those need to be translated to something that an architect can understand, and then later translated to something that developer can understand, etcétera, etcétera.
Karol:
So there are levels of abstractions.
Karol:
It's very rare that companies can pierce through those levels and build a shared understanding.
Woody:
So you just hit the key phrase of shared understanding.
Woody:
And I believe that is very difficult to have unless we are working very closely together.
Woody:
So yeah, welcome to the big enterprise IT and relatively small enterprise IT.
Woody:
I mean, I worked in one of my early contracts in 2001, I think, or 2000.
Woody:
Yeah, 2001, maybe.
Woody:
I worked at a place that really only had two or three developers, and yet they had all these things where they had the complex requirements documents.
Woody:
They had designed their architecture and their architectures was intended to be N tier, which was really popular at that time.
Woody:
But what they were really writing was a client server application, which is a different version of starting to have layers.
Woody:
And so you couldn't even tell the boss that, hey, this isn't N tier, this is a client server app.
Woody:
And they didn't want to hear that.
Woody:
So anyways, and there are ways to do that in almost every language.
Woody:
And whether they were good or not, I don't know.
Woody:
For those kinds of apps in those days, it was probably good.
Karol:
Okay.
Karol:
But let's dig into those symptoms, maybe
Woody:
Let's get back to the...
Woody:
Go ahead.
Karol:
Let's have your list, and then also get back to Karolina here, and let's try to dismantle this as symptoms and ponder a little bit here.
Woody:
So the list...
Woody:
So I have an example that I give that is a list out...
Woody:
I did this as an exercise with 20 people.
Woody:
And I've done this over and over with groups, because that's about the size I like to do my workshops.
Woody:
I asked them exactly this question.
Woody:
They came up with 50 items.
Woody:
Some of them are pretty similar to each other.
Woody:
But let me share a few.
Woody:
The most common one I will see has the word meetings in it.
Woody:
And in this group, they had one which was needless meetings.
Karol:
Needless meetings.
Karol:
Okay.
Karol:
Brilliant.
Woody:
Anything.
Woody:
So they will say frequent meetings or poorly run meetings.
Woody:
But I would just say meetings are a potential symptom.
Woody:
So meetings themselves are not the problem.
Woody:
So if we say, well, our meetings aren't helping us like we would like them to, so we need to get better at having meetings.
Woody:
Well, we're dealing with the symptom.
Woody:
That's a way of resolving the problem instead of actually solving it.
Woody:
And again, I don't agree with the idea that solving it is where we need to be.
Woody:
I think either dissolving or an idea that I use, which I call pre-solving, which means let's stop worrying about our problems, and let's just work on the stuff that's actually...
Woody:
Let's make the things that are working well, even working better for us.
Woody:
So that's one of my typical approaches.
Woody:
Rather than focus on...
Woody:
Rather than saying, let's get to the root cause of this problem, let's figure out how to make everything that's already working work better.
Woody:
We can talk about that later if we have the time.
Woody:
I'm going to read off a couple of these things.
Woody:
Here's four that really go together.
Woody:
Context switching, distractions, multitasking, and workflow interruptions.
Woody:
Those things go closely together.
Karol:
Question
Woody:
Yes.
Karol:
Were those people from IT?
Woody:
These are all software developers.
Karol:
All software developers.
Woody:
Probably at this particular workshop, it was all software developers.
Woody:
Sometimes I have managers, and sometimes I will have people from finance or people from HR or whatever in my workshops, or only managers or whatever.
Woody:
So yeah.
Karol:
Okay.
Woody:
So that grouping right there, those are things that I think of as symptoms, and I would like to have a signal.
Woody:
If we see we are multitasking, I want that to be an alert.
Woody:
There's something we need to deal with.
Woody:
Let me go to some that really introduces to me what's the big problem, and it is the symptoms of it.
Woody:
Dependency on other teams, waiting on a dependency, external dependencies, which means outside of our team or outside of our company.
Woody:
And related to this is unclear expectations, which I think somebody here already noted, unrealistic expectations.
Woody:
So this is a priority.
Woody:
Stop working on that.
Woody:
Work on this priority.
Woody:
Two days later, while you're in the middle of working on that new priority, they come in, wait, wait, we have an emergency fire to put out, and we're going to work on this.
Woody:
And we have a stack of unfinished work.
Woody:
This is introduced.
Woody:
These are related.
Woody:
Go ahead.
Karol:
Or even worse, somebody sets the priority, start working on that new priority, and then has problem with you not finishing the previous task because the priority was switched, but they still expected you to finish that task in the same period of time.
Woody:
So this is often a problem that is put on the person doing the work, but it's really on the part of the person.
Woody:
But let me say it differently.
Woody:
It's not even on the part of the person who's telling people to get the work done.
Woody:
I think this is a system problem.
Woody:
This is a system level problem.
Woody:
This is not those individuals.
Woody:
The managers are just doing what's expected of a manager.
Woody:
So a manager, in a lot of ways, they're kind of squeezed in the middle between the actually getting the work done and those unrealistic expectations.
Woody:
And they'll lose their job.
Woody:
They have a chance, depending on what country you're in, they have a chance of losing their job if they don't live up to the expectations.
Woody:
So often what will happen in those kinds of situations is we get good at putting the blame on someone else.
Woody:
That's one problem that we can see from it.
Woody:
Another one is we have this, what I would consider massaging the numbers.
Woody:
We can prove we got it done on time, but it's because we cut some things that we didn't actually, or we didn't, well, I'm going to tell an awful story.
Woody:
I was working in a place that had a bunch of code that needed to be delivered for the new version of this thing.
Woody:
It had millions, more than a million lines of code in it.
Woody:
And they had an agreement that it would be with the customers, that there would be no major bugs or no critical bugs, no more than five major bugs, no more than, you know, they had these different level of bugs.
Woody:
They just moved each bug category down one level to meet their requirement of not having so many critical bugs.
Woody:
Critical bugs became major bugs.
Woody:
The major bugs, which switched into being, you know, level three bugs and then so on, or level one bugs and so on.
Woody:
So they just recategorised the bugs and they were able to meet their deadline.
Woody:
This is fake.
Woody:
Go ahead.
Karol:
In Poland, we would call this painting the grass green, which is something that actually happened in Poland in terms when we had still communism or well, at least the Europeanised version of communism, because that wasn't that communism as defined.
Karol:
When a delegate from the party was arriving at a certain city and the grass wasn't green enough, they really went on the grass and painted it green to make it green enough.
Karol:
These were literally things that happened, right?
Woody:
This is a system thing.
Woody:
And in a related thing for this, for me is I worked in televised sporting events for a while, making advertising and graphics and signage for them.
Woody:
But I would attend them sometimes.
Woody:
And sometimes to make something look good on television, they spray the grass to make it look green.
Woody:
So it already is kind of green, but now it looks green.
Woody:
This is something we need to understand.
Woody:
In the idea of television, what a natural colour looks like is not the same as what the televised colour will look like.
Woody:
So they may need to modify the colour so that it looks appropriate on a TV screen or whatever, a broadcast screen.
Woody:
And in real life, it looks kind of funky.
Woody:
So anyways, this is exactly an example of that.
Woody:
I'm going to give you a couple more.
Woody:
So waiting on clarification is just the outside dependency, lack of knowledge, lack of skills, communication barriers, poor working conditions.
Woody:
I've worked at places where we are so cramped that developers really had, you know, you can't be so cramped with other people that all you're hearing is the noise of the salespeople doing sales calls all day long and you can't get your focus.
Woody:
So I see having to wear and listen to music to cut out the rest of the noise, that's a symptom of something.
Woody:
Okay, I'll give a couple more here.
Woody:
Onboarding, something that makes it difficult for me to be effective is I'm spending a lot of time onboarding other people.
Woody:
Let's give a couple more.
Woody:
Technical debt, that's a very big one in a lot of places.
Woody:
Let's see, not everyone being on the same page.
Woody:
I think somebody kind of brought that up.
Woody:
We don't know what the priority is right now, so we're working on something that's not the priority.
Woody:
Obviously.
Woody:
So I often hear some of them, here's one, not taking enough time the first time.
Woody:
So part of that one is it's not necessarily taking enough time doing the analysis.
Woody:
I would say it's not taking enough time doing the experiments that we need to be doing, but we think we need to do it right the first time.
Woody:
And so what we do is we work on our current understanding.
Woody:
So these are all symptoms.
Woody:
I believe these are all symptoms, and I have a list of 50 of them in front of me, but I have collected about 200 of these symptoms.
Woody:
Yes, go ahead.
Karol:
To sum it up with a decent, more of a generic phrase, how would you define a symptom?
Woody:
So, yeah, let me get it.
Woody:
So to me, a symptom is a noticeable outward manifestation of a problem, a potential problem.
Woody:
So let me go ahead, if you don't mind, I'm going to get, I have in front of me a slight description that will make it easier for me to state this.
Karol:
Okay.
Woody:
So a symptom is an outward indication that something is wrong.
Woody:
It is what we can see or feel, even if we don't yet know the cause.
Woody:
So this is the way I usually give an example of it.
Woody:
If I'm sneezing, congested, have a sore throat and a headache, those are symptoms.
Woody:
And they may suggest that I have a cold or a virus of some kind.
Woody:
The symptoms are pointing to the underlying problem, but being uncomfortable because of these things is what we're going to try to deal with.
Woody:
And so instead of dealing with the problem, we might deal with the symptoms.
Woody:
We take a decongestant, a pain reducer, a cough suppressant, maybe we'll take something to reduce our temperature if we have a fever.
Woody:
So we're dealing with the symptoms.
Woody:
And in medical terms, some of these things are signals or signs, and some of them are symptoms.
Woody:
A sign is something that can be measured like taking someone's temperature.
Woody:
And a symptom is something I can feel like I've got a sore throat.
Woody:
So these symptoms are what we often deal with.
Woody:
Is there a medication you can take that eliminates a cold?
Woody:
Maybe not.
Woody:
I've seen people claim that there are things they can do, but we just need to rest, drink plenty of fluids.
Woody:
But the problem comes in is if we deal with the symptoms, we might feel better.
Woody:
So if I feel better today, I no longer have my headache, I'm not congested, I'm not sneezing all the time, I don't have a sore throat, then I might think, well, it's okay if I go to work.
Woody:
Now I go to work, I'm still contagious, and I'm spreading the disease to everyone else.
Woody:
So I haven't dealt with the problem, I dealt with the symptoms.
Woody:
So this started for me a long time ago.
Woody:
I believe that often we're dealing with the symptoms and not the underlying problem.
Woody:
And I sort of learned over the years that the, that we can't necessarily solve the underlying problem.
Woody:
And when we try to do that, it's sort of like we're just moving the problem to a different space.
Woody:
So often when we solve a problem, that solution becomes tomorrow's problem.
Woody:
So even when we know, so this is kind of the connevant thing.
Woody:
In the clear space and probably the complicated space, I think we can easily be solving problems.
Woody:
You know, example for me, I can, I worked at a place once when I was kind of young, and it was raining too much.
Woody:
And it started washing out some of their roads and some of their fields.
Woody:
And we needed to go and dig some ditches to divert the water that was being destructive.
Woody:
Well, yeah, that's pretty easy to solve.
Woody:
Once we got those ditches dug, the problem went away.
Woody:
Maybe it caused other problems, but you're getting the picture here.
Woody:
In some spaces it's obvious and you take care of it.
Woody:
But in the space, in the complex space, and I will make this argument, all software development, real true software development, if that's a usable term, that's in the complex space.
Woody:
We're going to find out what our problems are as we try to solve them.
Woody:
When a customer comes to you and says, this is what we need, they may not know it.
Woody:
There may be a solution that they haven't even considered yet.
Woody:
And the one that they, the solution they think they have may not solve their actual problem.
Woody:
So we need to do this iterative discovery type thing of development.
Woody:
But well, I like this.
Woody:
Let's be honest.
Woody:
Sometimes it takes treating the symptom before everyone is ready to think about the underlying cause.
Woody:
Exactly.
Woody:
You should just be here giving this.
Woody:
We should be interviewing Maksim Kogan because this is the point.
Woody:
Sometimes the discovery process includes attempting to solve a symptom, but we have to do this with a spirit, I think, of open-mindedness and discovery, which means we have to set up a theory for ourselves.
Woody:
It's kind of taking a scientific approach.
Woody:
Set up a theory, act on the theory, and then be willing to see that we failed.
Karol:
Of course, sometimes we need to treat the symptom first, because if it's causing us harm, problems, it's painful, whatever the problematic result of that symptom is, because there's causality.
Karol:
There's the root cause, the problem.
Karol:
It has symptoms, and the symptoms also are causes for us to whatever, right?
Karol:
Suffer.
Karol:
And that would mean that, of course, we will need to treat the symptoms first at times to be able to get to the root cause.
Karol:
But also, sometimes, without getting to the root cause, we'll not be able to treat the symptoms.
Karol:
So, for example, a very common symptom I find in my line of work as an integration architect is that a lot of people state that, oh, integration platforms are useless.
Karol:
They're only bottlenecks.
Karol:
They're centralised bottlenecks and only problems.
Karol:
And I say, well, no, that's not a problem.
Karol:
That's a symptom.
Karol:
Because if you stuff that system with people who are, for example, former DBAs, and I literally saw that kind of thing, where they're not trained to be integration experts, but to persist everything, they'll build so much complexity in that system that it will not be operable, because then they will be shifting most of their workload toward operations, not developing new integrations, right?
Karol:
And this is, again, a systemic problem, not a problem that is of their own volition, so to speak.
Karol:
But you know what?
Karol:
All this kind of brought me to Tesler's law.
Karol:
You know Tesler's law?
Woody:
No, no.
Woody:
Tell me.
Karol:
Tesler's law is the law of conversion of complexity.
Karol:
It's very common in user experience, and it's, well, it's from the 80s, so it's quite old already.
Karol:
And it's from Larry Tesler.
Karol:
And the most basic form of Tesler's law is that every application must have an inherent amount of irreducible complexity.
Karol:
The only question is, who will have to deal with it?
Karol:
And what we're talking right now about problem solving and symptoms and moving the problems somewhere else is, I would say, the dark side of Tesler's law, because we're moving that complexity, which is the problem space, away from us, somewhere else, for it to burn somebody else.
Karol:
But basically, what would happen?
Woody:
So this is, you know the book by Donald Norman, I think it's now called The Design of Everyday Things?
Karol:
Yes, a very good book.
Woody:
So I think originally it was The Psychology of Everyday Things, although I may have that, I may be wrong.
Woody:
I might be confusing that.
Woody:
So to get to the point though, that, you know, the user, the complexity should be, or whatever we're going to call it, should be shifted from the user.
Woody:
So the user should not need to be trained to use something.
Woody:
And this is something I learned quite a bit about in wayfinding.
Woody:
So wayfinding is something I was involved in a long time ago.
Woody:
That's like, if you go to the hospital, and you need to get to the emergency room, you want to go directly to the emergency area.
Woody:
You don't want to have to figure out and talk to people and, you know, you want to get right there immediately.
Woody:
So this is wayfinding in a hospital.
Woody:
You know, that's a complex problem because they have little departments spread out all over the place.
Woody:
If you need to get somebody to, you know, the place where they can start stitching them up, you don't want to be wasting seconds.
Karol:
Yeah, you don't want the bleeding all over the place to get to that.
Woody:
Yeah, yeah.
Woody:
We have a cleanup problem.
Woody:
Okay.
Karol:
That's a lot of problems.
Woody:
Not to make too light of it, but you get the picture.
Woody:
So here's the thing though, is that often when we do the Russell Acuff thing, where he says the resolve, which I think is solving for the symptom, we end up hiding the problem and not really revealing the problem.
Woody:
So I think that we need to be very careful in that space.
Woody:
So this is where my theme for today, symptoms and signals is, not every symptom warrants having a signal.
Woody:
So an example that I came up with is, you know, I once had a truck and the temperature gauge wasn't working well on it.
Woody:
And so I didn't know it was overheating.
Woody:
And the only symptom I could notice is, do you smell something like hot, you know?
Woody:
And by the time I pulled my truck over, the engine had enough damage that I needed to...
Woody:
So I needed to refill the radiator.
Woody:
So something was leaking and be able to get it to a repair shop and it had a warped head on it.
Woody:
So now I had to get the head remachined, where as if I had caught this earlier, I wouldn't have had this problem.
Woody:
So the point is the symptom was not being revealed to me through the temperature gauge, which was broken.
Woody:
Okay.
Woody:
So that's been put...
Woody:
I'm sure they didn't have those in the first cars.
Woody:
The first people who drove cars, if the engine was overheating, they were paying attention.
Woody:
They could see steam coming out of the radiator because they could see the radiator.
Woody:
It probably wasn't even under a hood if it had a radiator.
Woody:
Anyways, the point I'm making is that these were very sophisticated, mechanically minded people.
Woody:
And most people driving cars nowadays, you know, maybe they know how to change a tyre.
Woody:
Much of the stuff that's in the car, we don't work on ourselves anymore.
Woody:
To get to the point, I want an indicator.
Woody:
So the indicator in most cars is like a little gauge and sometimes there's a flashing red light.
Woody:
But those are indicators you need to look at.
Woody:
What if you could have also an audible indicator?
Woody:
And these are available.
Woody:
You can buy them from companies.
Woody:
I looked it up online.
Woody:
You can buy a thing, you attach it to your system.
Woody:
If the car is starting to get out of the range that you feel is appropriate, it will start making a loud buzzing sound.
Woody:
That's a signal.
Woody:
So all I'm saying is all these things we talked about so far that are symptoms, I'd like to kind of evaluate, would I like to have a signal that alerts me to this?
Woody:
That I have a problem I better investigate.
Woody:
It doesn't mean I have something to solve.
Woody:
Like smelling, going, boy, that smells hot.
Woody:
It may just be as a symptom of a car.
Woody:
It may just be that, just an example, a bird started building a nest inside your engine compartment and they're long gone.
Woody:
And now the nest is starting to heat up and smell.
Woody:
So yeah, okay, I can go out there, dig it out.
Woody:
The car isn't being damaged.
Woody:
I actually had that happen once.
Woody:
So the car isn't being damaged and we've gotten rid of the problem.
Woody:
I would never, if it was a live bird in there, I'd be really concerned.
Woody:
But anyways, you get the point.
Woody:
So I would kind of say that we need to be able to differentiate which of these symptoms are something that's necessary for us to pay attention to right now.
Woody:
And one of those things that I started taking as symptoms years ago is what Kent Beck and maybe Martin Fowler had talked about in their refactoring book or one of those books about code smells.
Woody:
So I take code smells as a symptom.
Woody:
If you don't know what a code smell is, a code smell is something we can look at our code and see an indication that we might have a problem.
Woody:
An example of a code smell is a long method.
Woody:
Another example of a code smell is, let me think of a really easy one, is a lot of ifs in the code.
Woody:
So convoluted, deeply nested loops and if statements and so on.
Woody:
So if we have nested ifs, that's a code smell.
Woody:
Now, some people will take it to extreme, which I happen to do that.
Woody:
And if we have more than one or two ifs in a method, we're probably trying to do too much work.
Woody:
So what is it a smell of?
Woody:
It's a smell that maybe we're not paying attention to the single responsibility principle or having our code nicely divided up.
Woody:
There's lots of ways we could.
Woody:
This might be an indication of a problem and it might not be.
Woody:
So code smells.
Woody:
And then I would say now we also could think of process smells.
Woody:
So a lot of these things that we have here could be process smells.
Woody:
For example, if we find we're context switching quite a bit, what's the underlying problem that's causing?
Woody:
I'm really looking to go into the underlying problems here right now.
Woody:
I'm just saying, well, if we're getting a lot of context switching throughout the day, how can we make that a signal?
Woody:
If we see that as being underlying, there might be a problem to this that we want to be alerted to.
Woody:
I did a study once at a company where we were noticing what we came to call in the industry thrashing.
Woody:
So thrashing on a hard drive that's fragmented, you can hear the hard drive moving a lot.
Woody:
Nobody has hard drives anymore.
Woody:
But you hear that hard drive that moved.
Woody:
What's that?
Karol:
Not that kind of drives.
Woody:
Yeah.
Woody:
So a hard drive that had a little physical head that would move across a disc, if it was thrashing, it meant it was trying to get the information it needs because it'd been fragmented all across this hard drive.
Woody:
So we would want to get rid of that fragment, defrag our hard drive.
Woody:
And so this thing we were using in the industry for people as well.
Woody:
So if we notice that people are working on five different things and they're switching between them, they're multitasking, they're getting context switching.
Woody:
The context switching often happens when another teammate comes over and says, hey, I was assigned to work on this.
Woody:
I don't know anything about it.
Woody:
Can you help me?
Woody:
Well, now I can't get my work done because I've got to help you get your work done.
Woody:
And now that's causing a conflict in a way because I know I'm going to be, my performance going to be judged.
Woody:
Did I get my work done today?
Woody:
And so we are, it's kind of distracting us from doing teamwork.
Woody:
But the point I'm making is if we believe that the multitasking and the context switching are indications of a problem, I want to be alerted to that.
Woody:
So if we have a system, let's just say daily, we have a meeting like in Scrum, they used to have a daily meeting.
Woody:
And one of the questions maybe the manager or the Scrum Master would ask is, is anybody blocked on anything?
Woody:
Well, that's an indication that we're not paying attention to stuff in real time.
Woody:
So I would say that's a smell or that's a process smell or a symptom of an underlying problem.
Woody:
The underlying problem is probably has to do with communication on all of these things.
Woody:
So when I see these things, I want to get an alert.
Woody:
So what I used to do as a consultant, I still do this, is if I hear a word more than a few times come up in the conversations I'm having in the meetings or gatherings I'm having with the people I'm supposed to be helping, I will make a note of it and start keeping tick marks to notice how often does that word come up.
Woody:
So if it comes up five times, maybe it's not important.
Woody:
If it comes up 10 times, maybe it's getting important.
Woody:
If I see it a hundred times during the day in my different conversations, I want that to really be a bold indication.
Woody:
So if I've got my little piece of paper and I've got these words and a couple of them have a hundred tick marks, that's telling me I want to, that's an alert.
Woody:
That's a signal.
Woody:
That's what I'm looking for here.
Woody:
So that's why I call this symptoms and signals.
Woody:
Some of these symptoms, maybe there's an underlying problem, but it's not critical.
Woody:
But boy, if we have, if I hear meetings, I have one place that I did this and I had a couple of hundred software developers that were involved in the whole thing we were doing and I heard meetings come up over and over.
Woody:
So then we had a bit of a retrospective to talk about meetings and it turned out most of the developers and some of these were highly trained, very highly paid, you know, PhD level people that owned patents and stuff.
Woody:
You know, these aren't people that are just, you know, like my level, just writing code all day long.
Woody:
They're inventing important things.
Woody:
Some of them were in meetings up to six hours a day, four to six hours was typical.
Woody:
And so my question is going to be, when do you get time to actually write code?
Woody:
If that's what your job is and they just say, well, yeah, that's a big problem.
Woody:
So the issue here isn't how good the meetings are.
Woody:
The issue is why are we having the meetings?
Woody:
What is the use?
Woody:
So we need to know the purpose of the meetings.
Woody:
And it really, in this case, a lot of times these people were needed in meetings because the people who were needing to make decisions didn't have the knowledge that was needed to make those decisions.
Woody:
So they would call, there was actually one guy on one team that his direct manager and the vice president above him would come in throughout the day and say, oh, we just need to borrow him for a few minutes.
Woody:
Well, a few minutes usually meant one or two hours.
Woody:
And by the time they come back, here's another symptom.
Woody:
The person that I need to ask a question to isn't available.
Woody:
So that's the dependency.
Woody:
So when we're waiting for dependency, that's a symptom that we don't have a communication method that allows us to not have to have that waiting.
Woody:
So this is all this is really about.
Woody:
It started for me when I was trying to write a guideline for myself on how to make it clear to some management folks, and this was just in the last year, that some management folks that the things they are seeing are things we need to be dealing with.
Woody:
And they're trying to solve for the symptoms instead of underlying problems.
Woody:
And I was using chat GPT to look through all the materials I've been collecting.
Woody:
And it came up with, it's about queuing.
Woody:
It said, well, the waiting is a signal.
Woody:
The waiting is a signal that we need to deal with whatever it was.
Woody:
I thought, oh, that's the terminology I want.
Woody:
I don't want just to have the waiting.
Woody:
And then we deal with, instead of dealing with the, one of the symptoms of waiting.
Woody:
And one of those is, I can't work on this because I'm waiting to get an answer back from someone else.
Woody:
So what do I do in the meantime?
Woody:
That's a symptom.
Woody:
Money managers will say, always have some other less important thing to work on.
Woody:
So when you're waiting, you work on that.
Woody:
This is, we introduce inventory to deal with the waiting, the busy, the queuing, because we're not busy enough.
Woody:
So we've dealt with the symptom rather than the problem.
Woody:
The problem is we're not getting answers to questions in a timely manner.
Woody:
Now that could go with other things than waiting with questions.
Woody:
It could be, I finished my work and now I, you know, I put in a pull request, right?
Woody:
And so now I'm waiting for someone to review the code before I can either send it to the testers or work on it more myself.
Woody:
Well, these are symptoms.
Woody:
I think any company that's using PRs is that's a symptom I automatically will look for.
Woody:
Why do we think you, why do we think PRs are useful?
Woody:
And usually because managers believe that dividing the work up and having people work solo is useful.
Woody:
Why do they believe that?
Woody:
I don't know why they believe that, but that's an extremely common belief that we need to separate the people doing the work so they can get their work done.
Woody:
I would suggest there's, this is a systemic problem.
Woody:
It's a system problem.
Woody:
Anyways, I've been rambling on forever.
Woody:
I hope that my, our listeners aren't getting too bored, but so this is really the topic.
Woody:
I'm not talking about what are the solutions.
Woody:
I'm talking about, are we, do we have a way to really alert ourselves that we have a problem instead of just, you know, that the symptoms are not the problem and that we need to pay attention.
Woody:
When we see the combination of symptoms, such as I brought up the first one, context switching, workflow interruptions, distractions and multitasking, those kind of group together.
Woody:
And when we see those coming up in these kinds of exercises, I'm going, yeah, we, this should be a signal to us that we have a serious problem.
Karol:
And then those people that experienced those symptoms get in trouble because they're not delivering.
Karol:
That's right.
Karol:
Even though they're raising that these things happen and nobody's digging into the problem and they, the problem is not resolved.
Woody:
So this, in our space, I've seen advertisements, we need a developer who's good at multitasking.
Woody:
So we're actually advertising to have somebody to fulfil the role of working in the most ineffective way possible that we can multitask.
Woody:
We cannot multitask.
Woody:
This is a, there's enough research.
Woody:
I said that pretty boldly, but, you know, read Kahneman and all these people, you can find references to research that shows, no, we can't actually multitask.
Woody:
So there's a Zeigarnik effect and other things like this.
Woody:
Our brains work on stuff in a way different than we wish it would.
Karol:
We are single threaded.
Woody:
We are single threaded.
Woody:
So if a boss comes in and says, here's a priority, got to stop working on that and get this other thing done first.
Woody:
We can set that thing aside, but our brain won't stop working on it.
Woody:
We're now increasing the cognitive load that we have individually.
Woody:
And this is back to that supposed Drucker quote.
Woody:
Much of what we consider to be management is just making it hard for people to work.
Woody:
And so I know for myself, my dad used to say this and he was an engineer and he was quite good troubleshooter and he worked in the phone company in the US, you know, in those days that a lot of brilliant people, you know, were in that space.
Woody:
That's where a lot of things came from in our world, like the C programming language and stuff.
Woody:
So he wasn't a programmer.
Woody:
He was an electronics and electrical engineer, but he would say something effective.
Woody:
Let me see if I can form the way he would say it.
Woody:
First of all, there's a thousand right ways to do anything.
Woody:
That's one of the things he would say.
Karol:
That's true.
Woody:
And so if you could bring me back to our topic and maybe the exact quote I wanted to use was there.
Woody:
When we're multitasking, we are overloading our brain.
Woody:
And my father would say this sometimes.
Woody:
So we're deep in something, we're not coming up with the solution.
Woody:
He would say, we need to sleep on this.
Woody:
And that's an observation that probably goes back way, you know, probably goes back thousands of years, is that tomorrow the solution will come to us.
Woody:
Today, we're done.
Woody:
So, you know, our brain is not going to come up with a solution.
Woody:
There's too much overloading us.
Woody:
And I've watched teams try to come up with a solution for hours when we go take a break, take a walk, maybe go get lunch.
Woody:
We come back and somebody goes, wait, I know what to do.
Woody:
So there was a guy who wrote a book called The Art of Thought a 100 years ago.
Woody:
I think it was almost exactly 100 years ago.
Woody:
The guy's name was Graham Wallace.
Woody:
Graham Wallace, W-A-L-L-A-C-E.
Woody:
And he said there's like four phases to thinking.
Woody:
One is the first phase is, I think it's investigation.
Woody:
I might get these wrong.
Woody:
You've got the investigation.
Woody:
You get deep in the problem space and you start thinking about it.
Woody:
You do some research.
Woody:
You look some things up.
Woody:
The next one is incubation.
Woody:
You leave it alone.
Woody:
And you let your, you go to the opera.
Woody:
It's one of the, I think the examples he gave, but who goes to the opera anymore.
Woody:
But, you know, you go and do something else.
Karol:
I know one person.
Woody:
Okay, there you go.
Woody:
And I love going to, I haven't been to an opera in years, but when I was a kid, you know, in school and stuff, I'm not putting it down.
Woody:
I think it's great stuff, but you don't see as much of this anymore.
Woody:
Anyways, so you have incubation.
Woody:
We leave it alone and go do something else.
Woody:
I like to go walking.
Woody:
I like to go walking.
Woody:
And the most common thing I hear is take a shower.
Woody:
Your best ideas come to you in a shower.
Woody:
And another one that I often hear is as I'm falling asleep, my brain activates.
Woody:
It goes, oh, wait a second.
Woody:
I know what.
Woody:
And I've had it for myself, both that and I wake up in the middle of the night and go, oh, I know what to do.
Woody:
And now I got to where I would keep a notepad by my bed.
Woody:
And nowadays I just keep my phone and I could speak into it.
Woody:
Oh, wait, I think this might be the solution.
Woody:
And the next morning I kind of find out maybe I was in a dream state and it was wrong.
Woody:
But that's another time.
Woody:
So those are common things.
Karol:
You know, these are common switches to switch the context we're in so that we can reroute our way of thinking.
Karol:
And I had that conversation, oh, so long ago with Mark Richards over exactly this topic of just not being able to solve a problem.
Karol:
And there's just switching your context.
Karol:
So it comes to you.
Karol:
I remember Mark saying that at times he doesn't take a shower in the morning just to take it later in the day when he stumbles into a problem, just to switch that context for himself for a minute, go to a shower.
Karol:
And then it comes to him to figure out, oh, this is how it's supposed to be done.
Karol:
Because we're taking a break from that focus.
Woody:
That's right.
Karol:
And in terms of multitasking, I know that my wife would say I'm often multitasking.
Karol:
And she obviously knows that this is not true.
Karol:
But what I do with my ADHD is that I often play games and watch a series, TV series at the same time.
Woody:
Yes, yes.
Karol:
That's not multitasking.
Karol:
That's my brain just going numb.
Woody:
Well, so you bring up a really good point here, though.
Woody:
Now, there's techniques for staying awake during a meeting.
Woody:
So I have to learn some of these techniques because, you know, I'm getting bored to death and I'm thinking about other stuff.
Woody:
And one common one is to be doodling, doodling while you're doing.
Woody:
I had my own mechanism.
Woody:
I had long lists of things I was trying to memorise.
Woody:
And I would write them out and I would just copy them out during the meeting.
Woody:
OK, it looked like I was participating by taking notes or something.
Woody:
But in reality, I was just trying to keep myself alert.
Woody:
And there are other ways to do this, too.
Karol:
One of mine is, for example, just playing a game on the phone, literally.
Karol:
To stay awake during the meeting where I had to be, let's say, attentive, not exactly paying that attention to because the topic right now is not the topic I'm supposed to be even thinking about because it doesn't relate to me anyhow.
Karol:
But I need to pay attention enough to be able to switch to the meeting when there's that topic that I'm interested in and participate in it.
Karol:
So I'm basically to keep still sharp.
Karol:
I'm literally playing games on my phone quite often.
Karol:
And that happens a lot in different meetings.
Karol:
In consulting, that's a regular thing that those meetings I get invited to, they span for two hours and I'm literally needed for 15 minutes.
Woody:
So we can keep our our brains can be kept active in dialogue.
Woody:
This is maybe another topic for another day.
Woody:
I was reading a book from David Graeber called The Dawn of Everything.
Woody:
And there was one little chunk in there where he talks about the window of consciousness.
Woody:
And he's saying the window of consciousness is seven seconds.
Woody:
I'm going, how do we know that?
Woody:
And so then he says, and this means the time we were aware of ourselves and focussing on something at the same time.
Woody:
I think that's sort of what it is aware, but I'd have to look it up.
Woody:
OK, so the window of consciousness, but it can be extended in dialogue.
Woody:
It can be extended in conversation for even more than several hours.
Woody:
Well, I wanted to find the research on that.
Woody:
And I've actually tracked some of that research down.
Woody:
I can quickly try to let me let me quickly try to find that just so I can mention those things, because I believe that if we look down here, I think is useful maybe for people.
Woody:
So I'm opening up a different screen here and let's see.
Woody:
Give me just a moment.
Woody:
Window of consciousness.
Woody:
Yeah.
Woody:
So I've got some notes that I took on this.
Woody:
So the essential thing that he says is something to the order of this.
Woody:
He states the following when we are capable of self-awareness, it's usually for very brief periods of time.
Woody:
The window of consciousness during which we can hold a thought or work on a problem.
Woody:
It tends to be on average open on average for roughly seven seconds.
Woody:
Well, man, is there research that shows us that?
Woody:
That's what I wanted to know.
Woody:
So what neuroscientists and it must be said, most contemporary philosophers almost never noticed, however, is that the great exception to this is when we're talking to someone else in conversation.
Woody:
We can hold thoughts and reflect on problems sometimes for hours on end.
Woody:
Now, I do not know if that's true.
Woody:
All I know with these kinds of things, these kinds of facts.
Woody:
So I actually looked into find research for this and I found at least three or four different researchers that support this.
Woody:
And so that's I'm just stating that to get to the point.
Woody:
I use these kinds of things to ask myself questions like this.
Woody:
What if that's true?
Woody:
So this went down.
Woody:
This caused me to go down a path where I've now read three or four books.
Woody:
One is called that I read in 2022.
Woody:
One that I read is called Dialogue and the Art of Thinking Together.
Woody:
Well, that was a really powerful connection.
Woody:
I knew I'd read the book.
Woody:
And so as I read this other book from David Graeber, it was like, oh, wait a second.
Woody:
That reminds me of this other book I read.
Woody:
And now I'm doing a deep dive into this book on dialogue.
Woody:
Connected with that is also the idea of dialogue mapping, which comes from a guy named Jeff Conkle, I think, that I learned like 20 years ago.
Woody:
How do we capture these things?
Woody:
And another thing is from Nancy Kline, who has a book called something like this.
Woody:
The Most Important Promise I Will Not Interrupt.
Woody:
And so what she seems to think is that we can help people think better by being really good listeners.
Karol:
Oh, that's very true.
Woody:
She gave me an exercise I started doing.
Woody:
I think I learned about this 20 years ago from her first book called Time to Think.
Woody:
And in that book, I think she suggests practise listening to someone else as if the very next thing they say will be the most important thing you'll ever hear.
Woody:
Well, that takes a lot of effort.
Karol:
It does.
Karol:
But on the other side of this coin.
Woody:
Is the rubber ducky.
Woody:
Sure.
Karol:
The rubber ducky debugging method.
Karol:
Brilliant.
Karol:
Because this is exactly the art of listening or objectifying, anthropomorphising the duck as your listener.
Karol:
And you're just thinking.
Woody:
So you could play the role of the rubber ducky.
Karol:
Yeah.
Woody:
But in a slightly more helpful way, the rubber ducky itself doesn't give us anything back.
Woody:
Now, in the book, The Most Important Promise I Will Not Interrupt.
Woody:
She says we shouldn't be spending our time thinking about what we're going to say when we're listening.
Woody:
So she gives an example here.
Woody:
Well, in the book, The Dialogue, The Art of Thinking Together, he quotes someone else saying, we're not listening.
Woody:
We're reloading.
Woody:
And I thought, well, that's a pretty good.
Woody:
That's because we want to defend our position and we want to counter their position.
Woody:
And the book that I'm talking about here, he's basically saying there's got to be this time where we're free to share ideas without count people countering them and shared it be open minded enough to hear every idea.
Woody:
So in Nancy Kline's book, she's saying you can eventually you can ask a question like this.
Woody:
What more do you want to say about this?
Woody:
Or is there anything more you'd like to cover?
Karol:
That's that's very coaching like.
Woody:
That's probably very coaching like.
Woody:
And I think her background is maybe I think she might be a Quaker.
Woody:
So in the Quaker religion, you have this thing where each person gets to have their say.
Woody:
And I'm not real.
Woody:
You know, I don't have a lot of knowledge about this.
Woody:
I could be getting it wrong.
Woody:
Please, those of you out there know better maybe can let us know in the comments.
Woody:
But the basic idea is we're willing to hear what each person say.
Woody:
And what this comes down to is most ideas cannot be shared in a matter of a sentence.
Woody:
But what I've noticed in a lot of conversations, the sentence gets when when we finish the sentence, someone else pops in and wants to talk when I just I have another sentence to give into the conversation.
Woody:
I could I remember being on a panel once one of these, you know, discussion panels at a conference.
Woody:
And I proposed a what I would call a rhetorical question.
Woody:
And somebody else wanted to answer someone else.
Woody:
And I said, wait, wait, no, I'm saying this is something to contemplate.
Woody:
I'm not asking this to get an answer.
Woody:
I want us to contemplate this.
Woody:
So I do have someone I think is like a genius level person that will call me up sometimes.
Woody:
And they will say this.
Woody:
I have something I want to talk to you about, but you don't need to listen.
Woody:
And so I'm being their human rubber ducky.
Woody:
That's exactly right.
Woody:
And so I do listen, but I take it as my job is to keep making it easy for them to open the doors they're trying to open in their own path.
Karol:
I do the same with people and then enable other people to do exactly the same with me so that they come and treat me as a rubber ducky.
Karol:
And I just go, yeah, OK, and what more, etcétera.
Karol:
And it is like, whew, that's really valuable in that sense, because that's just like really going to the root of the problem at times through that kind of, let's say, active listening.
Karol:
But before we jump in, since you mentioned dialogue and the art of thinking.
Woody:
Yes.
Karol:
Boom.
Woody:
Yeah, yeah.
Karol:
There's a workshop tomorrow.
Woody:
Tomorrow on this.
Woody:
That's right.
Woody:
Now, I better check how many people.
Woody:
I have only opened it up to 50 people.
Woody:
There's seven spots left or eight.
Woody:
I will open it out to more spots right now.
Karol:
No, there's still a few spots left.
Karol:
Don't worry, Woody.
Woody:
I do have a waiting list on it.
Woody:
So if you get onto the waiting list, I'll open up more spots for you.
Woody:
So I'm going to argue this.
Woody:
These sessions are not for me to teach other people stuff.
Woody:
These sessions are for me to learn myself.
Woody:
And if others learn something out of it, too, that's great.
Woody:
So my goal is...
Karol:
And a little bit of a teaching from the back of the room.
Woody:
Yeah, I'm here to learn.
Woody:
I'm not here to teach.
Woody:
And, you know, if I take, you know, Feynman, Richard Feynman used to say, if you can't explain it to a five-year-old, it's not exactly what you say to a beginner.
Woody:
You probably don't understand the thing yourself.
Woody:
And so that's just part of it with what we're talking about here today.
Woody:
I'm still in infancy in this space, the symptoms and signals.
Woody:
I think the signals are something I want to get better mechanisms.
Woody:
One mechanism I mentioned was I would take the tick notes and write down, write down, you know, how many times I hear a word.
Woody:
And meetings was a good example for that.
Woody:
But I want other ways.
Woody:
And one way that I've been using lately is I have a short list of things that I'm going to be looking for.
Woody:
So if I'm consulting with a team and they have a backlog, I want to know how many items are in the backlog.
Woody:
And then if we have more than a few items, I want to have their tool they're using, put up an alert for anything that's been on the backlog for more than a week or two.
Woody:
I want to see the ageing.
Woody:
So that we can actually see an alert then come up in some systems.
Woody:
Like here's an alert that this has been this has been here for, you know, two weeks or three weeks or four weeks.
Woody:
I've worked with teams with backlogs of 150 items.
Woody:
I would say, you know, 95% of those items have been on there more than two weeks.
Woody:
And some of them have been there for a year or more.
Woody:
This is very problematic.
Woody:
So those of you who take offence to these things, I'm sorry about that.
Woody:
Backlogs are generally not a good thing.
Woody:
We need to limit our WIP to one item.
Woody:
So our work in progress limits.
Karol:
Within bridging the gap, we try to use backlogs and try to use Kanban for the purposes of the project and start outlining these things.
Karol:
This just didn't work.
Karol:
At this point, there's five of us.
Karol:
We were trying to set up tasks and assign them and try executing them.
Karol:
First of all, nobody could update the board sufficiently enough.
Karol:
Second of all, some of those tasks were just pushed back for weeks.
Karol:
And we ended up, no, we just do what we do best.
Karol:
And everybody has a space that they are doing.
Karol:
And they're just doing their job instead of like, oh, we should assign this to this one and this to this.
Karol:
It doesn't really go anywhere in that sense.
Karol:
But you know what?
Karol:
Another sign that this is what I learned from body doubling, which is a method for people with ADHD to get focus and some sort of a psychological pressure on accountability of completion of tasks, is when they try to declare for a two-hour-long body doubling session, what they're going to be doing over the next two hours.
Karol:
So it's not an estimation over like a workload estimation spanning over days, etcétera, it's the next two hours, right?
Karol:
People either do it very unrealistic.
Karol:
So they have unrealistic expectations and they get confronted with that by the end of the body doubling session where you do a checkout.
Karol:
And then they learn to estimate better because they learn how well they work in a specific state of mind, etcétera, because part of the check-in is how are you feeling today and what's on your mind.
Karol:
Or they start declaring tasks that are too vague, right?
Karol:
And if I see these kinds of tasks on a backlog that are very vaguely described or these kinds of tasks that somebody declaring on the body doubling session that I'm facilitating, that's for me an instant signal that I need to react to and actually prompt and ask, hey, hey, hey, hold on, not specific enough.
Karol:
I know we're doing body doubling, everybody's going from a different department.
Karol:
I have no idea what you guys do professionally.
Karol:
That's perfectly fine.
Karol:
But this sounds very vague and very general, which means you can just swirl around and declare you did it, but you didn't do it, but you did it, but it wasn't sufficient, etcétera.
Karol:
So the outcome is far not deterministic.
Karol:
And that's another kind of like a symptom that I personally pick up on.
Woody:
So the symptom, if we relate it back to that, the symptom here is what?
Woody:
The symptom is...
Karol:
The symptom here would be that, well, going back to the quote, if you cannot explain it to a five-year-old, so that you declare that you're going to do something and you don't even understand what you're going to be doing because you cannot even express it properly.
Karol:
So that means maybe you should not be doing this.
Karol:
Maybe you should be first focussing a little bit on what is the actual scope of work that you need to be doing.
Karol:
Because for example, you didn't do your planning and you don't know what are you supposed to do.
Karol:
You're just grabbing at random stuff because you're just joining the body doubling session and you forgot to prepare, like really think through what you need to do.
Woody:
So you're making me think of an experience I had many, many years ago, probably up to 20 years ago.
Woody:
I was hired to work for a company that had this well-known, extremely capable programmer who needed someone to sit with him.
Woody:
And my main job was to say things like that.
Woody:
That's a really good idea.
Woody:
Let's finish this other one first and then we'll take a look at that.
Woody:
That was my main job.
Woody:
So that sounds like an early version of what you're talking about here.
Woody:
Not exactly.
Woody:
But my job was to help them stay because they would do the yak shaving kind of a model or that kind of a thing where they would go down a rabbit hole that would lead to another rabbit hole that would lead to, oh, and we got to change these foreign keys.
Woody:
And then we got to, it's like all these other things come to mind.
Woody:
This is a problem in a way with a large backlog is we think that that's where we can put all these things that we should be doing otherwise, but they will come up naturally anyway.
Woody:
So we usually don't need to do that.
Woody:
Well, I can go on and on on these things.
Woody:
I'm not sure how much time we have.
Karol:
Plenty, Woody, plenty.
Karol:
We can go on and on.
Karol:
Okay, but all right.
Karol:
So we got symptoms covered.
Karol:
We know that problems are problems.
Karol:
Problems are not that really hard to define.
Karol:
They're problems, right?
Karol:
Should we define what the problem is though then?
Woody:
So what I see is that with something like meetings ties into dependencies on other people, ties into the queuing.
Woody:
So most meetings, the purpose of most meetings is to discuss something so that we can plan or schedule or document and so on.
Woody:
We're not actually doing the work.
Woody:
We are doing the work around the work.
Woody:
And so this is like in lean terms, we might be doing non-value added work.
Woody:
That's still necessary.
Woody:
In lean terms, you have necessary non-value added work and unnecessary non-value added work.
Karol:
Like in software architecture, you have functional requirements and non-functional requirements.
Woody:
So in most of the work that we do, there is going to be some amount of non-value added, but necessary things to do.
Woody:
Value added means adding value to the end product that we're creating.
Woody:
So a good example would be if we're writing software, our discovery process is part of the value added work.
Woody:
The person who's scheduling people is not part of that value added work.
Woody:
But that's necessary in a lot of organisations.
Woody:
I believe that stuff that we don't, that people can self-organise.
Woody:
We can self-form teams, self-organise, self-direct, self-manage.
Woody:
There's four or five of these or more self things that we could be doing that eliminates a lot of what managers do for people.
Woody:
So how do we get to the problems?
Woody:
I want to skip to a slightly different point here.
Woody:
When we started learning to work well as a team and adopted what we then were calling mob programming, which came from some people that worked at ThoughtWorks and had written a paper about it 10 years earlier.
Woody:
The idea that everybody's sitting at the same computer discussing what we're doing and doing it together.
Woody:
We're actually doing the work together.
Woody:
When we started working that way, which kind of happened accidentally, what we found was that a lot of those symptoms disappeared.
Woody:
For example, the queuing that happens
Woody:
when we're waiting on dependency,
Woody:
that's where we're being put into a queue,
Woody:
stopped happening for us
Woody:
as long as the people on our team
Woody:
could answer their own questions,
Woody:
which elevated the problem to a different level
Woody:
because it was the external dependencies,
Woody:
the people we were dependent on
Woody:
that were on other teams or in other departments,
Woody:
that it really became obvious quickly
Woody:
that was a huge bottleneck.
Woody:
But when the local bottleneck is the way we normally deal with this when we are working alone, we just pick up other work to do.
Woody:
And I've had bosses say, well, while you're waiting for that thing, do this.
Woody:
So the pain of the waiting isn't made apparent.
Woody:
So the symptom is masking the problem.
Woody:
The problem is not that we aren't busy.
Woody:
The problem is that we are queuing, that we can't get answers to the questions immediately.
Woody:
What we notice when we start working as a group that the big blockages outside of our team was product owners, which I think...
Woody:
So roles are always a problem with this.
Woody:
Roles are a symptom that we haven't found how to manage our work well.
Woody:
And that'll offend most managers.
Woody:
But anyways, the idea that product owners would not often get back to us when we had a question for them in a timely manner.
Woody:
So if we have a question, they answer it right now, we could keep working on this thing.
Woody:
But if we have to wait, we're now queuing and we're waiting for them to get back.
Woody:
And it may take them an hour or two before they even respond and say, oh, you have a question?
Woody:
I read it here, I don't understand it.
Woody:
Well, now we're starting the real process of the communication.
Woody:
But if we try to explain it to them through an email, there's more queuing and more queuing.
Woody:
So because they weren't on our team, we were just building the queues.
Woody:
Another one was the testers.
Woody:
We finished something, it needs to get tested before it can be pushed to production.
Woody:
So it's gotta get through that.
Woody:
We were not doing pull requests, but that could have been one there.
Woody:
This was 15 years ago.
Woody:
Another thing was the database people.
Woody:
They were working in a different department.
Woody:
So if we had database work to do, we need to put in a request for that work.
Woody:
And the last one was what you might now call the DevOps people, but this would be the people who would do our deployments.
Woody:
Almost all the work that we had had to be deployed by somebody else.
Woody:
So we noticed those four areas would cause deep queuing problems.
Woody:
If we measure queuing well, and I have lots of slides on this, we will see that we spend most of our time waiting.
Woody:
And Reinertsen with another book, I can turn around and pull off my shelf.
Woody:
This is not a picture of a bookshelf.
Woody:
That's a real bookshelf.
Woody:
So the principles of product development flow, he talks about queuing in this book.
Woody:
And what he says is queues are the root cause of the majority of waste in product development.
Woody:
And what we do is product development for developing software.
Woody:
Mostly we could think of it as product development.
Woody:
Is that true?
Woody:
Well, I don't need to know whether it's true or not, but I can ask myself the question.
Woody:
What if that is true?
Woody:
I have talked to many executives now, and I have a pretty good sense that this is true.
Woody:
So I've talked to executives and companies, and when we get to the root cause of a lot of problems, it's the queuing.
Woody:
So if I cannot talk to a product manager, and I have this at one company, except every Monday during a specific meeting, then that's a queue of a week.
Woody:
If I have a question for them after that meeting, I'm in a queue for a week before I can get an answer.
Woody:
And you can see that's going to drag out our work.
Woody:
At that particular place, I used a value stream map, a very rudimentary value stream map showing time actually working and time of non-value added, which would be like queuing.
Woody:
And what we found in his six-month project, we only really worked on the code about three weeks.
Woody:
Three weeks of total time actually working on the code.
Woody:
So what do we do in the meantime?
Woody:
Well, my boss had told me, and I was kind of a team lead of this effort.
Woody:
And then above me was a boss, and that boss said, we'll just find something else to work on.
Woody:
And I said, well, what do you mean?
Woody:
Well, just save up your questions.
Woody:
What do you mean?
Woody:
Because we can't continue working on this till we get that question answered.
Woody:
So there's nothing to save up.
Woody:
And so what we ended up doing was we actually scouted, we walked out into the company, it was a huge financial firm, and we just asked other people, is there anything you need help with?
Woody:
And that's what we did to fill our time.
Woody:
And my boss actually said, that's okay.
Woody:
This product expert, their time is very valuable.
Woody:
So we only get access to a couple hours a week.
Woody:
All right, if they want this work done in three weeks, we could do it in three weeks, but we need to get our answers immediately.
Woody:
If you want your work done whenever it gets done, then we can keep working this way.
Woody:
And that's what we did.
Woody:
And I actually learned a great deal on that about queuing.
Woody:
That's where I really first started, and that would have been 2001 or so.
Karol:
Well, what I'm sharing right now is not the original comic because that was instead of chat GPT, that was compiling.
Woody:
Yes.
Karol:
That was one of the queuing people just fighting swords on chairs and whatnot.
Karol:
It's a very old XKCD issue.
Woody:
And it's that old?
Woody:
How old is it?
Karol:
303, let's have a look.
Karol:
XKCD, probably.
Woody:
I started messing with chat GPT about three years ago, but.
Karol:
Yeah, but XKCD is now, what, 3000 something.
Karol:
So that was issue 303.
Karol:
I don't know if these are dated, probably not dated.
Karol:
No, they're not dated, unfortunately, anywhere.
Karol:
But if the current number is 3168, then this is 303.
Woody:
Well, the chat GPT here, it says the initial release date was 2022.
Karol:
Yeah, but that was the comic I found this one here.
Woody:
Oh, it's Mark, it's pirated.
Karol:
It's pirated, it's a redo.
Woody:
Okay, I'm sorry, I misunderstood.
Woody:
I misunderstood.
Karol:
The original was compiling, right?
Karol:
Get back to work, my code is compiling.
Karol:
Sorry, I can't, queuing.
Woody:
This is a really good point.
Woody:
So I worked at a place where to do the build took three days.
Woody:
So this is because of circular references and stuff like that.
Woody:
So what do you do during this build period just before a release?
Woody:
And so what the team did was automate that process.
Woody:
And it turned out eventually they got it down to 45 minutes, which I think nowadays would be considered a monstrously long time.
Woody:
But no individual could run a build in their debugging process.
Woody:
So they could only work really with very refined small parts, tiny batches, tiny iterations, and are tiny bits of work and try to work only with having to rebuild your own component.
Woody:
So this is a great topic.
Woody:
So, okay, so that was a modification of one from decades ago.
Karol:
Yeah, quite a long time ago.
Woody:
Seeing that guy speaking at a conference that had to be like 2015.
Woody:
He was already extremely famous by then.
Woody:
So that 303 would be, yeah, compiling.
Woody:
But so this goes with, that's queuing.
Woody:
That's called queuing, that waiting is queuing.
Woody:
So what we mostly do is we find other things to do, which could be, and actually I'm doing a session next week, one of my public sessions on mob programming or ensemble programming and AI.
Woody:
How are we going to deal?
Woody:
And this is one of the big problems is the queuing.
Woody:
I would argue that what we normally do to deal with queuing is dealing with the symptom, that we have to have something to do while we're waiting.
Woody:
In my earliest days of programming, I had no compiling because it was written in an interpreted language.
Woody:
So you didn't ever have that compiling problem.
Woody:
That didn't happen for me until much later.
Woody:
I think I wrote all my first five or six years of programming was done in BASIC.
Woody:
And somewhere along the way, I learned C, which is a different thing altogether.
Woody:
And then I learned, and then things like, you know, in the nineties, a Visual BASIC came out and other tools.
Woody:
But yeah, when you're in a non-compiled language, you don't have that exact same thing.
Woody:
Yeah, but you know, anyways, I love this topic.
Woody:
Yeah, go ahead.
Karol:
Just to top the topic off.
Woody:
Yes, let's do that.
Karol:
How can we dig into what is the problem?
Karol:
Other than realising that we deal with symptoms, not the problems, other than finding signals.
Karol:
But if we already found the signal, right?
Karol:
We have a signal.
Karol:
That means we have a problem somewhere.
Karol:
That's basically, I'm basically asking how to do RCA.
Woody:
So when we get to the, what's RCA?
Woody:
What is that?
Karol:
Root cause analysis.
Woody:
Okay, yeah.
Woody:
Root cause analysis is an area that's really problematic.
Woody:
Is we believe we need to get to the root of the problem before we can start trying to solve it.
Woody:
And I think that this does misdirect us.
Woody:
So the pre-solve idea that I've been working with, that I kind of mentioned was, a lot of those symptoms went away for us.
Woody:
So the queuing problem, we never worked on the queuing problem.
Woody:
We never worked on the dependency problem.
Woody:
We never worked on the multitasking problem.
Woody:
Rather than trying to find out what was the underlying problem, we were merely trying to work on turning up the good on a few things, which I already knew from my experience are useful.
Woody:
And one of those things is getting better at collaboration.
Woody:
So we were studying and practising getting better at collaboration.
Woody:
And what happens when you do that?
Woody:
In my opinion, when we work on getting better at collaboration, we are not focussing on the problem.
Woody:
We are focussing on turning up the good on something that's already, we know is good for us.
Woody:
Making things visible is another one.
Woody:
So one of the problems of not having things, not knowing what's been prioritised and or the priorities constantly changing is finding a way to make all work visible.
Woody:
And my initial way of doing that was to use something like a Kanban.
Woody:
But it's just a big workboard where if you're working on something and it's not represented on the board, your one main job is to get it up on the board just so we can start seeing the load that we're under.
Woody:
Because a lot of the work being done at that particular job was that we were working on stuff that nobody else was aware of.
Woody:
Things were hidden.
Woody:
We need to make everything apparent.
Woody:
Now, it's one thing on a construction site.
Woody:
I had a contractor's licence for a while.
Woody:
On a construction site, you can see everything that's being done even better than most factories.
Woody:
If a guy's carrying wood from here to over there and you know that's not the right place to do it, you can see the thing happening and you know what's happening.
Woody:
In a factory, I can walk into any factory and I've been asked to come into some factories and look for the problems they might have.
Woody:
A symptom that we're not, what we have figured out flow is we've got boxes of parts.
Woody:
If a machine has boxes of parts before the machine and boxes of parts after the machine, after their operation, that's an indication that we have not paid attention to flow.
Woody:
Because the minute something goes into a box, it's entering a queue.
Woody:
So we can measure queuing by just measuring the number of boxes.
Woody:
We don't need to measure cycle time to see that.
Woody:
It's an instant indicator.
Woody:
This is an issue with a lot of things we use.
Woody:
So if we're trying to identify problems, we can start educating ourselves.
Woody:
In software development, I have literally asked dozens, maybe hundreds of companies, how much inventory do you have?
Woody:
And only two or three companies said, oh yeah, I can show you that.
Woody:
And only one I think was doing a good job with it.
Woody:
Most of them asked this question back, what do you mean inventory?
Woody:
So that we don't even understand that we have inventory and that inventory described as anything we've worked on that a customer isn't using yet, that's inventory.
Woody:
So if I've worked on this feature and others have worked on it, and over the last six months, we've been working on it, but it's not deployed to someone actually using it, that means it has to be more than just behind a feature flag.
Woody:
It has to mean people are actually using it.
Woody:
We have inventory.
Woody:
So just knowing these kinds of things is useful.
Woody:
So how do we get to solving problems?
Woody:
I think in the clear and complicated space, it's pretty straightforward.
Woody:
So in the clear space, we automatically solve it.
Woody:
Right now, if I nicked my finger and got a little bit of bleeding going, I can go wash it, put some antiseptic on it, put a Band-Aid on it, done.
Woody:
That's the clear space.
Woody:
But if I feel like I got a pain in my stomach, then I can't put a Band-Aid on that.
Woody:
And so that might be in the complicated space.
Woody:
That could easily turn into the complex space.
Woody:
So there are no easy answers to these things.
Woody:
I would say usually root cause analysis is going to lead us to solving a problem that will become our...
Woody:
The solution of that problem will become our next problem.
Woody:
We just don't realise that we're merely rearranging our problems most of the time.
Karol:
99 bugs in the code.
Karol:
99 bugs in the code.
Karol:
I take one down, fix it around.
Karol:
Now I have 128 bugs in the code.
Woody:
There was a study I once read, I wish I could find it again from IBM, that said that 70% of one-line code changes introduced a bug.
Woody:
One-line code.
Woody:
So somebody has got to have a lot of documentation, a lot of repositories.
Woody:
This was something I read 20 years ago.
Woody:
If that was true, that's really problematic.
Woody:
And this is what they call failure demand.
Woody:
Somebody's going to need to work on that eventually because we failed to catch that we had a problem.
Woody:
Yeah, so to put a cap on it, I'm not sure that actually...
Woody:
So this was back to Ackoffs thing.
Woody:
It's not necessarily the solve.
Woody:
It's going to be the dissolve.
Woody:
So that means we got to go to the systems level.
Woody:
The system level.
Woody:
This means several layers up above where the work is done.
Woody:
Often the solutions that are down where the work is done are working on symptoms.
Woody:
If we move up slightly above that, maybe in a system like with bug fixes where we actually do identify the bug and fix it.
Woody:
That's the complicated space.
Woody:
I don't think that's really the complex space.
Woody:
We're talking about people.
Woody:
We're talking about working with each other.
Woody:
We're talking...
Woody:
My big solution really is we have to recognise that most of what we think we believe is wrong and stop believing in that.
Woody:
Go to some kind of the Deming thinking that we need a constancy of purpose.
Woody:
And that means 5 years commitment, 10 years commitment.
Woody:
Not we're going to try something for a little bit.
Woody:
I've had people who'd say to me like, oh yeah, we tried TDD.
Woody:
That didn't work.
Woody:
Oh, show me what you did.
Woody:
Yeah, we tried it for two days.
Woody:
And it just was slowing us down.
Woody:
Okay, you have to get good at something before you can make that decision.
Woody:
You can't make a decision that TDD, test-driven development won't work for us in a matter of moments.
Karol:
Everything is slowing you down when you just begin with it.
Karol:
Because you introduce a lot of cognitive load to actually be able to cope with it.
Karol:
So basically anytime you're beginning in something completely new, you will be very slow at it.
Karol:
It's just normal.
Karol:
When you use proficiency, you get speed.
Karol:
But you need to get that proficiency somehow first.
Woody:
Yeah, this is back to my childhood days of playing music.
Woody:
I learned some piano lessons and stuff as a kid.
Woody:
And my brothers had a rock and roll band, a little rock and roll band.
Woody:
And their bass player quit, which is the kind of thing that happens in rock and roll bands.
Woody:
And somebody just, ah, I'm getting out of here.
Woody:
And so they came into the room and said, hey, you're our bass player now.
Woody:
And they just taught me thump, thump, thump, thump, thump, thump, thump, thump, thump, thump.
Woody:
You know, it's like, that's what you got to do.
Woody:
Do this over and over.
Woody:
You know, so the issue, I guess the point I'm making is we can take a step forward.
Woody:
I didn't become a musician by doing that.
Woody:
I became a musician by now practising that.
Woody:
And as a matter of fact, I would argue that I used to teach music lessons, you know, when I was a teenager and into my early 20s and stuff.
Woody:
And the students that would practise a half hour a day, within a few weeks, they're starting to get good.
Woody:
And they're getting more and more excited about it.
Woody:
And they're willing to, you know, extend it.
Woody:
Let's practise 45 minutes a day.
Woody:
The ones who go to practising an hour a day on their own, yeah, I've gone, yeah, they're probably going to turn into musicians.
Woody:
The ones who come in the next week and didn't practise, they're never going to learn it.
Karol:
This is true.
Woody:
Maybe we need some kind of a way to get the skills we need that we don't yet have.
Woody:
And that often has to be by working on examples.
Woody:
You don't learn to become a concert violinist by playing concerts, right?
Woody:
That comes later.
Woody:
We need to get the skills earlier on.
Woody:
I was watching a video the other day about Fosbury.
Woody:
The guy who did the Fosbury flop, which is a way of jumping over in the high jump.
Woody:
Jumping over the bar backwards.
Woody:
They used to do a thing called the roll.
Woody:
And other things was a scissor.
Woody:
These were the ways of jumping over a bar.
Woody:
He studied the physics of it, I guess.
Woody:
And he came up with this thing where we leap over backwards.
Woody:
And now probably every, I think every world-class high jumper uses his method called the Fosbury flop.
Woody:
Well, we don't solve these problems by getting better at the way we used to do things.
Woody:
It takes some new ways of thinking.
Woody:
I learned to do that when I was in high school.
Woody:
Very uncomfortable for me to leap backwards over something.
Woody:
Yeah, so anyways, you get the picture.
Woody:
I did learn that maybe this was a closing thought to share.
Woody:
When I was about 45 years old and started working with other people in software development, I had already learned that if I say that won't work, somebody's gonna prove I'm wrong.
Woody:
So I stopped, by that time in my life, I stopped saying that won't work.
Woody:
So when I heard about pair programming, I didn't say that won't work.
Woody:
I said, I'd like to learn how to do that.
Woody:
Same thing with test-driven development and so many other things.
Karol:
Because it's a lot about patterns and anti-patterns.
Karol:
And I'm always debating.
Karol:
We had the debate with Mark some time ago about what is the pattern?
Karol:
What's an anti-pattern?
Karol:
Yes.
Karol:
And this debate was interesting in a sense that basically we established that there is no such thing as anti-pattern.
Karol:
It's just a pattern that was used in the wrong context.
Karol:
Well, that's powerful.
Woody:
I'd never thought of that, but I like that.
Woody:
So I have found this for myself, yeah.
Karol:
Yeah, we basically discussed this problem because I was trying to establish what is the definition of an anti-pattern and I couldn't find the proper definition of said anti-pattern in the literature anywhere.
Karol:
It was very difficult.
Karol:
There were some attempts, but they were not definitive enough for me to work.
Karol:
Oh, I seem to have connection problems.
Karol:
Yeah.
Karol:
You did freeze up for a moment, but you're still there.
Karol:
I'm still here.
Karol:
I'm seeing that my browser is also crashing.
Karol:
The screen behind me just crashed also a little bit with connection loss.
Karol:
Well, that's what you get.
Karol:
So in that sense, we were looking at patterns and anti-patterns, and there is no such thing as an anti-pattern.
Karol:
If you call something an anti-pattern, first of all, you probably don't understand it well enough and you probably used it in the wrong context.
Karol:
So you basically did some sort of a cognitive bias, for example, like jumping on the bandwagon.
Karol:
And this is just it.
Karol:
And there are certain patterns that are very much usable in a very specific niche scenario, in a very specific context.
Karol:
And outside that context, they will not be usable at all, and they will be more damaging than helpful.
Karol:
And understanding that context and building that context for yourself, so building that knowledge is crucial.
Woody:
So this brings up a really important point, and that is that we need to stay open-minded.
Woody:
So I heard that described as maintaining curiosity.
Woody:
So I can be very, you know, I could say, no, this is the way we're going to do it.
Woody:
And as a boss, I often used to do that.
Woody:
But somewhere in the 90s, we had gotten, probably in the 80s, we'd gotten in the business that I owned, that we would say, here's the way we are currently doing it.
Woody:
You will probably come upon a better idea.
Woody:
Please share that with us and we'll experiment with it.
Woody:
So where in my earlier years, I would say, look, this is how we do things.
Woody:
I'd learned, you know, in my 30s, I suppose, that other people have better ideas than me.
Woody:
I got to take advantage of that.
Woody:
And instead of, you know, insisting this way is working for us, taking the attitude that there is no best practise, because there are always better practises.
Woody:
That's related to this.
Woody:
It's not exactly the same thing, but that's related.
Karol:
And then to flip it a little bit to the problem space, when I was a bit more junior in my role as an architect, I had answers for everything.
Karol:
So I basically was in the Dunning-Kruger effect peak of stupidity at times.
Woody:
Sure, sure.
Woody:
I'm sure I had that too.
Karol:
Everybody goes through the peaks of stupidity.
Karol:
And it's a shameful process, especially if you go to the valley of despair and start actually understanding the things that went wrong.
Karol:
So probably in different areas of life and my expertise, I had that several times over different areas that I worked on.
Karol:
But basically what that humbling experience of being on the peak of stupidity and falling into the valley of despair teaches is that you need to dive into the problem space.
Karol:
You cannot reside in the solution space.
Karol:
So, oh, I see a symptom.
Karol:
I'm going to solution the hell out of it and go my way.
Karol:
No, it doesn't work that way.
Woody:
That is really the point of this whole session.
Karol:
Yeah.
Karol:
So the point is, which is also taught through domain-driven design or very much learning domain-driven design at this point very actively, is to remain in the problem space and analyse the problem space, acquire knowledge about the problem space.
Karol:
And then you're able to approximate what the problem is that you're actually solutioning for.
Karol:
And that's why you can then deliver a solution to the problem, not to the symptoms of said problem.
Woody:
So this...
Karol:
That's difficult.
Woody:
Go ahead.
Woody:
Go ahead.
Woody:
Yeah.
Woody:
This to me is critical.
Woody:
Yeah.
Woody:
And we will never leave that.
Woody:
That's why, you know, Alan Kelly used to talk about, we shouldn't be doing projects.
Woody:
We're working on products.
Woody:
When we think that we're on a project, we're envisioning an end.
Woody:
And he made the argument that the end comes when nobody wants to use your software anymore.
Woody:
And that will come sooner if you think you've finished your project.
Woody:
You have to...
Woody:
It has to continuously be improving and answering the need of the users.
Woody:
They will discover what they really want to use.
Woody:
That's like the idea of measuring how good a platform is.
Woody:
If they start doing things with it you never intended, you probably have a good platform.
Karol:
Yeah.
Woody:
Because...
Woody:
And if they don't, you know, then maybe it's too constraining.
Woody:
Whether that's the truth.
Woody:
I'm not sharing any of these things as truths.
Woody:
They're just good things to think about.
Karol:
Yeah, that's true.
Karol:
And then touching on the different types of problems.
Karol:
Okay.
Karol:
Knowledge problems, one thing.
Karol:
You need to learn the problem space.
Karol:
You need to learn the problem domain.
Karol:
But you said collaboration.
Karol:
And it like...
Karol:
Especially that we talked a lot about queuing today.
Karol:
It already went into my brain.
Karol:
EDA, EDA, EDA.
Karol:
Even Driven Architecture.
Karol:
And if I look at it from the perspective of communication, time to collaboration as well.
Karol:
If I'm using queues, yeah, that's always going to be a bit of a problem bottleneck.
Karol:
This serves as a load balancer at times in system design.
Karol:
Perfect.
Karol:
But if I'm using a topic, I'm actually doing a broadcast, right?
Karol:
So I'm actually telling everybody, hey, this happened.
Karol:
This is something I'm doing.
Karol:
This is something I'm working on.
Karol:
This is something...
Karol:
So it's actually creating that visibility of things that are happening.
Karol:
And so this also works on that level of architecture, software design, ecosystem architecture, or system architecture.
Karol:
If we're shifting our communication patterns towards real time, we can really solve a lot of problems.
Karol:
But because that creates that collaborative aspect.
Woody:
Yes.
Karol:
It brings other problems, but that's a completely different story.
Woody:
There was a kind of scale that was called the richness of...
Woody:
I think it was the richness of communication by Alistair Coburn.
Woody:
And this scale showed...
Woody:
I'm going to see if I can find it here.
Woody:
The scale showed the value of collaborating.
Woody:
So if we have a richer communication, we have a higher level of effectiveness.
Woody:
And I liked what I learned from that.
Woody:
And I believe that...
Karol:
Was that by chance effectiveness of communication?
Woody:
It could be effectiveness of communication.
Woody:
I'm going to see if I can find the diagram.
Woody:
I've got some of it.
Woody:
So the effectiveness versus the richness of communication.
Woody:
So I think it was on the richness of communication.
Woody:
And so this was...
Woody:
I can find a link or something.
Woody:
But that's it there.
Woody:
So what did he call this?
Karol:
Yeah.
Woody:
This is somebody else.
Woody:
But that's Alistair's.
Karol:
This is a remade by somebody else.
Woody:
That's based on Alistair's thing.
Woody:
So he's kind of showing the first level there, the lower level is written documents, recordings, diagrams, and so on, which are all very good.
Woody:
But the next batch is bringing us all the way up to face-to-face communication or at a whiteboard.
Woody:
So I think either Alistair or a few others at that time used to say the power of two developers standing at a whiteboard.
Woody:
Well, I would take this a bit further now.
Woody:
I believe, first of all, that this is much more of an exponential kind of a chart.
Woody:
It can be shown as an exponential...
Woody:
You know, where at the low end, it doesn't just move up kind of...
Woody:
This is sort of linear the way it's shown.
Woody:
It moves up like when we get past where we're cooperating with each other, then it really starts going up.
Woody:
Before that, we're coordinating.
Woody:
We coexist.
Woody:
Then we have communication.
Woody:
We have coordination.
Woody:
Those are all ways of working together, but they're very low richness.
Woody:
When we start working into cooperation, that means we're helping each other.
Woody:
We can go up further than that into true collaboration and eventually at a space I would call co-creation.
Woody:
And I believe the book Dialogue and the Art of Thinking Together also addresses these things.
Woody:
So this is...
Woody:
It's not unique to me, but it's a gathering of all the things I've learned over time.
Woody:
The idea that if we are sitting together, then we are in a space where all of these things come together.
Woody:
So it means in some ways our work is easier.
Woody:
We don't feel as pressured.
Woody:
So there is this psychological thing that happens to us.
Woody:
If we're not under pressure and feeling really busy, we feel like we're not being effective.
Woody:
We're not being productive.
Woody:
This is something that happens to humans.
Woody:
It's an actual thing.
Woody:
And so when we're sitting and really working well with each other, we may not be contributing very much individually, but it's the old saying, I think from maybe Russell Acuff, where he said that the...
Woody:
And it may have been somebody else who said that the value of a system is not the sum of its parts.
Woody:
It's the product of the interactions.
Woody:
So whoever said that, and it could have been Russell Acuff.
Woody:
You can easily look that up.
Woody:
It's not...
Woody:
And I'm sure that that probably came in Roman times or Greek days.
Woody:
Somebody thought that up.
Woody:
We just massage it over time.
Woody:
But it sounds like the kind of thing that Russell Acuff might've said.
Karol:
But this ties very much into...
Karol:
I never know the Alistair Cockburn's richness of communication, but this very much ties into my experiences as a trainer.
Karol:
And because I learned better when I'm designing trainings and teaching people.
Woody:
Yes.
Karol:
Because that classroom interaction, where we are in one room and we start to dialogue.
Karol:
And most of my trainings are designed in a way that, of course, I convey some knowledge through slides, presentation.
Karol:
But a lot of elements there are interactive elements where we spark into discussion and ask...
Karol:
I ask questions and I want to hear different opinions, not even answers to those questions, because there are no correct answers to the set of questions.
Karol:
Just any answers, really.
Woody:
Yes.
Karol:
And this brings a lot more learning to the table than anything else.
Karol:
So that richness is through that dialogue, through that shared work, shared understanding, shared collaboration there.
Karol:
And for me, that became the default way of learning.
Karol:
And the default way of learning in the sense that this is why we're having this stream as well, because this is my opportunity to learn through conversation.
Karol:
And this is why I also last year started just reaching out to people over LinkedIn and asking, hey, do you want to do an architectural sparring and just chat about architecture?
Karol:
And the majority of people just said, yeah, sure.
Karol:
Let's do that.
Woody:
That's great.
Karol:
And these were so many great conversations over architecture and just looking at different viewpoints on architecture that I could have never stumbled into by just doing the work.
Woody:
So the strength of this, I think, is probably based in how humans operate.
Woody:
We would not exist if this wasn't something we were already good at.
Woody:
So that means our ancestors, if evolution is a thing, which I kind of guess it is, our ancestors had to get good at this so that we could exist today.
Woody:
There was a point in time, probably, where our long-ago ancestors, pre-human things, didn't need a group to survive.
Woody:
Maybe they were just like amoeba-sized things that could split up in cells and they could just keep going.
Woody:
And they never helped each other do anything.
Woody:
At some point, we started getting four legs and they started using some of our legs to hang into trees.
Woody:
So that's why they think, some anthropologists, that our hands are the way they are because we lived in trees and we need to be able to grab onto things.
Woody:
And there are some animals that...
Woody:
So all I'm saying is, eventually, we got to the point where children are born needing care for an extended period of time.
Woody:
They need somebody to take care of them until they're old enough to take care of themselves.
Woody:
Usually happens around age 30.
Woody:
But anyways, or something like that.
Woody:
Anyways, to get to the point here is that to be able to do this working well together stuff, and this was stuff we needed to learn how to do.
Woody:
I'm pretty sure we have common ancestors, that their main thing to communicate to another group of people was we're pretty good at defending ourselves, so don't even try to fight us.
Woody:
Stuff like that, right?
Woody:
So that once we could communicate that, then we could say, okay, well, let's get together.
Woody:
Maybe we can trade some stuff.
Woody:
Because there's plenty of evidence that shows that there were people living deep in the interior of countries, of continents, that had artefacts you could only get at the ocean.
Woody:
Or people at the ocean who only got stuff that you could get from this one region.
Woody:
They didn't walk to that region and get that stuff and bring it back.
Woody:
We learned how to interact with each other.
Woody:
And although I don't think we've ever become perfect at it, we're actually right now, I think as a whole across the world, we're learning how to be less good at that in a lot of ways.
Woody:
And so this is a de-evolution maybe.
Woody:
But to some degree, we have to learn how to work well with others.
Woody:
And that's my argument most of the time is mob programming or software teaming isn't about necessarily eliminating solo work.
Woody:
It's just about getting better at working collaboratively.
Woody:
So we have that choice.
Woody:
And something happened in our industry.
Woody:
This is what I noticed early on when I started working for a living is that we thought this work had to be done alone.
Woody:
And we would only have meetings and documents to communicate.
Woody:
And I think that learning to be more effective here includes learning how to work to actually do the work together, rather just talk about the work.
Woody:
I have found this for myself.
Woody:
If I'm going to do something, like I was putting on a conference for a few years, if we did the work rather than having a team talk about what needs to get done, and then people say, well, I'll do that and I'll do that.
Woody:
We just sat and did the work together.
Woody:
We got a lot more done.
Woody:
It was better done.
Woody:
It was better thought through.
Woody:
It's in the doing of the work that we actually discover what we need to do.
Woody:
And if we do that well, as a group, we speed through the work.
Woody:
We no longer have the queuing and other problems that happen when we divide the work up.
Woody:
We've naturally started dividing work.
Woody:
And I think there's a lot of reasons.
Woody:
Maybe we could do another session sometime.
Woody:
Why is it that we think working this way?
Woody:
I go into companies and they have a testing department and a coding department and a deployment department and a database department, or at least managers in those areas.
Woody:
Why did we let that happen?
Woody:
Well, it makes it harder for us to work together in an environment where I have to put in a request to get someone else to work on something.
Woody:
And then we're going to decide what it is in a meeting instead of decide it together working on the thing.
Woody:
These are ways to make things harder.
Woody:
Back to Drucker's quote.
Woody:
I'm afraid we're getting to where I need to go.
Woody:
So I have another meeting.
Woody:
I have another meeting coming up.
Karol:
All right, Woody.
Karol:
Thank you for the wonderful conversation.
Karol:
It's been splendid.
Karol:
I'll probably see you tomorrow then on the other session in that sense.
Karol:
Because I might have enough time to join the dialogue in Art of Thinking.
Woody:
Yes.
Karol:
And if anybody is still with us, I encourage you to also join that because these are always interesting workshops, interesting exploratory topics to just go through and figure out maybe there's something of value.
Karol:
And exploring is always of value, whether or not the outcome is actually useful.
Karol:
But just the act of exploration journey is always extremely useful.
Karol:
So I implore everybody to hop onto that tomorrow and see what comes out of it.
Karol:
And before we go away, in two weeks time, because next week we don't have a live session, but in two weeks time, we're actually talking about neurotypicality in IT.
Karol:
And joining me for that session will be Joanna Gruszczyńska, a job and ADHD coach.
Karol:
And Joanna works with a lot of people from IT.
Karol:
As she told me, 9 out of 10 of her clients are actually IT people.
Karol:
So that might be quite an interesting conversation to see how the way our brain works actually influences the way we work.
Karol:
So tying it in also to our conversation here of symptoms and problems, this might be an exploration of a very specific type of a problem.
Woody:
I love it.
Karol:
That we'll be having.
Karol:
So that said, Woody, thank you again for joining us today.
Woody:
Thank you.
Karol:
And everybody have a lovely, whatever that is, morning, afternoon, evening, or night.
Woody:
That's right.