The term “Gold Plating” (when not actually referring to covering something with a thin layer of gold) comes from Lean manufacturing,
essentially referring to the process of creating a part better than what its
specifications require. Applied to
software development, it means putting more effort into a particular component
of the software that is not needed, such as an added feature, making a needed
feature unnecessarily complex, or unnecessarily fixing performance issues. There are numerous reasons why a particular
developer might choose to gold plate a certain feature, but some of the more
common are:
- Desire to meet a self-directed (and situation-agnostic) sense of quality
- Desire to avoid getting angry phone calls due to an application crash caused by rare circumstances
- Lack of understanding of what the end user actually needs
I’ve written about what happens when a developer has a misaligned
sense of quality in software in a previous post. It should be enough to say, though, that
those involved in creating software need to start defining quality as lowering
the cost per needed feature, not creating the best code base and/or user
experience possible. If a particular
feature is needed, then great, by all means do it. Nobody likes making or using mediocre
software. There are certainly cases when
that extra effort pays off in the long run.
Just be sure that you are putting this extra effort in because the user
needs it, not because the software team wants it.
I certainly can sympathize with the desire to avoid an angry
phone call with a user due to something the application is or is not
doing. Bubble-wrapping the application
is not the answer, though, for a variety of reasons. In this case, the
software architects and the business stakeholders need to have a frank
conversation about what risks are acceptable and which ones are not. The risk tolerance should change based on the
type of application involved. For
example, a software team should be much more careful about making sure that
every possibility is covered in creating an emergency responder system for a
building vs. creating a social site for a non-critical internal app.
Finally, a lot of gold plating occurs because the software
team genuinely thinks that a user would want that particular feature. However, most people I know (including me) do
a very poor job of understanding what it is a user wants without asking. To do a good job of understanding the
end-users needs, the development team must go to the end user and understand
what it is they are trying to accomplish.
Once you understand their goals, then and only then can you start making
educated guesses as to which features are needed and which ones are gold
plating.
If none of that convinces you, remember that 40% of software
features go unused according to a not-so-recent Gartner study. Not only does adding these features add to
the application the first time add to the costs of developing the product, but
the presence of these features adds to the cost of extending and maintaining
the product. If you are able to stick
only to the features that are needed, you will be able to reduce costs, increase
ROI, and lower your headaches in product maintenance.
No comments:
Post a Comment