Code by Kevin, Programming, code, business, and other pursuits
Kevin Walzer, software developer.
Subscribe to RSS Feed
Get a syndicated feed of my weblog.
Site design: Skeleton
I've been working on my list of forthcoming program releases, and I've learned something: it's better to keep the features for each new version limited--or perhaps focused is a better word--so that I can have a manageable process for getting the new version done.
The problem is that I usually have more ideas than time. It's not hard to find cool new things to add to programs. For instance, NameFind is due for a UI makeover to make it more polished and Mac-native. An extensive re-design of the GUI, without extensive new functionality, is a big job in itself. And simply integrating basic improvements that I'm adding to all of my programs (such as a nicer-looking password dialog) involves modifying and/or ripping out a lot of redundant code.
But I still have lots of new ideas! I've figured out how to get Mac-native icons displaying in my programs, for instance; this was tricky, because Tcl/Tk doesn't support this out of the box. I want to integrate this into NameFind. And I want to change the way the program notifies users when a search is complete, from Growl to a bouncing dock icon. And, at a more basic level, I want to offer more options for searching your system for specific files. That last idea could involve a major re-write--or a major expansion--of NameFind's core code.
So, how do I proceed? Adding all of this stuff at once would take months. It would make NameFind a really cool application, but until it's released, no one could try it (or buy it). That might be fine if the current version were selling like hotcakes, but, well, it's not. I see getting at least some of these improvements out soon as the key to helping to jump-start sales.
So, I've decided to take an incremental approach. The GUI redesign is the major new feature that will be included in version 2.0 of NameFind; that, and some under-the-hood improvements that I've been making to speed up the search process. This will allow users to benefit from a dramatically better-looking, faster, and (hopefully) easier-to-use application. The other ideas will be phased in, gradually.
And this approach--phasing in ideas gradually--is turning into the approach I'm going to use for all of my programs. By limiting the scope of each new release to just a couple of ideas, it will make it easier for me to code the ideas, test them, and make sure they are rock-solid. Huge updates are much more difficult to test, take longer to code, and are more prone to bugs.