# Gold Plating

**URL:** <https://discourse.codinghorror.com/t/gold-plating/1242>\
**Category:** blog\
**Created:** [December 7, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/gold-plating/1242 "2004-12-07T00:00:00Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![codinghorror](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/codinghorror/32/36371_2.png) [@codinghorror](https://discourse.codinghorror.com/u/codinghorror)\
**Post date:** [December 7, 2004, 12:00am UTC](https://discourse.codinghorror.com/t/gold-plating/1242/1 "2004-12-07T00:00:00Z")

</div>

One of McConnell's [36 classic development project mistakes](http://www.codinghorror.com/blog/2007/06/escaping-from-gilligans-island.html) is gold-plating. It's also repeated in the list, so I guess the risk of falling into this particular trap is twice as high:

* * *
This is a companion discussion topic for the original blog entry at: [http://www.codinghorror.com/blog/2004/12/gold-plating.html](http://www.codinghorror.com/blog/2004/12/gold-plating.html)

---

<div class="post-metadata">

**Author:** ![xavier](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/x/2bfe46/32.png) [@xavier](https://discourse.codinghorror.com/u/xavier)\
**Post date:** [April 10, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/gold-plating/1242/2 "2008-04-10T00:00:00Z")

</div>

Jeff, nice post, came across it and referenced it in my blog post. Hope you don’t mind. My post is here  
[http://www.xavierpacheco.com/tech/2008/04/09/TechnologyVsDeveloperGoldPlating.aspx](http://www.xavierpacheco.com/tech/2008/04/09/TechnologyVsDeveloperGoldPlating.aspx)

---

<div class="post-metadata">

**Author:** ![Tom](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/t/3d9bf3/32.png) [@Tom](https://discourse.codinghorror.com/u/Tom)\
**Post date:** [July 16, 2008, 12:00am UTC](https://discourse.codinghorror.com/t/gold-plating/1242/3 "2008-07-16T00:00:00Z")

</div>

Sometimes it’s fun to implement such features - just because you can, because it benefits you, because it’s different from the usual work, because it gives your software a little character, because you can do something cool maybe with very little effort/risk, and so on. I’d never heard the term gold-plating before but I’ve done it - at least, I think the following would probably qualify:

- Added automatic mic cut-off to my VoIP client when pushing the noisy shift paddles on my old ACT LABS steering wheel (only when speech was not already in progress).

- Added LCD display output to my email client for the LCD displays of two Roland MIDI modules, one of which I didn’t own, and the other I rarely had connected.

- Added automatic continuous spinning animation of all 3D objects in the scene when pressing a key to a commercial application that really didn’t need such a feature. (But some customers found creative uses for it!)

Certainly gold-plating could easily be a mistake in some situations. But sometimes, I think it can be a bit of harmless fun and even have surprising benefits.

---

<div class="post-metadata">

**Author:** ![Y\_\_Kim4](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/y/ba9def/32.png) [@Y\_\_Kim4](https://discourse.codinghorror.com/u/Y__Kim4)\
**Post date:** [July 14, 2009, 12:00am UTC](https://discourse.codinghorror.com/t/gold-plating/1242/5 "2009-07-14T00:00:00Z")

</div>

I guess that rule applies when ‘un-necessary’ is throughly defined.

---

<div class="post-metadata">

**Author:** ![Rbstoker](https://discourse.codinghorror.com/letter_avatar_proxy/v2/letter/r/b2d939/32.png) [@Rbstoker](https://discourse.codinghorror.com/u/Rbstoker)\
**Post date:** [November 2, 2010, 12:00am UTC](https://discourse.codinghorror.com/t/gold-plating/1242/6 "2010-11-02T00:00:00Z")

</div>

As a Program Manager for major systems development, my approach to avoid “gold plating” or “requirements creep” is to recognize and document potential enhancements, but postpone them until a later phase, spin, increment, or delivery. Software should be done the same way. Build the basic capability, verify it works, and then add more to it.

---

<div class="post-metadata">

**Author:** ![benlakey](https://discourse.codinghorror.com/user_avatar/discourse.codinghorror.com/benlakey/32/36386_2.png) [@benlakey](https://discourse.codinghorror.com/u/benlakey)\
**Post date:** [May 4, 2014, 8:46pm UTC](https://discourse.codinghorror.com/t/gold-plating/1242/7 "2014-05-04T20:46:04Z")

</div>

I think that refactoring in order to satisfy a particular goal is not gold-plating whereas refactoring just to refactor is. Refactoring is a crucial part of keeping a codebase clean, but it’s not something you do unless you have a need to make the code more malleable to solve the task at hand.
