Let’s start with a Wikipedia definition:
Typically, “pork” involves funding for government programs whose economic or service benefits are concentrated in a particular area but whose costs are spread among all taxpayers.
This week (for my day job) I attended a recurring gathering of companies meeting to decide what the next low-power wireless standard is going to be like. The subject of this post has nothing in particular to do with professional conferences or low-power wireless standards. You can go through the exercise and replace ‘companies’ with ‘stakeholders’ and ‘low-power wireless standard’ with ‘feature set’. In fact I want you to go through the exercise since it’s unlikely that low power wireless is of any relevance to you.
The highlight of this gathering was an intense debate about the choice of a particular component. Several alternatives were offered and dissected in nauseating detail. In the end the majority seemed to coalesce around one of the choices. In fact when the vote was taken more than 3/4 of all participants voted for it. That choice was then committed as a mandatory requirement, i.e. any product implementing the spec would have to implement this particular component.
I would expect that to be the end of it. However, what happened next was that one of the companies suggested that the runner up, which only 1/4 of the companies voted for in the first round, should also be entered in the spec as an optional requirement, i.e. a product implementing the spec could implement the other component, while still implementing the mandatory one.
The argument offered in defense of this addition was that the company had a large customer who insisted on the runner up option, and although said company would have preferred for it to be mandatory, they wouldn’t mind implementing both if they have to. Remarkably a lot of attendees found this line of reasoning convincing and proceeded to vote for adding the second choice as an optional requirement. After all, they already got what they wanted.
The fools! What nobody seemed to notice was the by bloating the spec with optional components that nobody by a few companies cared about, everyone was footing the bill.
Why do I think this seemingly harmless addition qualifies as pork?
- Bigger spec means bigger test plan and more resources required by all vendors during verification and certification of their products. Likewise, interaction of optional and mandatory features often leads to subtle bugs, increased complexity and everything that follows.
- We are talking about a wireless protocol spec so optional features tend to affect even those products that don’t implement them because everyone has to at least be aware of all the options. Ironically enough, one of the most important criteria for the original choice was its small code size, so the optional feature actually devalues the mandatory one.
- By voting for to make the runner up an option, all vendors effectively assumed the responsibility of explaining to their customers why their product does not implement it all. The majority has done itself a disservice by automatically putting itself on the defensive.
A product manager’s job is rife with this kind of minority-staged shenanigans. The boss wants to turn all yellow buttons into green ones. A vociferous user wants an arcane API hook. Engineers want it in Ruby. The compromises that we succumb to today may seem innocent enough, but that’s only because we thought about them for the whole of 5 seconds or while still intoxicated with our previous wins. And so on our watch and with our own timid approval, the spec, the requirements document, the backlog, whatever it may be at your organization, starts to get weighted down with pork.
As product managers our job is to optimize the resources to build the greatest possible value for the product that eventually hits the market. In light of this, it’s a no-brainer that every piece of pork should be viewed with extreme caution and as a possible threat to our most important function.
Letting down our guard and giving pork a free passage means that we too sign up to foot somebody else’s bill.