Why gold-plating is a waste in software development?

Lasantha Polegoda
4 min readMay 1, 2020

--

What’s gold-plating?

To understand this, let’s look into below example requirement from a customer.

“As a goods distributor, I need vehicles to distribute goods from warehouses to supermarkets without delays and damages to the goods. “

Two automobile manufacturing companies were shortlisted among bidders and were asked to design and demo their models within the next 3 to 5 months.

Automobile company X designs and builds its truck in 5 months with a cost of 3000 USD.

Below is what they designed.

Automobile company Y starts building its solution and they came up below truck in 3 months at the cost of 2000 USD.

All the required quality tests were passed and it’s just fitting the user requirement.

Let me ask this question? If you are the customer which truck you select?

It’s obvious right. There no reason on earth to go for a high-cost solution when you have a simple solution that just satisfies your need with acceptable quality.

According to Wikipedia, Gold-plating is the phenomenon of working on a project or task past the point of diminishing returns. For example: after having met the requirements, the project manager or the developer works on further enhancing the product, thinking the customer will be delighted to see additional or more polished features, rather than what was asked for or expected.

What are the problems of gold-plating?

1. Additional features carry an additional cost

2. Additional features carry additional complexity to the existing products

3. Additional features carry additional risk to the production

How do projects fall into the gold-plating trap?

According to Steve McConnell in his book Rapid Development,

#28: Requirements gold-plating. Some projects have more requirements than they need right from the beginning. Performance is stated as a requirement more often than it needs to be, and that can unnecessarily lengthen a software schedule. Users tend to be less interested in complex features than marketing and development are, and complex features add disproportionately to a development schedule.

#30: Developer gold-plating. Developers are fascinated by new technology and are sometimes anxious to try out new features of their language or environment or to create their own implementation of a slick feature they saw in another product — whether or not it’s required in their product. The effort required to design, implement, test, document, and support features that are not required lengthens the schedule.

I think gold-plating can happen in anywhere in the software development process, it can be even in the testing as well. For example, a lack of confidence in the solution can lead a tester to over test the solution.

Can code refactoring be a gold-plating?

Well, I personally believe proper code refactoring is not a gold-plating. However, one can easily over-engineer it and gold-plate. For example, let’s say you can refactor some crappy code and achieve 80% of perfectness in 4 hours. To improve it any further it usually takes massive effort compared to the initial effort. So as a developer, you need to be wise enough to identify the sweet spot where you need to stop refactoring. This way we can avoid gold-plating.

Another common reason for gold-plating is lack of need analysis. In the above example of goods transportation requirement, as a requirement owner or business analyst if you don’t understand the customer’s primary need for “goods transport from warehouse to supermarkets” you can always end up with fancy features. And these additional requirements always add huge debts to the projects.

How can we avoid gold-plating?

1. Proper need analysis. Learn and deliver value through Minimum Viable Products.

2. Make information available for anyone in the project so that, they can make decisions themselves. For example, in order for a developer to identify the limit when he needs to stop refactoring, he needs to access to the information like project plan, estimations, risks… etc.

3. Reward employees based on the value they create. This will encourage a behavior on employees’ focusing on creating value to customers rather than only focusing on doing their own tasks.

*Reference: Rapid Development by Steve McConnell

--

--