It’s the workflow, stupid

Sausages making illustrates workflow brilliantly! – For years I used this picture of sausages makers to describe the way teams work: meat goes in, sausages come out.

If you put pork in you get pork sausages out

If you put chicken in you get chicken sausages out

If you put beef in you get… in the aftermath of the 2013 horse meat scandal I used to joke “You out horse meat in you get beef sausages out.”

What comes out bears a strong relationship to what goes in.

If you put project A meat in in you get project A sausages out

If you put project B meat in in you get project B sausages out

Sure it works best if you have a dedicated team and you only put project A requests in. When A is finished the team switches and focuses exclusively on project B. But you know what it? It still kind of works if you mix as you go along.

When a team works on multiple different projects in parallel it is not so productive – reduced focus costs, switching between things costs too. It will be a damn site harder to make forecasts about what will be done when, answering the “when will it be done” question will be tougher. But it still works, you can still make forecasts just they will be even less reliable.

By extension, if you put business as usual meat in you get business as usual sausages out. If you put DevOps meat in you get DevOps sausages out. If you put company admin in you get company admin sausages out. Get the picture?

While it is great advice to “focus on just the project/product” the vast majority of teams I’ve ever worked with are not in a position to do that. Turning work down is above their pay grade.

Seeing the whole

In Xanpan I called this “Team centric”. The project you are doing is less relevant than the workflow you are operating. Xanpan explicitly discusses how to integrate “urgent but unplanned work” with planned “project” work, I’ve extended the thinking with OKR Zero.

When things go wrong teams become like a saturated sponge. People can’t see the correlation between what goes in and what comes out. Trust is reduced, more reporting and even policing is added. The workflow becomes more complicated, less predictable and more costly.

It is no use looking at the project. Each project is only part of the picture. Neither will looking at the BAU, DevOps or urgent but unplanned work help either. They are only pieces.

You need to look at the whole: the workflow, the sausage machine that makes the sausages.

It is of little use looking at the pork sausage project and asking how many pork sausages will come out next week if the team is also doing BAU and making some chicken sausages on the side.

Nor is it any use talking about the pork sausage project if every time the team turn the handle they have to stop. Check with accounts, check with the security team and check customers – all of whom have their own workflow. Customers who just want the team to “get on and deliver it.” Every time a team needs to interact, get permission, get feedback or anything else with another team, things slow down and grind to a halt. Other teams are most likely struggling with similar things so they all block one another.

Often when this happens, because people have the best intentions, and because they want to be productive, they start doing something else. Pork sausage production stops while they wait feedback on sausage sales. So they start producing chicken sausages. Then just as chicken sausages start coming out the pork feedback comes in and everything must switch back. But now the chicken meat is unwrapped and getting warm. By the time they get back chicken sausages it has gone off.

It’s the workflow, stupid. Let me suggest again: watch Stockless Production.

No one person

Everyone, and every team, is linked together in workflow so it is difficult for one alone to make a difference. Working harder, producing more often makes things worse not better. Individually people are pretty helpless.

Such workflow streams are full of work-in-progress, WIP, they are overloaded. This is really “work hopefully in progress” (WHIP). It is bad when one team is overloaded but when it is excess strategic wip the whole organization struggles. It is difficult to know where to begin fixing thing. You still have to start fixing it at the team level but until multiple teams start fixing there is not much improvement to show.

No one person can fix this. No single technology can change it. Maybe not even a single team. Everyone is connected. Only by looking at the whole can things be fixed.

Unfortunately this is where project warriors come along. They insist that everything is a project – which increases administration. One or two projects get expedited and are forced through but everything else deteriorates.

Saddest there are know solutions: work to completion, reduce workpiece size, operate a pull system not a push, work within capacity, allow for shit to happen (unplanned but urgent work) and don’t overload the team – in fact don’t load them more the 76%.

That is workflow management. The devil is in the detail, there are no big easy solutions – if there were they would have been applied already. Workflow management cuts across projects. Managers have a role to play here but not project managers. Project management is too narrow.

It’s the the workflow, stupid.

So finally, an advert: I’d love to help, call me, e-mail me, LinkedIn, WhatsApp, whatever medium you like, just ask.

