December 23rd, 2007
Ever felt like that? I often do. I’m using a PC for very different purposes. Music, graphics, development, games, internet and writing are some of my interest. Each of them requires me to have few applications installed: from simple tools like music players and format converters to development environments and office suites. So I’m constantly juggling with about hundred software products.
We all know that software is never finished. It is constantly in development. Features are added, interface is changing, bugs are corrected and product grows. In ideal world our software with time would be better, easier to use and more reliable. In ideal world.
In our world this isn’t so. Every now and then I need to stop using software I used that far and find a new solution. It seems that every piece of software have some sweet point in it’s development when everything works as it needs to, when it looks good and when bugs are at minimum. In ideal world I’ve mentioned before this would be the version 1.0. In reality, this is the last good version.
Development team did what they wanted to do: make a great software. Problem now is what to do next. If software is great then they don’t need to do anything with it except some minor changes like adapting the software to new hardware or operating systems. They also want to add some new features their competitors already have. And that’s the time they started “the death drive”.
Here’s the list of software i abandoned after it was “improved”:
- ICQ
- ACDSee
- Windows Media Player
- Adobe Acrobat Reader
- Nero Burning ROM
- Paint Shop Pro
- Scanner/printer drivers
Adding a feature makes software bigger. Also, new features are never added with the efficiency of original ones. Software core is rarely written so that it’s extensible without limits. That makes it slow before any feature is added. Rather, it’s designed to support existing features and planed future ones. When unplanned feature is implemented, it’s probably only duck taped to the existing core. Nobody wants to change the core and this is a no-no deal. If you change the core you could break what’s already working fine. If you just duck tape a new feature on the existing core you can never fully integrate it and it can’t be efficient like existing features. And when you add too much…
You can see things are getting out of hand when file archiver becomes backup tool. When FTP client look more and more like web site manager. When image viewer tries to take care of your photo workflow. When instant messenger offers a collaboration tool. Actually, whenever a software main purpose cannot be explained in one sentence it tries to be something it is not.