No.
Once upon a time, a wise marketer said: "Revolve your world around the customer and more customers will revolve around you." Agile methods promote this notion of making the customer the center of attention. And one way agile teams have been trying to achieve that is through creating business value for the customer.
As I mentioned in my previous blog post, my observation is that many software practitioners believe that business value has to be somehow linked to the customer. I personally think that this notion is false and it is causing many conflicts in the way we plan and prioritize work items. Take refactoring as an example. Sometimes in the midst of an iteration, somebody in the team cries out loud for people to refactor their code. But what does refactoring give to the end user? Nothing. By definition, refactoring should not change the external behavior of your system. Therefore, your customer does not give a shampoo whether you refactored or not.
Another important example is when software platforms are involved. The work that is being done at the component level (i.e. services, search engines, filters ... etc) may not be directly visible to the customer. Component teams often need to spend time redesigning their components so that a wider range of feature teams may be able to use them in their product development. This redesign effort may not in any way create business value to the end customer. So should we abandon refactoring or redesigning altogether?
If you really think about it, the main issue here is the word 'business'. There is no disagreement that all of the above does create some 'value'. But to which 'business'? Some work items (e.g. new features) will create value to the customer's business. On the other hand, some other work items (e.g. refactoring) will create value to our business as a software company. Needless to say, maintaining and testing clean and well-refactored code is easier and faster than dealing with spaghetti code. So, refactoring does provide value to our business. It is just not visible to the customer. In the same way, having well-designed components makes it easier for more feature teams to use the components in their product development. Reuse, if done right, provides significant value. But again, not to the customer, but rather to us developers.
How we use the term 'business value' hugely affects the culture in the software organization. If we allow a looser definition of what business value is, teams will no longer be puzzled thinking about why on earth we need to refactor or produce regression tests or write a wiki or or ... Business value ought to mean more than just a happy customer.. Business value is also about making your business better.
No comments:
Post a Comment