How can we set an OKR if we don’t know the baseline?

The baseline problem

It came up again today, actually, once you delve into OKR setting:

“When writing OKRs, and specifically the key results, how can we set a target if we don’t know the baseline?

For example, suppose we want to increase the number of site visitors, if we have 1,000 visitors a day then the target would be 5,000 but if we only have 200 a day then the target would be 1,000. But if we don’t know how many we have to start with, how can we set a target?”

I call it the baseline problem. I know it troubles many teams but it shouldn’t. There are actually, two, or possibly three answers.

The easy answer, and one I don’t like, is to sidestep the problem: instead of saying “increase views from 1,000 to 5,000” say “increase views 500%”, or, to take another example, “reduce run time from six hours to one hour” say “reduce runtime to one sixth.”

Replacing initial and final numbers with a multiplier doesn’t solve the whole problem because you need to start by finding out where you are before you change anything. So task 1 becomes: measure status quo, whether that is eyeballs, run-time or whatever.

Another way around this problem is that you could change your OKR after setting. The initial OKR could say “increase views from to .” Again task #1 is to measure and at that point you simply revisit the OKR and fill in the blanks.

Granted some people might take exception to you tweaking an OKR after the start of the cycle but personally I don’t see that as a big issue.

Baselines solve the wrong problem

Now sidestepping the problem like this might keep you moving but it is not very satisfying. That is because: it is solving the wrong problem. The real problem is not that you don’t know the baseline but that you don’t know what the number should be. When you set the target by starting with the baseline you are putting technology first and you are limiting your ambitions.

The question is not “How many visitors do we have now?” and “What target might be achieve?” but “What visitor numbers do we need to have?” Or maybe “What visitor number do we need to make us number #1in our market?” or “What numbers do we need to break even? get investment? impress clients?”

Or take the run-time example, don’t ask “How fast are we?” and “How fast can we be?”. Instead ask “How fast do we need to be?” If you don’t know the answer then ask “Why do we want to be fast?”. Or ask, “What advantage will being twice as fast bring us?”

Rather than start with the target in mind start with the outcome in mind, then ask what you need to achieve that.

If you set the target by reference to the current baseline you are going to limit ambitions and let the current technology drive. Instead think about the outcome and what that outcome looks like, then work back to understand what needs to be done and options for doing it.

Enjoyed this post? Subscribe for updates and download Continuous Digital for free

Books to be Written – yippee!

Books to be Written

I’m delighted to announce Books to be Written, my book about writing books, my guide to writing, producing, publishing and marketing you own masterpieces – if finished! Is published! Is for sale on Amazon – both print and e-book version.

This is available at a special introductory price of 2.99, thats $2.99, €2.99 or £2.99 – the offer will end next Friday, 24 March so get it now.

How many OKRs should a team have?

“How many OKRs should a team have?”

“Can a bigger team have more OKRs?”

These are among the most frequent questions asked about OKRs and I will answer both here.

First question, how many? 3. My answer, my rule of thumb: three.

Better still: one, 1. Fewer is better than more

But people seem to want more, so if you twist my arm, inflict pain and I will give in, I will admit I lied and say four, yes 4.

You should be able to count the number of OKRs on the fingers one hand. 18 is too many, 10 is too many, even six is pushing it.

One OKR is probably “OKR Zero”: the business as usual OKR which highlights the revenue protection and support work a team does. “DevOps” in modern software parlance. (See Succeeding with OKRs in Agile for the full description of that.)

Another OKR might be nominated by the team themselves to improve work effectiveness and efficiency. For a software team this might be something like retooling the delivery pipeline or addressing “technical debt.” For a customer service team it might mean adopting a new improved ticketing system or undertaking more training to increase team capabilities. (Again Succeeding with OKRs in Agile discusses this.)

Which leave two OKRs, or perhaps just one, for the main business need usually nominated by the product owner type person. Not a lot. One might be the primary, high profile, most effort, objective. While the second is, well, secondary.

Put like that it doesn’t sound a lot. OKRs, unlike user stories, are big and meaningful. They create outcomes which deliver benefit.

