Why Development Projects Go Wrong #1 - The Hidden Cost of Options
Oct 18, 2014
Designing a piece of software is hard. Taking account of everyone's needs while preserving a slick user experience can be a delicate balancing act. And when things get tricky, and keeping everyone happy seems impossible, the easy way out is often to introduce a configuration setting or user option.
"What could possibly be wrong with that?" You tell yourself. "We'll let the users decide, then they will all be happy."
There are many cases where adding an extra option is the right thing to do. But it's no silver bullet. Adding a new configuration option means that...
- The application is now more complex and will take longer to develop.
- The number of scenarios you should be testing just doubled, or tripled, or worse. This makes your testing cycle longer, not just for this release, but for every new release of this application, ever.
- When you deploy this feature into the live environment, you'll have to think through how to configure your existing user's accounts.
- You'll have to explain what this option does to all your users.
- Every time someone raises a support ticket regarding this feature, you will have to ask how the user's system is configured.
- Your application is now harder to use and has a steeper learning curve.
- You have now set a precedent and it will be harder to resist adding more configuration options in the future.
These drawbacks usually take some time before they are really felt, and they do not usually affect the Business Analyst or Solution Architect that decided to add the option in the first place. So it can take many years for a software designer to really learn that they're screwing the rest of the team over by making everything super configurable.
If left unchecked over time, the cumulative impact of adding too many configuration options can easily kill a software development project and turn it into an unmaintainable, poorly tested and unsupportable mess.
To avoid this fate, the people designing the software must commit to finding simple solutions to complex problems.
That takes hard work.
Anyone can find a complex solution to a complex problem. It takes real insight to find a simple solution to a complex problem. It involves going back over things again and again, even when you though you had it nailed. As the saying goes; "If I had more time, I would have written a shorter letter".