Reliability

Software reliability is subjective and often depends on the the way the user uses the software. Lets look at how subjective an individual opinion can be.

Media praise some fabulous new Web site. I visit the Web site home page and find a blank screen. The Web site is a total failure. Why is our opinion so different? The media reporter is paid to glorify the Web site because the Web site pays for advertising. The "journalist" is willing to give up all privacy and security.

The journalist does not use NoScript or any other protection from greedy corporate spyware.

Ethical Web developers manage to produce Web pages without spyware. You get an informative message saying "We are not allowed to create a Web page that works without Javascript". You might also get the begging message "We depend on payments from corporations who want to sell your privacy". At least the Web site tells you how stupid the owners are. There are many Web sites where the development is so bad that they cannot do something as simple as explain their broken Web site.

Compare software to cars

Some people only drive new cars and do not look at the resale price because the car is on a three year business lease. Back when I was on the company car treadmill, some of the leases were company organised leases and twice I was stuck with a car of their choice, both times a Ford. One of the Fords failed the most basic safety standards. I am amazed the car was let on the road with such bad suspension and pathetic tyres.

The other Ford stalled frequently. In the first year, the dealer replaced parts every few weeks. engine, gearbox, back to engine, carburettor, try replacing the gearbox again, maybe we should replace the engine again.

Nothing worked because the replacement parts contained the same faults. You get that with software. Somebody starts with a bad design then builds the design on top of a framework. When the result fails, they switch to a different framework and get the same failures. They might swap all sorts of components over several years without ever admitting the design is wrong.

Look at the popularity of the "SUV". Nobody buys real SUVs. They buy sedans labelled as SUVs. Why? The same car manufacturers continually changed their sedans to be uncomfortable squashed down cars that are difficult to drive safely and almost impossible to park. The modern shopper buys an SUV to get what they used to get in a sedan.

Over win Web site/app land, Web site owners refused to update their Web site to a responsive structure. Their Web sites looked reliable and passed every test except customer satisfaction. Many customers started using apps instead of Web sites because the apps looked better than the Web sites. Web site owners then had to produce an app to replace their Web site. Producing a working app is about one hundreds times more expensive than converting a well designed Web site to be responsive.

What do you recommend to friends?

The Fords were so dangerous on the road that I refused to use the car when carrying friends or family. I used any other form of transport, borrowed cars, taxis, anything. That had an influence on many car buyers. In the software area, I had a heap of influence for about 30 years, switching purchasing decisions that would add up over a billion dollars. Then the iPhone and Facebook arrived. You cannot compete with either the fashion statement iPhone or the Facebook monster.

Most "influencers", the people who tell you lies about what they do and use, have no idea about reliability or anything else you might want in software. They never step out into the country where online access might be limited, leaving them free to talk you into using hardware and software that fails completely the instant you lose a network connection. These creeps, who spend several hours indoors doing their hair to look like they stepped outdoors for a few seconds, have no interest in anything you do and have never experienced reality. Ignore them.

When you want to find out about software reliability, you need to find people who live and work in your area, who use software the way you do, who depend on software and system reliability to the same extent as you. You need to find people who value privacy the same as you. Look for people who actually compare products instead of just buying a brand, instead of hoping the brand will one day catch up with the competition.

Does it do what you want?

Look at all the fancy video options in handheld devices. 4K video is all the rage. There are devices where the camera can capture 4K but the software then compresses the image to the extent that the picture quality is worse than 2K video.

You might not notice image quality if you are in a shop, buying a device, and create a test 4K video of the pot plant sitting in their display window. After you buy the device, you cycle to the local sports field to video your child winning a medal. The video appears all fuzzy and smeared due to the destructive compression applied to make the video fit the software/chip/storage limitations of some idiot who designed the handheld.

You now know that you should have tested the video on a moving target at a sports field. Thousands of dollars down the drain on junk.

Testing has to be relevant to the user

You have to make your tests relevant to the user or advertise your products specifically for the users who will benefit from your software.

As an example, house design software might work for people designing small homes where every window faces sunlight. Users might need far more complicated software to design a house where sunlight is blocked by trees, other buildings, or a really complex design. The extra features of some building design software include showing how sunlight works in a building, how drainage works, how heating and insulation work, a whole range of things that can be important. You either make sure your software works for every user or you tell then up front about the limitations.

Reliability includes how well the software meets the user expectations. The marketing and sales people might lie to sell extra copies. You need to be clear up front about the capabilities of the product and the range of users for the product. This is usually called "scope" during the design stage.

Use humans then robots

Humans are better than robots for developing testing. Humans are easily distracted when they have to repeat tests. Use humans to create tests for reliability and never trust automated systems to cover every potential problems. After the first few uses of a test, automate the test to ensure the test is run every time you make a change.

Reliability is something you have to work on. Think about the vegetables stored in your kitchen. You have several months of perfect storage then a warm day and suddenly winter is over, insects are eating your food. You now have to find out how they crept in and plug up the hole. Every time your customers use your software, there is at least one who will attempt to use your software in a new way.