Development tip: never remove features

If I have learned something since starting developing and selling my own software, then it is to never, never, ever, remove a feature when creating a new version of your software. No matter how stupid or irrelevant or buggy you think the feature you want to remove might be. Because there will be people who use this feature. And who will absolutely be pissed about you removing that thing they need.

I think this is also one thing which Microsoft didn't get, when they decided to remove the start menu in Windows 8, and replaced it with the fucked up start screen, which doesn't even contain half of the features of the start menu.
If you need to remove something, then don't remove it completely, but hide it instead, so that if users who rely on this feature can at least find it and continue using it.

On a related note: One similar important thing I learned as freelance developer is this: although it might be tempting as programmer to rewrite a whole, old app or parts of it completely because it is now absolutely fucked up and not maintainable anymore, don't do it, for the same reason. People rely on the strange and probably even buggy features deep inside of old software, and you can never reproduce all of them easily in a rewrite.

five comments, already:

Oh yes, the blessing of having to write bug-compatible code…

It gets particularly annoying when stuff was officially declared as “buggy, incomplete, just to try out” and still people start depending on it, so the major overhaul planned will never come, and the crappy first incarnation sticks around forever…
xaos - 18 04 14 - 10:35

Amen brother. Same problem with alpha/beta-versions: “This feature was actually just for testing and/or debugging” – “But it was soooo useful…!”
KIENI - 22 04 14 - 11:31

Never removing useles, buggy features? Just like OpenSSL never did?
Tazo - 23 04 14 - 15:39

The problem is that you released the code in a faulty state to begin with and forced people to adapt to it instead of fixing the problems before they could do so. A broken feature is worse than a missing feature, not because it doesn’t work right, but because people will get used to it being broken and forget that it’s not supposed to work like that at all. And when you fix it, they’ll just complain because they have to get used to it all over again. Do it right the first time or don’t include it.
Render - 18 06 14 - 18:29

Render: Are you talking about something specific?
niko - 20 06 14 - 04:48

Remember personal info?
Email (optional):
URL (optional):
Enter "layered" (antispam):
Comment:Emoticons / Textile

  ( Register your username / Log in )

Notify: Yes, send me email when someone replies.  

Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.
Note: If you type in your email adress above, it will be visible to other visitors, although it will be hidden for bots using javaScript.