Building products involves making countless decisions. One of the biggest is defining the functionality and how it should be exposed to the users. In my mind, answers to this question like on a spectrum. On one extreme you have the “take what you can get” approach where the functionality is exposed with no customization and no advanced features but the experience is optimized for one specific use case. As an example of this think of the original Google search - a single search field, minimal search functionality, and two buttons. On the other extreme you have the “customize everything” approach where you think of all possible use cases and provide options to allow users to do what they want. An example of this is Microsoft Word - most people use a fraction of all the functionality yet there’s a ton hidden away behind some menu.
Consumer facing products generally fall into the first camp since you want them to be as accessible as possible while enterprise and productivity products fall into the latter camp where it’s about optimizing for power users. I understand the value of both approaches and often times you can get away with the experience of the former while providing the functionality of the latter. Google search is an example of this - it’s a single field but after doing a search you have access to the advanced search functionality to refine your search. Also, if you’re a power user you know there are a few things you can type in to the search bar to further control your search - for example using quotes for an exact match or limiting the search to a single site.
It’s rare that you find a product with fewer features in newer versions. The majority of the time products get more complex as functionality is added to make the product more appealing to a wider set of users. This makes sense when making an isolated decision but it also feels like death by a thousand cuts since each option makes the product just slightly worse for a majority of users. As product managers and engineers we should be extra thoughtful in taking the easy way out and adding an option to expose a different behavior. This option will be incredibly difficult to remove and we should take the time to understand the underlying problem and use case to determine whether the option is something that’s necessary or just us being lazy.