Do you remember the last time you moved? Do you remember packing some boxes so full, that they were too heavy to lift after you were done? It happens. Especially books and vinyl records. When you are packing “regularly shaped” high density items, the volume of the box may be too large to contain the weight of the items. Or it may be that the lifters (I mean you) may not have enough momentary work capacity (strength) to carry the box.
Sometimes, well intentioned users or subject matter experts or product owners or business analysts simply enjoy coming up with good ideas for making things better. These ideas ALL end up as requirements for your software, and become like barnacles of the hull of the ship. Each of them individually isn’t a big deal, but when enough of them are attached they slow the whole thing down. And… …just like packing books in the box you find that you can’t carry the box anymore. You struggle to make the design process efficient, because the requirements are full of extra stuff.
When working on specifications and requirements for software, sometimes we miss the difference between being thorough and gold-plating. Being thorough means that we have thought through all of the needs and wants, considering how they might be executed, contemplated the cost of including them and the cost resulting from excluding them, and thoughtfully recommending a minimum solution, and some extra value options for consideration. Gold-plating means that while you have thought through everything, you may not have separated needs from wants and/or not factored in the costs of including vs. excluding – gold-plating is when you try to meet as many needs as possible, without considering the utility that will only be realized in time.