The logic here is that it is better to achieve one thing completely than several things partially. The aim should be for “short and fat” working over “long and thin.” The sooner something is completed the sooner it can generate benefit. The sooner it can generate benefit the sooner it can pay back the time invested and the greater the return on investment.


One of the key benefits of prioritizing OKRs is that “things can fall off the end.” Suppose a team has the four OKRs just suggested:

0. Business as usual

1. Primary thing

2. Secondary thing

3. Team improvement

Now suppose that they are forced to take on four more:

4. Something else

5. Another thing

6. Sally’s thing

7. One more thing

When prioritisation is disputed and all are considered equal, then there may well be some progress across all eight but none are completed. If they are prioritised as above then: business as usual is covered so the team don’t slide backwards. The primary objective stands a better chance of success than anything else. In fact, the further ones goes down the list the less likely it is to be achieved. (Sorry teams.)

Remember: the aim of OKRs is to create beneficial outcomes. Simply starting more work, creating more work in progress does not contribute to this goal. In fact, those familiar with Little’s Law know that more work-in-progress has the opposite effect. So adopt the Kanban mantra: Stop starting, start finishing.

When OKRs are prioritised in ascending order, with no duplicates, then above some point it is pointless to add more. Adding more only increases the amount of time needed to set OKRs and the disappointment when they are not achieved.

Even so, adding a tenth or eleventh OKRs to a team which can only really achieve four might be the path of least resistance. However, there is something slightly dishonest about it, more importantly, it misses the opportunity to have a strategic conversation.

Can a bigger team have more OKRs?


Remember the goal of OKRs is to create focus. When a team is bigger, say 16 instead of six people, it is more difficult to achieve focus. Therefore, bigger teams benefit more from fewer OKRs.

Focus is not divisible: an individual can focus on one thing. Maybe two, maybe drop everything for an emergency. But they cannot focus on 10, or even five. More work to do simply increases cognitive load and makes it more difficult to do anything.

If a team is regularly called upon to do 10 different things the solution is not to set more OKRs. The solution is something else.

This rule also applies if you lengthen the OKR cycle. If you set 3 OKRs for a 10 week cycle you will also set 3 for a 15 week cycle. Often, having more time make it more difficult to focus. How often have you missed an appointment because you had plenty of time? Yet when you have just enough you don’t let anything get in the way.

Enjoyed this post? Subscribe for updates and download Continuous Digital for free

Digital transformation stuggles

“Any advice on how to bridge [the IT/Business] gap? Are there any rules/guidance on how a technology dept should be defining/presenting products to business functions in this context? Also, guidance on the relationship between projects/products in this context?”

I’ve received these questions from a reader who finds themselves inside a company undergoing a digital transformation. Actually, they describe the situation in more detail and there are questions about the differences between products and projects, the role of BAs and how to organise the whole place.

Let’s start with Projects v. Product

Projects have end dates – or, at least, are expected to end. Projects are usually a batch of defined work which is expected to bring about a defined outcome. Projects may run past their expected ends, may expand in scope and may fail to deliver the intended benefit but while managed as a “thing that will end” they remain a project.

Products are ongoing, in a commercial environment products continue to deliver revenue and continue to require work.

In the pre-digital age a project might developer a new product, the project ends and the thing is passed to manufacturing, or service agents, for delivery. In the digital world this doesn’t happen. Products require continued attention. This may be to keep them competitive – add capabilities competitors have; or to keep them operational, e.g. update libraries which have security flaws.

With digital products it is hard to define when new development gives way to “manufacturing”. Techniques like Lean Start-up, Minimally Viable Product and Product Discovery exploit this ambiguity to leverage learning and in-market learning. Before digital this “expeditionary marketing” technique was expensive.

There is a difference in funding too. Projects are typically funded in their own right (how much work is involved? what will that cost?). Conversely the teams which support product teams should be funded in their own right and trusted to do what delivers benefits. Product teams should be able to demonstrate at the end of the funding period that they have delivered more benefit than they cost.

Inside corporations IT Departments used to delivery projects which aimed to improve business effectiveness or support a non-digital product. In the digital corporation the business is the technology and the technology is the business, it no longer makes sense to separate technology departments from the business. The need for rapid feedback loops between “the business” and “the technologists” means that they are one team. Anything that gets in-between slows down the processes and hinders communication, and thereby damages competitiveness.

