Building a Platform – Reductive Feature Design
I have spent a lot of time over the past year (really over the last 20 years) looking at the keys to success and failure that have been experienced by certain technologies and platforms. Many product organizations take a kitchen sink approach to delivering features in their product. This can lead to a “jack of all trades, master of none” perception in the marketplace. It can also confuse users as to exactly a product should do. On the flip side, you have groups that release products that seem to be incomplete.
Right now I am a fan of Apple and its approach over the past decade to personal electronics. They seem to have taken the approach of delivering a chunk of value, letting people adjust to it, and then have the customers say “it would be really nice if this thing did x.” iPhone OS 3 gave us the ability to cut / copy / paste. This function point has been ubiquitous in computing for the past 2 decades, and yet Apple decided not to include it in the original release. The same is true with multitasking – even the Palm platform in the mid 90’s allowed a form of multi-tasking (such as it was) and yet Apple it’s waiting to the 4th generation of it’s OS to make it available.
When you first look at this, you may think “Gee, they just wanted to lock in a monetary stream of upgrades.” But if you think further, they have really been delivering fully baked features at the time they really become needed. When the iPhone app store first opened, there weren’t enough apps with functionality that would make you want to multitask. Who knew how quickly apps would catch on that people would want to copy / paste? Apple has done a great job of delivering features at a pace that allows the ecosystem to adjust, and the customers to understand how to use it.
Hopefully, on the next generation of our intranet platform, we can duplicate this success. For now, I’m calling it reductive feature design and I think that it can be viewed through the lens of technical and organizational readiness. If either of those two factors truly aren’t ready to introduce the feature, it should be removed from the version stream and placed into the backlog. Now to pitch it to the rest of the folks and see if it flies…