One of the most difficult things when developing an application is knowing when to say "no more", or at least "not right now". It's always tempting to add another feature. It's too easy, in fact.

At least when we're building something with three dimensions, it's obvious when we start adding unnecessary features. We have to buy more materials, spend more time measuring and cutting and modifying them, and everyone can see what we've done - for better or worse!


Adding to a program isn't as obvious unfortunately. Instead of buying materials, someone has an idea. Instead of measuring and cutting, someone thinks about the idea. Instead of everyone seeing what's been done, there's just a few more ones and zeroes on a disk somewhere, out of sight and out of mind. It's easy to forget it's even there.

But no piece of code is written in isolation, and no matter how careful the author is, the interdependencies are there and real. Right about the time a highly requested feature that could be a big win comes through, the hidden "feature" no one asked for may raise its ugly head. And someone - maybe you, maybe the person who inherits your code - will need to figure out what to do with the thing that no one uses but is now preventing the Very Important Feature from being implemented. What looked so good before is now just a trap everyone tries to avoid.

In other words, if you have a really hot new idea, sit on your hands and think about how vital it really is. And if someone else has the hot idea, and you have any say in the matter at all, encourage them to do the same. Your future self may thank you.