My new thermostat has a myriad of features, including a sensor that will tell me the outside temperature. The thermostat doesn’t use this information – it just reports it, with lots of information about the climate inside my house (temperature, humidity, etc.)
One problem: the outside sensor is in a spot that gets the full morning sun. This means that this morning, when the temperature was actually 30 degrees, my thermostat said it was 61. I have seen the reported outside temperature be off by more than 40 degrees!
There really isn’t a good alternative location for the sensor. They could build a little shade around the sensor so that it wouldn’t be in direct sunlight, but that is overkill and would mar the look of my siding.
Okay, but what does this have to do with software? There is a point. I promise.
I’m sure the person who designed this thermostat thought providing the outside temperature would be really great. But features add complexity. And features have to be supported.
In this case, there were extra installation steps for the installer. And then there is the explanation for why it will sometimes be wrong. And the additional work if I decided I wanted them to build a sun visor for the sensor.
This is true with software too. Every feature you add to your application increases not just development time, but testing time, learning and training time, documentation time. So the decision to add a new feature should be weighed carefully. Is it worth it?