This means that digital product teams are responsible for sourcing and deciding their own work. Whereas before the business would decided it wanted to do an IT project and the IT department would be expected to deliver it now, the digital product team would spot the need or opportunity to change the product and decide to take action. They reason what using their resources to enhance the product will deliver more benefit than it costs.

The digital product teams will contain both the “supply” skills to do the digital work (e.g. programmers, testers, UXDs, etc.) and the “demand” skills to understand customers, monitor market changes and determine responses (e.g. product management and business analysis). The exact mix of inward facing BA skills and outward facing product management skills will vary depending on the product and market. Deciding what to do is product ownership, and the person task with making the “what shall we do next” decision is a “ProductOwner”. They may be supported in that role by additional BAs and/or Product Managers.

But all this doesn’t mean that projects cease to exist. Not everything is a digital product – the company may want to move offices and the move itself could be a project.

There may even be projects which impact digital products. For example, the company the new office needs a new phone system and decides to avoid the cost of laying cable by using a virtual VOIP system. This requires software on desktops plus audio equipment. It may also mean the products running on those desktops need to be interfaced to the new telephone system and the interfaces to the old PABX retired.

A office move project like the may well use Business Analysts to investigate what is needed to make the move and resulting changes. Meanwhile, the digital product teams, who may not even know an office move is planned, are unlikely to see the telephony changes early. So at some point the office move BA will need to work with, and inject work into, the product teams.

Because projects come and go, it may be that some BAs rotate between projects while other BAs are embedded in product teams. However, because digital companies will have more products and fewer projects it is likely fewer floating BAs will be needed while more remain with their teams. And because products have an outward facing, customer, dimension, many of those BAs will want to acquire some product management skills.

The product teams will probably have a stream of product development work they want to pursue to make their product even better. They will also have “business as usual” work to keep the product operational. Add to that the work arising from the projects that demand attention and you have a lot of work to do. Rather than privilege any one stream of work its it better to think of it all as “work to do”, work may come from different sources but it all gets done by the same team.

Where one team has to support multiple products things get more complicated. One product owner might be able to cope with them all it also means there might be several each with a different product focus. In these cases they either need to agree between themselves how capacity is allocated or, more likely, someone needs the authority to make those calls.

Ultimately the “IT department” and floating BAs may well go away because there are business lines, which are digital and are serviced by business focused teams containing all the necessary skills.

It doesn’t make sense for digital products to be run out of the IT department because digital products are more than just information technology, they are the business. You could say that the whole business needs to move into the IT department but really we want the IT department dissolved. Rather than structure a company as manufacturing, IT department, a marketing department, services etc. what we want to see is “Amoeba” teams which contain enough technical skills, enough marketing skills, enough delivery skills and so on.

That change isn’t going to happen overnight so while we are waiting to dissolve those different functional units companies can establish product teams where people from different functions work together. The programmers might still report to “IT” and the marketeers report to Marketing but success is judged at a team and product level.

In many ways what I’ve written here is a summary of the model I put forward in Continuous Digital: in a digital world the work is continuous, the product is the technology and companies need to restructure themselves accordingly.

Lets talk about money: the ultimate feedback loop

Pile of dollars

Money is information. I like to joke: “money is the best form of feedback.” Unlike comments in a retrospective, kudos cards, and SurveyMonkey results I can trade your information for something else and in so doing, give someone else feedback.

When someone buys your product they are saying “Your product is worth giving up …” – money in the bank, a nice meal out, a new car. You give them the product and they give you information. Money is a feedback, perhaps the ultimate feedback loop.

Within companies money also provides information. Money signals what the company values and who has power.

I worked as an agile coach with a Belgian company applying “the Spotify model” a little while ago. The leader of the tribe repeatedly told squads “you are masters of your own destiny.” He was keen, at least when speaking, on self-organisation, on squads taking control and aiming high.

One of the squads I coached decided the best way of improving performance was to improve quality: reduce bugs, reduce outages, make customers happier, improve code quality, etc. Then they asked for money for technical training and coaching. End of story.

