Monthly Archives: August 2010

The Perils of Software Development

I’ve been in the computer industry for more than a decade. I’ve heard all the complaints about software support, all the bug reports, and all the grumbles about the evils of the big bad software companies.  Some of it I understood – but some I did not, until we began developing our own software. It has certainly been an education, and has deepened my appreciation for those who donate their software freely to the open source community.

First of all, software development is difficult. Only a fraction of the coders who start out to create a moderately complex piece of software actually finish it. Because it is often hard to figure out the best way to accomplish complex tasks. It is usually easy to write the first part, but like publishing a novel, all the final editing, testing, bug fixing, etc, to even get it reasonably stable, is a very time consuming, tedious work. The fun wore off LONG ago!

Of those that finish an application, even fewer choose to release it to the public. See, you can write a little piece of software for yourself, and get it working in your environment pretty easily. But once you release it and let other people use it, three things happen:

1. It now has to work in THEIR environment. That means on their operating system with their browser, or with their server configuration, etc. And individual settings, other applications running alongside, etc, can change the stability of the software. This is why software goes through beta testing, multiple release candidate stages, and why version 1.0 is invariably buggy. It just takes time, and actual use, for bugs to show up under a wide variety of usage environments. Bug fixing takes a tremendous amount of resources.

2. As soon as people get their hot little hands on a simple little app that was designed to just do one simple little thing, they want it to do MORE! And MORE, and MORE! They are simply never satisfied. Feature requests POUR in. Every person who uses it wants to use it in just a little different way. So you make an attempt to meet the reasonable requests, which sends your development costs through the roof – you not only now have bug fixing going on, you also have new features to write and test, and then bug fixing on THOSE.

3. Then, you have SUPPORT. You write a manual, that explains everything, and figure people will read the manual, follow the instructions, and things will work, right? Wrong. A good many people simply won’t read. A good many people who WILL read, won’t get it. And a good many people who do follow the instructions will make simple errors as they do so – typos, mixing the up order of tasks, or other simple mistakes that cause problems. And they’ll call YOU when it doesn’t work. You HAVE to help them – because you nor they really know whether it is human error or a software bug causing the problem until AFTER you’ve helped them. Support tends to be very high with new software – it can take more time than the actual coding. You have the choice of either NOT including support (or making it a paid extra), or of pricing your software to include a reasonable amount of average support time (and hoping that reality does not exceed that average). We would love to sell our auto-installer for less, but find that we cannot, because it just requires too much support, and if we priced it lower, we’d go broke.

It is simple for a project to positively explode with new coding and troubleshooting demands, to the extent that a coder, or even a coding team, can end up overwhelmed.

We like to think of the software companies as the “bad guys” for making it so hard to get support. We like to think they don’t listen to bug reports, or feature requests. Actually they do – but in order to contain costs, they’ve simply turned a deaf ear to certain classes of complaints or requests, and they’ve put up barriers to calls from people who simply don’t want to read the manual. Support time is costly, and it shaves off the profit margins if not controlled, and can put a company in the red pretty fast.

We’ve released three pieces of software in the last year, and are in the process of improving one of them, after which we will be releasing three more pieces. It took six months after releasing the first to reach critical mass – we could no longer go forward with bug fixing, improvements, AND support on one piece, and have any time left for new development. So we took steps to contain support, we finished off some bug fixing and put a feature freeze on one major piece. Then we focused on getting to that point with the other pieces. Without doing that, we’d never have time to develop anything else.

We found that each piece of software goes through some phases that affect costs.

1. New release. The bug fix requests and feature requests pour in. You have to determine in this stage what IS a bug, and what is not, which situations you’ll support, and which you won’t. You also have to determine which feature requests are reasonable (enough people will want it), and which are not.

2. Stable. Bug fixes and feature requests decline, but support continues to slowly grow, in spite of containment, due to increasing numbers of customers.

