There are few oversights from product management team when defining new features for the product. The first is that they assume that a feature is always going to be there in the product. The second is that they assume that all the users will like the feature and will need it. These two thoughts pose problems when the product hits the market. As a proactive solution it is the responsibility of project managers to force the product management team to define lifecycle for a feature and also force the development team to design this feature with options to turn-off or turn-on this feature and a way for users to opt-in and opt-out. It is also recommended to force product management team to do A/B testing for the new feature collect data and then make it available for all the users with opt-in/opt-out feature.
The development team should develop the feature in such a way that it can be turned off or on without any code change. The way to do it is by using a settings feature and use that to turn off and on the features. In some cases if the feature is to be retired then it should be turned off and add the task of removing this feature at code level into the technical debt. Create a new branch of the application in the source control system and remove the code for this feature and do the testing and then merge back to the main branch to release it. Having lot of unused code will make it difficult to troubleshoot the problems.
A/B Testing Ready
The development team should design the system and new feature in such a way that product management team can do A/B testing easily. This has to be woven into the product architecture. No matter how confident the product management team is about the new feature they must be disciplined to do A/B testing and review the results. If the userbase for the product is very high then A/B testing is a process to be followed diligently. If the development team is developing more than one variant of a feature then they must implement toggling of the feature or one or more of its variant without any code change. A task to remove the feature and its associated code must be logged into the technical debt list and follow the steps mentioned in feature toggling to undo the feature.
Personalization is one of the key differentiators for a product. While it is tough to provide detailed personalization features in product the least that a product should have is to allow users to opt-in/opt-out of that feature. The best example is the list of emails sent from a product to the user. The user should have options to opt-in/opt-out of the emails altogether or subscribe only to some selected categories of the email. Design the product in such a way that it provides ‘à la carte’ option for users to pick and choose the features they want to use. Implement app analytics framework to understand more about how your users use your product.
I hope these tips help you to avoid costly mistakes and reduce the friction between product management team and development team to deliver the features very efficiently and reduce the risk of providing bad user experience to your users.