There is of course no simple answer because "software" is too broad a category. Someone has to develop the low-level drivers than enable the hardware; these people are real "techies" capable of understanding the hardware in detail. The code they develop must be robust and efficient. Much of it is written in low level languages such as Assembler or C. Each driver is relatively small so that big teams are impractical. The problem here is finding people who are educated in both hardware and software.
There is another level of "system" software above the hardware dependent drivers, the operating system and core utilities. This is another discipline which needs in depth knowledge. There are few companies today involved with the development of operating systems, database management systems, communication sub-systems, etc. The advent of OSS has changed this somewhat, but this is a very specialist area. This is where the PhDs get their chance. The problem however is not shortage of talent, but management of a mass of prima donnas. The armies that develop Windows at Microsoft have been badly shown up by the OSS community, who have produced a better product in Linux. Admittedly Windows developers have severe commercial constraints placed on them and it must be so frustrating to work on such a mediocre product. Nevertheless this must be an organisational problem because many thousands of programmers contribute to Linux with fewer problems. It is going to be interesting to see what the future holds for a company like Google which is founded on the principle of most employees being a PhD. This lack of hierarchy surely can't be sustained.
Application programs require yet another set of skills. They don't need technical PhDs but they do need to know something about the requirements of the users. Developers of commercial applications need to be well versed in accountancy, stock control, etc. In general they do a good job, but the integrated ERP packages have created a problem of scale; they need many programmers and suffer from the problems of project management. On the other hand office applications made huge advances in the early days, with small teams of developers, but have progressively got worse over the years.
There is no doubt that the tools for developing software have improved of late. As Java, .NET and the whole component revolution mature it will get better still. Sadly however all we appear to have done is to make it easier to develop bad applications! It isn't the lack of tools that make programs like Word or the bulk of Web sites so user hostile, it is the lack of higher level tools which focus attention on the functionality of an application that is the root problem. Education, or lack of it, is a basic problem too. The only group of people I know who actually like Microsoft Office (as opposed to accepting that there is little choice) are end-user trainers. In 2004 application software should be intuitive enough not to need trainers!
I have a plea to make to Microsoft - could you spare a dozen or so of those programmers to fix the mass of irritating bugs in the existing products please?< BR>
Martin Healey, pioneer development Intel-based computers en c/s-architecture. Director of a number of IT specialist companies and an Emeritus Professor of the University of Wales.