3. Compatibility Changes. Just about the time that your software is stable and predictable, part of the operating environment changes. The computer operating system, browser, or other dependent applications will upgrade, throwing your software into another series of malfunctions, and bugs. New features in dependent applications may make new possibilities available for you, resulting in new feature possibilities. Long term, this can be a huge drain on resources, and is a primary reason why most companies charge for new versions, or offer support for only a limited time after purchase.

It is not easy. And you find that when you are trying to be the good guy, many people will be angry with you anyway. If you do your best to offer good support, people will complain anyway. If you price fairly, there are those who still want it free. If you lower the price and lower support, people will complain about the lower support. If you release a lower priced version with fewer features, they’ll complain about not getting all the features for the lower price. Most users simply never consider how much time development, support, and improvement actually cost.

I think the Open Source community has influenced some people to think that they OUGHT to be entitled to receive everything they want free. Sensible people know better, but a lot of people think that anyone who charges for software is evil. We found that with our auto-installer. And then on the forums, we saw a rash of people promising to deliver an equivalent free. They’d promise and promise, say it was just about done, then they’d disappear. They found it was much harder than they’d anticipated to even accomplish the first step in the process, let alone deliver a fully functioning, feature rich piece of software capable of doing what ours does. But the prospective users still clamor for it anyway.

I don’t regret our foray into it. Indeed, this is a large part of the future of our business, and holds the promise of providing a significant percentage of our income. But it does require that we adapt to the reality, and that we be committed to a customer base in spite of some very real difficulties.

It isn’t as easy as it looks!

Check out our new Cottage Industry Consulting and Development services at CottageIndustrialRevolution.com – Services include consulting for software development businesses.

Battle Fatigue

A long term war is different than a short one. Short battles are episodes of rallying, crises, and extraordinary moments where people rise to the occasion. It is easy to respond to an emergency when there are only a few.

A long term series of battles changes the scope of responses, and changes the person. What begins as something taking extraordinary effort becomes a wearying grind, where no resources remain to rise to the occasion. A constant state of crisis soon becomes a way of life, the highs and lows blending into a long and blurred train of apathetic responses. A crisis is no longer an urgent thing. The person feels that all resources to cope are gone, and each new crisis simply overwhelms to the point of inaction. There is not enough left to appropriately respond, no matter how responsible they feel to respond.

Dark circles appear under the eyes of the soul, and brightness of mind dulls with fatigue. The outlook on life is colored with the vision of war. A heavy weariness settles in, along with the feeling that it can never be removed. That this war will continue, and no battle is winnable. It batters the heart, and sucks life from the living, even while they go through the motions of trying to continue to fight.

Some simply give up. They refuse to rise one day, and refuse to go to do battle one more time – a kind of shock sets in which renders them completely unable to function. Others struggle on, mechanically responding to the demands of the day, unable to do more than is absolutely required, devoid of the joy and innocence they remember dimly, but cannot quite believe in anymore. Somehow, they remember there was once a different reality. But they can’t quite remember what the essence of it was, the present so overshadows it.

The thing about war, is that the individual soldier usually has very little control over the course of the battles. They find themselves in the middle of a war they did not ask for, fighting battles they could not defer or influence in any way. Caught in the grip of something bigger than life, and powerless to control the force that moves it.

The military calls this state “Battle Fatigue”. It can happen in situations other than a protracted war. Sometimes life is a battle outside of the war zones. For new or lifelong followers of Christ, it really IS a war. A war with Satan, whose desire is to crush us utterly. These times WILL come. And they will last long past the point where we feel that we have reached our limits.

Jesus Christ really has felt our pain, discouragement, and frustration. He truly does understand what it is like to be faced with problems that are bigger than we are. He, too, cried out for deliverance, when the job was bigger than He thought it would be. His example of submitting, even though He wished He did not have to, shows us the pattern for what is expected when we face things bigger than our ability to cope.

