Tuesday, April 29, 2008

Facts about Software Usage in India

The software industry in India has a unique distinction - the revenue from domestic projects, as of now account for less than 50% of the total turnover of the software industry. Though in this day when there is a heavy emphasis on exports, this may sound good, it actually is also a potential source of concern.

The reason is that the software industry is essentially a support industry. The fundamental role of software is to to improve the functioning of some organization in some form, or solve some problem which will be hard to solve manually. The improvement may be in form of improved service, problem solving capability, information management, efficiency, or something else. In other words, the real success of the software industry should not be measured in terms of how much revenue they have generated, but how much enhancement they are able to induce in other industry segments. In this light, the high ratio of exports to domestic consumption of software is a disturbing trend - in exports the multiplying effect of the software goes to some other country.

A main reason for the domestic consumption not being high is lack of understanding of software, its processes, and its costs by the consumer organizations. For a long time consumers of IT goods thought that software is "free", and the main thing in IT is the hardware. Little was it realized that hardware, without proper software is almost literally a piece of metal and silicon junk. This mentality, unfortunately, was also reinforced by some hardware vendors, who at the time of selling their machines, either promised to "give software for free" or convinced the buyer that software is something that the buyer can easily do himself. And this is as far from truth as it can be!

BROADLY speaking, software can be broken into three categories - system software, software packages, and application software. System software comprises of operating systems compilers, editors, etc., which typically come with the machine. Software packages like DBASE, LOTUS, ORACLE etc. are general utility programs that can be used to develop applications in some domain more easily. Application software is that are used to provide a computer based solution to some problem of an organization. Some examples of such softwares are, software for payroll processing, banking, railway/airline reservations, inventory management, decision support system, etc.

It is the application software that makes the IT investment useful to an organization. Generally, typical application software depends on the needs, characteristics, and methods of the organization, and has to be developed specially for the organization and cannot be bought as an off-the-shelf product. And as things stand today, getting software developed is not cheap.

Let us see the order of software costs from the view point of a client. One way to estimate the size and complexity of an application is the function points approach. By this method, a medium sized business application requiring 10-12 reports to be printed, having 8-10 different types of input, a few interface files, and a dozen odd different types of queries, will have about 200 function points. Typical productivity in the software industry is of the order of 10 function points per person-month. This means that this application will require about 20 person-months to develop. That is, a team of 4 software engineers will develop this system in about 5 months. As many good organizations charge between Rs 6 - 10 lakhs per person-year, in terms of money such an application will cost at least Rs 12 lakhs! And it can easily run on a workstation or a system consisting of a server and a few PCs costing about 6 - 8 lakhs! So, in India also, as the hardware costs have fallen over the years and the salaries of software personnel have grown, the reversal of hardware-software cost ratio has occurred. Only, many organizations still do not seem to realize it!

Being ready to pay the cost of software is not the complete story. Another reason for organizations not getting proper returns from their automation plans is that organizations do not understand software, the process of producing software, and software quality.

It is now known that to produce quality software, the developing organization has to follow well laid out software engineering methodologies. Unfortunately, there are many software organizations who will not follow these methods and do a poor job of developing the software, but bid low for a job. Due to lack of appreciation of software quality and software development process, a consumer cannot understand why a company will charge 20 lakhs, while the team of boys out of school is willing to do it for one tenth the cost. They find out the reason the hard way - when low quality software with poor user interface and without proper documentation gets delivered, which keeps failing, loosing data and records, and is not liked by the people who have to use it. The other approach, which the more aware companies will take, is to give the contract to some well known, reputed company. They will get good software but will probably be charged more due to their inability to distinguish well from bad and effectively use competitive forces to reduce costs.

Getting quality application software developed is actually not an easy task. It requires sufficient knowledge about the software development process to be able to distinguish between a "mature" software organization that has reasonable software development processes in place, and an "immature" organization, which produces software in an ad-hoc manner, and is therefore more likely to produce a low quality software. Being able to make this distinction is necessary in selecting proper vendors for giving the contract. Furthermore, the customer organization also has to play an active role during the development of software, if it wants the software to satisfy its objectives - even the ISO9000 standards for software companies specify that the customer organization play a key role during software development. Unless the customer organization analyses the capability of the software developers and plays its the proper role during software development, it is likely to end up wasting its investment in computerization and IT.


No comments: