A site devoted to discussing techniques that promote quality and ethical practices in software development.

Monday, February 3, 2014

Software is not created to serve human. A banking example.

This is a rather provocative title for a purpose. Recently I read a very good article from ACM Communication titled "Center Wheel for Success" by Poul-Henning Kamp, Communications of the ACM, Vol. 57 No. 2, Pages 52-54 in which the author questions the high costs of some of the large scale software developments and the finding so many for failing to meet the objectives while many died prematurely. He was citing the a system designed to meet US government's Obamacare as the example.

He attribute this largely to "Blindly deciding that IT be substituted for humans is unenlightened. IT is not a magic potion that makes unpleasant or inconvenient things disappear."

It is nice to find someone that shares my feeling on this topic and that they do not really serve human. At best they should be a tool to help human to deal with mundane and repetitive tasks, which computer and IT programs are apt to do. Human is a master of creating changes and master in complexity and adaptability to deal with ad hoc matters.

Let's consider a real life example.

Today, I was in a bank - it does not matter Which Bank - as I am sure this happenstance is found in any bank any time of the day.

A relatively matured lady was waiting in line patiently for being served and a bank staff approached her to ask how she could help her. She told the staff all she wanted was to get a list of recent transactions of her account that was accessible from the card in her hand. How hard could that be and I am sure that is probably the most required action from any customer.

Without a second to digest the full requirement, the staff (could she be a developer in her previous job?) shepherded her to an ATM machine protruding from the wall and attempted to show her how to get the list. After some moments of fiddling with the ATM without satisfying the customer, the staff realised how stupid she was that did not even listen carefully.

Eventually she took the lady to stand beside a bank teller using her terminal to view the list of transactions. She did not receive a print out despite her money funding the running of the bank.

Is this service? Does the banking system actually serve the customer's needs? Her needs is nothing complex and must be known to anyone in the banking industry without even involving a neuron and yet she still could not get what she wants other than 'being a bank teller' literally.

I contend that the banking system has missed the mark by a long shot. Consider not long ago, she would not have to walk to the bank, waste her time standing in queue and explaining the simple thing that she took for granted for so long  when she was clinging to an information rich bank book; she could simply look at her bankbook. Now she has been given a piece of plastic devoid of any useful information. I have a feeling that she did not enjoy such an experience that the system has successfully made her feeling useless.

Sure time has changed but human's needs and modus operandi have not. What good is a system if it cannot meet the human's basic needs other than to satisfy the fancy of the developers.

In this case, why can't the ATM has an option that allows the user to list and print the transactions one is interested in. This is a simple operation and it is definitely a good way to ease those bankbook dependent customers over to a new system. At best the current crop of ATM could only show the current balance.

In HK MTR, they have a balance checking device next to the ticket dispensing machine that allows the Octopus Card holder to list the 10 most recent trips, their costs and the balance remaining. That's a good service.

Surely any bank system analyst would have sat in a bank branch observing how customers interact with the bank over days, recording and understanding their needs and expectations before attempt to develop a system to 'serve' the customers?

It is not hard to replicate a simple bankbook and doing so will make many happier and imposing less burden on them. It is worth remember this simple phrase "You (the developers) are not the users".

If the system requires the user to buy a modem, have an internet connection, learn how to deal with a computer system and to fire up a web browser (web what? to many) to do the job of a bank teller, how can one calls that system serving the customer. It is basically a DIY operation and not serving the customers at all. The bank is passing the buck to the customers making them the pseudo-bank employee with no pay.

Sunday, February 2, 2014

Buggy CBA NetBank Term Deposit Management facility

In the CBA Internet Banking Service, one could supposedly manage one's term deposit investment online. However, the following two examples show the bugs in this program making such a simple task impossible and downright frustrating. Not only that, the design of it is so confusing.

One would expect the largest bank in Australia would not commit this kind simple programmatic mistakes. Before making accusation, the NetBank optimisation check facility was used to ascertain that my operating environment meeting the specification and here is the result:

Please note the facility is not sensitive to operating system and all versions of the operating system contains the latest updates.

1) Select a New Term Deposit option.
The facility displays a list of term deposit option as shown here:

Looks good but on the above mentioned environment it does not allow the user to click on any radio button to select the prefer option unless I am using IE8 & 10. This part also fails in IE11 like Firefox. To ensure no Firefox add-in was causing the problem, the Firefox was re-run in safe mode and it produced the same result. I have also test them using Firefox in Win7 and producing the same result.

Hence this part of the web page appears to be very sensitive to the browser version and type or one could not trust the verification service of NetBank.

2) This is the best one I have seen that even a primary school kid knowing real number comparison could see the folly.

In a section available for entering maturity instructions - which do not appear to apply for the imminent renewal but from all the descriptions, this section appears to be apply at the maturity of the imminent renewal. That confusing part (prime candidate for "Why Software Sucks") is not relevant to the current issue.

In that section there is a field where you can specify "Additional investment amount" and next to the field is a maximum figure of $1,897,643.83, which I can guarantee anyone that I do not have. Please note this figure.

When you enter a value of 0.5, representing 50 cents, the entry validation control raises an error like this:

The error message is:

Since when is 0.5 NOT "less than or equal to the maximum amount ($1,897,643.83) shown"?

I believe what happens under the hood is the application of "Everything is a Nail" anti-pattern looking like this:

    if ( !ValidateInput(amount) )
         ErrMsg = "Please enter an amount less than or equal to the maximum amount shown";
As long as ValidateInput() returning false, the same error message is used, irrespective if it is appropriate. In the ValidateInput() $0.5 is probably not a valid entry - being below the minimum of $1.00, I guess. The developer probably expects the user to possess psychic power that can see the rule table residing on the CBA Server.

If you have previously defined an additional investment amount and wanting to remove it. In IE10, you can delete it but it then raises another error like this:

In Firefox, when one tries to delete the entry, the program raises the above mentioned error message. In IE10, you could ignore that protestation and the submit button allows the user to commit the changes even when it says the field is required but with no data. Is it a required field or is it not?

Now you see this buggy program creates more frustration and raise the blood pressure higher.

Blog Archive