This morning, I found a great post by Val the C# Gal on the practice of “gold plating” your projects.
For those unfamiliar with the term, gold-plating refers to overbuilding a project in order to make more money from it. Val’s post raises a good questions: how much planning is too much? But gold-plating can extend way beyond planning. You can gold-plate your testing, running the app through situations that will never exist according to the business case. You can definitely gold-plate your architecture, as Val points out. Really, it’s possible to over-do pretty much any aspect of a project.
So how do you know when you’re doing enough, but not doing too much? The answer is going to be different for every project. To quote Richard Caetano, software development is an exercise in compromise management. Each project is going to have a unique set of forces affecting it. On some projects, it just might pay off to spend a lot of time building an architecture. On others, it might pay to spend an inordinate amount of time in QA. There’s no way to predict what your level of effort ought to be, and how to distribute that level of effort amongst the features, until after you have the requirements. And even worse, a lot of the project-to-project decisions need to be informed by the needs of the client, and clients often don’t really know what they need.
Most businesses do not run on any kind of a plan; they can’t tell you if it is within the realm of the reasonable that they might want to start capturing a new type of information within the next x months, or if they might need to stop capturing a certain piece of data within y years. And that is a tough spot to be in – over-build, and the client complains about the cost. Under-build, and the client will complain that you didn’t provide enough flexibility. The key is to put in sufficient effort during the requirements-gathering phase to be able to make an informed decisions, hopefully helping the client clarify his or her own needs in the process.
Val raises a tough questions that shows she’s truly thinking about the craft, which is good. But the sad thing is that her question is one of the many questions that can only be answered with: “it depends.”