The squad had no budget of its own. The tribe had budget but it was earmarked for something else. Asking for more budget was off the table. The squad only had power while they didn’t spend any money.

Team finances

Teams, development teams specifically, rarely get to see or talk about their own budget. In fact they rarely get to talk about money at all. It is funny, most of us live and work in capitalist in free markets societies. Success is judged by profit (or at least revenue), and the aim of the company is to make money for investors.

But day-to-day how much does anyone on your team know about the finances of your team? How much does your team cost per month?

What about your product: What does it sell for? What is the profit margin on the product? How much will that new feature you are adding earn?

While managers will often talk about cost-benefit “bang for your buck” and ask “how long will feature X take?” or “is it a quick win?” it is seldom quantified. If it is then it is probably only in days or weeks not pounds, shillings and pence.

Inside the company it is almost as if we live in a cashless communist enclave where money can’t be spoken of. People even say “Its all about money” as an insult – still they expect to be paid in money and (usually) want the company to keep doing so.

Informed authority

But what is devolved authority, self-determination, self-organization if it isn’t backed-up with the power to spend money?

How are we to make informed decisions if we don’t know how those decisions will effect cashflow? – while we might know costs how can we begin to talk about revenue without information. And how can we evaluate the impact of our decisions if we don’t see the bottom line?

I give my children a few pounds a week pocket money. They can choose to save it or spend it, I do my best to respect their choices even when I disagree. When it comes to bigger things, holidays and even clothes, Mum and Dad make the decisions.

If companies don’t open up finances to teams then they don’t trust those teams. They are placing severe limits on what the teams are allowed to self-organize. But in almost every company I’ve ever worked for, or with, development teams are treated like children and kept away form money. Even asking about money is frowned on.

Is it any wonder engineering decisions happen without reference to financial impacts? Why should we expect engineers to suddenly become aware of the cost of their decisions when actual costs are hidden? And there is no feedback loop?

Hourly efficiency

I can’t recall ever seeing a team with their own budget. Even a small budget would be an improvement (of course ultimately we want Beyond Budgeting but I’ll settle for imperfect budgets right now.)

I’ve long advocated Kazuo Inamori’s Amoeba management model. Inamori points out that in most companies teams get no feedback on their financial performance. In amoeba management, hourly efficiency reports are used to control costs and allow teams to make their own trade-offs on expenditure – not unlike beyond budgeting in fact. (In Kyocera hourly efficiency is calculated as: (revenue – (costs – wages))/hours.)

Unless teams have financial information they can’t make decisions. Back in Belgium I couldn’t quantify the cost of bugs because there was no data on salaries, contract rates, product contracts, support desk costs. I couldn’t put a value on removing bugs. But I was forced to put a cost eliminate those bugs. Consequently I couldn’t do the cost benefit equation and it was down to one man making a decision which seemed to favour some teams over others.

Talking of value without financial feedback loops is pointless.

Enjoyed this post? Subscribe for updates and download Continuous Digital for free

Is all management bad? Or is it just bad management?

There is an interesting piece in this week’s Economist about the poor quality of management in the UK, “For Britain to grow faster it needs better managers” (paywall). It suggests bad management is a large part of the productivity gap between the UK and other developed nations. Living in the UK, and having seen inside many British companies this rings true with me. I’ve long thought it was less a case of “In search of excellence” and more a case of “In search of mediocracy.”

Now that said, I don’t have an objective point of view: I’ve been involved with many “project rescues” or “turn arounds” (actually I quite enjoy them, call me!) in the UK but my clients abroad are normally more stable. I suspect this is selection bias: because I’m UK based it is easy to ask for help. Flying someone in from abroad is a barrier so only the better managed companies in Europe and the USA would do it. So while I might think UK management is bad it is entirely possible that it is bad everywhere. Indeed, I am sure there is bad management everywhere, and there is good management too; but in the UK the ratio of bad to good is higher.

The international agile movement doesn’t do much to encourage management to improve. All the anti-manager talk (“self managing teams”, “no project managers”, etc.) creates a barrier. It has long been my view that such anti-manager talk is largely a reaction to bad management and it is entirely possible that “no management” is better than “bad management.”

