Note: Please keep in mind that this is a rough draft, it's just what came to my fingertips when I felt motived to type. Please comment on ideas and perhaps suggest structure, rather than mechanics. This is an article I will return to finishing. Thanks!
I've been thinking about my personal development style quite a bit lately, and starting to question it. I've always been one to reserve my progress until there is a deliverable unit ready to ship. It's a very idealistic way of doing things, and also a very pro-consumer and efficient way of doing things; but it doesn't work very well in the real word, or at least in my world of self-motivated independent software development.
A major source of motivation is people being excited by your project and asking about when it will be complete, wanting updates, etc. When nobody cares, other ideas that seem more practical become more and more attractive, and eventually I begin to pursue it, and it becomes the new focus. With a new focus, the old projects are inherently abandoned, and sometimes picked up a few months, or in some cases even years later.
It's a shame that I have abandoned some of the projects that I have over the years, with never so much as a glimpse of them, and seeing projects that do the same thing. Sometimes I wish I could just show them my old work and say 'hey, can I join your team?' but that's just kind of lame.
So anyway, off my personal rant/tangent, in the business world (or at least the part of it that I have been in) I have learned that haste and waste is a much more effective method of delivering software. The more I think about it, the more sense it makes, even from an economic standpoint. Let me explain:
The number one fundamental Microeconomics 101 (and NOT Accounting)is "opportunity cost." Opportunity cost is simply the cost of doing or not doing something. For example, if you call in sick to work, you know that you're down X dollars for the dat, even though you didn't actually pay that money. You are down because you had the opportunity to get it, but decided to forego it in favor of resting and being able to deliver work you can be more proud of tomorrow, or some other reason which is worth more money than your daily wage. So, you have managed to take something of subjective value and put an actual dollar ammount on it.
What's the point of all this? Well, think about TIME; time is money. If you opt to go through a "proper" development process, it will take much more time to bring a product to market than if you were to just throw together a solution that works and roll it out, and fix it later. Sure, it costs more time & money in the long run, but it also buys you the competitive edge, which is equal to more money. So the questins become: how much time does shitty development buy, and what is that time worth? how much money do we save or lose in the long run by developing two version of the product? This would require a cost/benefit analysis, (which of course has a decreasing marginal cost as abaility to make estimates improves. assuming a proper method is employed which allows for each subsequent estimate to take less time, but that is beyond the scope of this article) [get into what this would entail and why we can assume this]. lost my train of thought.