Most of the time when business domain experts come and ask for something they very rarely tell you and express it in terms of the value they want, they often come up with a half-baked solution. What we actually want though is something which is a set of examples that can drive the Agile development process but driven by value. Feature injection has three very simple steps, first step is find the value, second step is inject the features, as we call it, and the third step is break the model. What that means is a business person comes to you and says “I want a tea bag”, well, no one has ever wanted a tea bag, what they really want is a cup of tea, so when they ask for a tea bag, we say “why do you want a tea bag?”, “well, I want a cup of tea”, once they’ve asked for a cup of tea we can say “why do you want a cup of tea?”, and they go “well, because I’m thirsty”. We can now present them with a number of different options in terms of how to make them un-thirsty, how to quench their thirst and the value is in the quenching of the thirst. So we practically decide on the value is the quenching the thirst, we want to have a cup of tea which is the output of our system, once that we’ve done that, we’ve done the first step, we’ve identified the value.
The next step is to inject the features. This really is a case of rather than saying “let’s build the tea bag” and then when you deliver the tea bag the user says “well, now I need some hot water” and when you’ve delivered the hot water, they go “well, where is the cup to put it in?” What we do is say “right, we want a cup of tea, in order to get a cup of tea, what do we need?”, that’s a much easier question than simply just delivering the tea cup and going through that iterative steps. You go “right, I want a cup of tea, to make a cup of tea I need to have these features in my system: I need tea bags or perhaps tea leaves, I need hot water, I need a cup and I need milk”. That is injecting the features into the system; it’s the Kanban cards flowing backwards across the factory in order to pull the values out that we need. That is the second step which is you start with the output and you work back to the input. If you ever do analysis and you start with the inputs, it’s a very painful process and you end up in analysis paralysis. If you start with the outputs and move towards the inputs, it’s a very simple process and you know at each stage what is needed.
The third step is you ask for a cup of tea, well, what if we ask for other things, what about a cup of coffee, is a cup of coffee similar to a cup of tea and it is, we don’t need anything new in the process; how about a hot chocolate, that’s the same; but then we get to things like a can of coke, is a can of coke the same as a cup of tea and what we’ve done is we’ve broken our model because in order to deliver a can of coke it needs to be cold, so we need a fridge or a chiller of some kind. And so that is the third step of feature injection, which is break the model, find different examples that actually break your processing model and as a result you can fix it and improve it.