Simultaneously, “good management” can be value adding, people don’t push back on “good management” (even if it gets branded as bad just because it is management). Sometimes, making things better for the many means being unpopular with a few. The few will voice their complaints more loudly than the many will voice their praise, and often it is hard to attribute success to managers anyway.

What we miss

The common agile view of management as “a bad thing” misses two points:

First off: removing the managers will remove some management work but will leave a lot. Removing managers does not remove management work. The work which remains either doesn’t get done (worse still) or is spread around those who remain so everyone’s work gets disrupted. On the whole these people don’t want to be managers, so they are unhappy and don’t have management skills. They do have other skills – business analysis, Java, support desk, whatever – so now they are not using their most productive skills and are unhappy with it.

Second, and more importantly: removing managers does’t do anything to improve the skills of those who do management work. Whether this is managers in place or people who have to step up when managers are fired. In other words, all this talk of “no managers” stops us from improving management skills one way or another.

Yes, I think workers and teams should have a voice in the work they do.

Yes, I think we should make group decisions and take into account diverse opinions.

Yes, managers sometimes need to use authority but good managers spend more time nudging, enthusing, guiding, structuring. Occasional use of authority can help, over use undermines.

Yes, I think people can take more responsibility. Some of what passes for management work is admin that could be dropped, information sharing which could be automated, or managers making work for other managers.

But I happen to think good management recognises all those things and respects the expert workers.

Bad management ignores all those things and subscribes to the “Action Hero model of management”: you do this, you do that, I’ll siege the bridge, if I’m not back in 10 blow it all to kingdom come, move it!

The irony is, those who subscribe strongest to the “no management” meme will say “Let the engineers (or doctors, or designers, or whatever) run things” but when you do that you find a management style cadre arises who are experts in their own field. Being a senior engineer (or whatever profession) often means being a type of manager, they need their original skills but they also need some management skills. If they don’t learn new skills those people become bad managers.

Why is it hard to reduce WIP?

Turning to my second potential silver bullet: reducing WIP, work in progress. This is easy to comprehend but hard for people to action. Again optimism plays a role: because we are optimistic, and because we don’t like giving bad news people naturally tend to take on more work than they can reasonably do. Making this worse are members of the agile community who go about talking about “commitment” and “doing twice the work” which makes people feel they should be doing more.

Culture also plays a role. When people like to present a “can do” image, when hierarchy is important and when people are accustomed to doing a little of everything and saying “No, I’m fully loaded” then reducing WIP is harder.

People are reluctant to say they are “full” until they are very close, or even beyond, 100% capacity. But the problems with queuing work occur long before 100% is hit. Even leaving aside human cognitive capacity to juggle many things basic queuing theory tells us that as work increases, the variability in work (i.e. some things take 5 minutes while some take 5 hours) means delays will occur. As capacity nears 100% the system looses capacity to absorb the unexpected (someone is ill, a delivery is late, etc.) so predictability is lost and delays spiral – the “bull whip” effect.

Notice I say system: we all work within systems, not computer systems, workflow systems. One person’s heroic efforts count for little when they work in a saturated system. We end up like Boxer in George Orwell’s Animal Farm, saying “I will work harder”, we work harder, wear ourselves out and burn-out. Too often we forget the old agile principle of sustainable pace. (Watch Stockless Production to see this in action.)

Sponges destroy trust

Once it becomes clear that little is being delivered, and even less to budget and deadline, trust is loss. People are less willing to see work requests queue. They want to see action, any action.

In a rational system some work will wait until there is capacity, but when there is no trust people want to see their requests being worked on. So instead of a team working on a project for a month and then moving onto the next thing in sequence the lack of trust means everything has to happen in parallel, slowly. So, a lot of work happens at the same time, there are much higher switching costs, variability creates delays and management overheads rocket. The team becomes alike a sponge: work goes in but very little comes out.

This can all be particularly tough in start-up environments. In the beginning start-up often depend on a few founders doing ridiculous amounts of work. This culture of long hours and heroic efforts. It is thus hard for people to accept that fewer hours and lower WIP might create a better outcome.