There is no way to make it easy. But we can reach a point where we can turn these problems over to the Lord. It does not mean they’ll be solved in a way we want them to be solved. But it does mean we can free the time and energy that we spend on worrying, and focus it on things that are more productive – attending to our families, meeting the day to day demands that are achievable, and wisely using the resources we do have even if they are not enough.

Peace is possible even in the middle of chaos. Solutions to the problems may not always come as we hope. But we will survive in spite of it, and come out stronger. The Lord is forging us into the people whom He wishes us to be. The process is often painful, nigh unto being unendurable. But we CAN endure, we can remain obedient, and we can come through with increased strength and spiritual power.

The prize is worth winning. The fight is worth fighting. It is worth getting up, one more time, to face what we feel completely inadequate to cope with. As we do, we’ll begin to gain something precious, and “angels cannot be restrained from being (our) companion(s)”.

Marketing Like the Spork

Somewhere in the annals of bad ideas masquerading as genius, the Spork must have a rippingly bad review. Conceived as the answer for a combination spoon, and fork, it sports a bowl that is too shallow to work effectively as a spoon, and tines that are incapable of spearing anything at all. The results of trying to eat a meal using this poor excuse for flatware, is most often hacking solid foods to bits in an attempt to fork them up, and soup running down your chin because it spills between the tines. Even a fork is more effective at eating liquids, and a spoon at eating solids, than this warped piece of plastic which not only fails at delivering the function of either one, but fails to deliver any useful function which one could not obtain by using their bare hands (it is often not any cleaner to use a Spork than to use your fingers, the only difference is that in using your hands, the food ends up on your fingers instead of on your clothes).

The Spork is loved by one class of people – which accounts for the otherwise unaccountable continuation of such an appallingly ineffective piece of culinary hardware.  It is loved by cheap financial managers. Combine the spoon and the fork, and you eliminate the need to purchase two objects, and can purchase just a single one instead. Since the Spork is invariably produced on very thin, cheap, plastic (clearly intended to break under minimal stress, thereby further frustrating the already annoyed customer), the savings are magnified even more.

The customer invariably HATES the Spork. It is a singularly uncomfortable eating utensil. One usually ends up having to drink liquids and having to spoon up forkable foods, simply because the thing just won’t work using any of the more familiar eating etiquettes. I love KFC potatoes and gravy – but somehow the indignity of having to try to get a smooth spoonful using the Spork that they provide, spoils the flavor and my enjoyment of it. I’d rather take it home and eat it using a real spoon or fork.

Let’s consider the Spork as a marketing method. One size fits all… Which we know, never does. In fact, one size rarely fits even HALF. More often, in the attempt to do everything with too little, one ends up, like the Spork, with a clever idea that utterly fails to work in actual practice.

If you market like that – trying to BE all things to everyone, you’ll fail too. You need to decide whether you are a fork, or a spoon. Or even a toothpick or napkin (hey, with all those Sporks running around, there’s a real niche for napkins!). Choose your purpose. And stick to that. Work out a cohesive message that targets a real need. Then work it. If it doesn’t work, tweak it – how many times do you think that flatware designers modified the spear into various incarnations of the fork, before they came up with a convenient, four tined, easily grippable utensil which allows even a two year old to eat solid foods without wounding themselves? Keep trying, and eventually you’ll work out the perfect marketing utensil as well.

If you run across a marketer who tries to sell you a package that “does everything”, or that promises to deliver all possible customers, RUN. They are trying to make a Spork, and you, as the unfortunate customer, are going to be left having invested in something that fragments your customers instead of gently lifting them, and leaves customer service soup running down your chin.

Grow a Garden!

Gardening doesn't have to be that hard! No matter where you live, no matter how difficult your circumstances, you CAN grow a successful garden.

Life from the Garden: Grow Your Own Food Anywhere Practical and low cost options for container gardening, sprouting, small yards, edible landscaping, winter gardening, shady yards, and help for people who are getting started too late. Plenty of tips to simplify, save on work and expense.