While reading through Mark Pilgrim's Dive into Python, stumbled upon this interesting thought, wherein he says that, when you 'plan' to develop a full -fledged feature for a software which will help in certain tasks, and if you end up coding a small version, make it just work rather than a completed polished 'as-per-plan' thing, then you are not only being inefficient, but you are being rude (to your customers). That's a very good thought. Most of times, I think of designing a software and when it reaches to level where it works, I stop there and move to next. The working thing, sometimes never goes past my computer.