This is particularly true when the founders are still in the start-up: inevitably they worked very hard at the start and they want to see that ethos in their employees. Their start-up survived because they chased clients and worked very very hard. Therefore the founders see hard-work and lots of WIP as the recipe for success. The last thing they want is someone saying “no, do less.”

The same ethos carries over to investors who want to see lots of action, lots of people running around being busy. And because in a start-up it is hard to know what will work it makes sense (portfolio theory) to work on lots of different things to find one that wins. Again this creates a culture of high WIP.

Aligned & misaligned feedback loops

For those seeking promotion it makes sense to be involved with lots of different work and cultivating a “can do” image. Being see as “Dr No” or shying away from work is unlikely to lead to promotion. So there are incentives to take on more work. And when such a person gets promoted than their theory of success is proven so they expect the same from others. Meanwhile, those who surreptitiously balance their work load, keep within their own capacity, beaver away and quietly delivery are less likely to be promoted.

The feedback loop promotes the wrong behaviours: each piece of work is viewed in isolation. Each one suffers its own delays and it is hard to see how one obstructs the another. The project model makes this worse because it disconnects funding (based on benefit analysis) from capability to do work.

If you are lucky you can say “Reduce WIP” and people will do it.

If you are unlucky then you need to build a feedback loop to show these problems, you need to start pushing back where you can, you need to start building trust.

See also: Two Unspeakable Silver Bullets and Why don’t people Test First?

Enjoyed this post? Subscribe for updates and download Continuous Digital for free – please share!

Why don’t people Test First?

In my last blog I describe two potential silver bullets: working test first and reducing work in progress. I finished by promising to discuss why they aren’t used more. This post briefly discusses why people don’t work test first, the second one, looks at why it is hard to reduce WIP, work in progress.

It is easy to understand why people don’t work test first: we (humans) are optimistic. Test first is hard and historically test comes at the end of a process. Because testing is traditionally (almost) the last thing that happens moving testing requires change which is counter intuitive and often perceived as risky. (That risk is very really for when work is sub-contracted: there is an incentive for the supplier to delay testing to make it harder for clients to change suppliers.)

The thing we call “Testing” has several parts. The first, should, involve working out what tests to do: test writing. Later those tests are executed (manually or automatically) against the candidate solution. If the candidate does not pass there is more work to do. While the test execution cannot occur until the is a thing has been created the tests themselves can be decided in advance. This is what I call test first: decide what tests you intent to perform. Thinking about the tests up front is an act of learning and informs the work of creating the solution.

Working test first requires thinking and it requires thinking about something we would rather not happen. Since we are optimistic we see this as waste, or something that should be done by people paid less than us. So it requires discipline to do it. You need to be able to project yourself into the future and ask “What will the result look like?” Thinking test first is often better done with others, e.g. pair programming or “power of three” analysis sessions, so keep each other disciplined.

While it is relatively easy to work test first when programming the skills required to write automated test first require some time to master. This skill still isn’t taught at most schools or colleges so people need to learn it later in their career. Since people are optimistic, they often lack the motivation to learn to write tests first so they never master the skills. Since they are always on the learning curve test first coding takes longer and they often give up before they master it. If they stay the course, if they master the skills then they will find that while coding may still take longer the elapsed time is less because they no longer need to fix things afterwards (“debug later”.)

(As an aside, I’ve long been of the opinion that when we get AI technology to write programs (which is now starting to happen) writing tests will become more important than code. While machines will write more code which executes and doesn’t crash there is still a need to test the code does what is wanted. If we have a good test set then machines can be left to iterate and mutate code until it passes the tests.)

Outside of code the testing skillset is less well defined and people are less accustomed to thinking about tests anyway. Consequently working test first is more difficult. Add to that the fact that there are many more parameters to consider, and people are more forgiving than machines and it become more difficult still.

So, while test first working might be a silver bullet it is not easy to adopt. But then, because it is hard to do it is also hard for your competitors to do which means test first can be the source of competitive advantage.

Next Why is it hard to reduce WIP?

Enjoyed this post? Subscribe for updates and download Continuous Digital for free

Verified by MonsterInsights