Pages

Sunday, June 24, 2012

The Software Economy : A history of abstractions


Another Babel tower in the making ...!

There are plenty of abstractions and mystifications surrounding the aspects of production in software industry. And this has been helping many forces of monopoly and hegemony for more than two decades now. There may be corporate interests and economic reasons behind this, which can be better understood only if we unravel the cognitive, mechanical and economic factors involved. Rather than taking a rhetorical line, let us approach this dynamics in a historical and engineering perspective. While analyzing the structural fabric of this field of production, the macro-economic scenario is not widely discussed.

The history of commoditization in the field of software production is pretty unique. It may be due to the fact that this is a rare twist in the direction of industrial production. If we trace the dynamics of industrial production, we could see that from the inception of modern machines running on advanced thermodynamic and Newtonian mechanic principles, we saw tremendous progress of automation in the nature of machines. And all these progresses in the level and range of automation transformed the laborer in the production line. This must be due to the fact that we were harnessing the forces of nature (such as gravitational force, electromagnetic force, nuclear force etc) in all these fields of production. This was enough to create an illusion of techno-centric capitalism where machines are ruling the roost. Even the notions of post-industrial societies emerged in this wave of events. Apparently, with the expansion of capital markets, capital became seemingly more mobile than the labor!

Thus the importance given to the human craftsmanship gave way to the efficiency and productivity of machines. Laborer became the enabler and initiator of various modes of production. When the machines were transformed into a commodity, they attained a certain level of standardization and capitalism was able to organize its mode of production very quickly. The increasing nature of commoditization lead to monopolization further and further and it continues even today to higher levels. Thus entry barriers and levels of competition in these fields of production rises high day by day steeply and stealthy.

Though there are some streams of thought which treat software programming community entirely as a human capital and this entire system as an information economy, I would like to reject that proposition. A software engineer is not sold by itself here in the market. It is a wrong notion. This is because of the fact that the knowledge of the programmer or the software engineer is still very much abstracted out from their existence and it becomes the commodity. Thus in software industry the circulating energy is this knowledge which is nothing but what we fondly call as ‘information’. In the history of mankind, first time knowledge has become the labor force. But it should not make us glorify the whole scenario as ‘knowledge economy’ as still this economy is very much enshrined in the portals of finance capital. At the same time, we cannot ignore the fact that the privatized educational systems in emerging countries like IndiaBrazil, and Philippines are treating engineering students like human capital, as if to justify the concocted theories of these economists! This aspect need a different study altogether.

Now if we look at the history of software engineering, with each breakthrough in the field of programming and the complexity of computation, the creativity of the human mind got further and far reaching prominence. It is because, as and when the computing machines are getting complex and smarter, the human mind is also expanding its horizons. The software engineers world-wide are able to feed more and more complex algorithms and break further and further into the kernels of encryptions. This race between man and his machine is like an ever expanding spiral generating more and more knowledge paradigms. The freedom expressed by human mind in this field has not become a freedom for the human labor. Here, history repeats itself. Despite this explosion of creativity, software production has got chained in the same old capitalistic mode of production. And this irony is in our scope of study.

Thus software labor is not leading us to the earlier days of craftsmanship. As we know, there are no retreats in the history of mankind. Instead, we are seeing a conflicting production line where the conventional modes of production and a new form of abstracted labor force working together. In the multinational software factories, we see domination of more and more tools of scientific management. This was brilliantly summed up by Harry Braverman, an Industrial Sociologist. He wrote Labor and Monopoly Capital: the Degradation of Work in the Twentieth Century, which provided a critical analysis of scientific management. Within Braverman’s model Capital needs to dominate the labor process and weaken the ability of workers to resist. Braverman placed considerable emphasis on the role of Scientific Management (Taylorism) as a quintessential method of achieving this. In particular, Scientific Management involves the subdivision of tasks and the establishment of new technologies that are less dependent upon worker’s craft skills. Braverman predicts that the overall effect of the degradation of work will be to produce an affinity between intermediate-level workers and the mass of the working class.

Analyzing on these lines, we can see that like any other conventional industrial work, software labor has been successfully fragmented into various tasks by technologies of scientific management. This deskilling of the labor has become the inherent nature of a normal software production process. Through task fragmentation, the planning or conception part of the work process is separated from the execution part, and the skill requirements and job learning time are reduced to a minimum. This system is known in the literature as ‘Taylorism’ or ‘Fordism’ and it is one of the characteristic features of the capitalistic division of labor.

We can measure it based on a few parameters.

  1. Is there a decline in skilled content in the job?
  2. Is there a separation of mental and physical labor?
  3. Is there a decrease in the levels of training?
  4. Is there large increase in the maintenance projects?
The historic transformation of software production process was illustrated by Joan Greenbaum(1976, 1999) as follows :

“During the first phase, in the early days of computer use, there was no clear-cut division of labor and software work was more like a craft activity. During the second phase – ‘capital took control’- ‘programmers’ were separated from ‘operators’ in the workplace and the new occupational subgroup – ‘system analysts’ – emerged. System analysts developed procedures to process information and find solutions to business problems, while programmers translated these solutions into a language the machine could understand. In this phase, a division of labor had emerged with different task sets, pay scales and training requirements.” These phases are grouped into 1950 – 65, 1965 – 70, and 1970 – 75.

Going along these lines, the pioneering study of Philip Kraft (1977, 1979) is worth attention. He identified three instruments for the routinization of software work: use of high-level languages, canned programs, and structured programming.  He traces this back to the Korean-war era SAGE project, with the separation of “conceptual” computer-program design work from the “mechanical” labor of inputting of code. High level languages involved a degree of separation from the assembler level languages and allowed more abstract, logical programming to take place. In this perspective, a programmer could learn to use these higher-level languages without understanding assembly-line code and thus, required less skill and education in order to be productive. 

According to Kraft, structured programming was a rejuvenated Taylorist approach to programming, involving the minute separation of tasks, a strict hierarchy of labour and a rigid set of standard procedures and protocols governing work practices. With this system, a few elite professionals could perform all the intellectual, creative work, and pass all the rest of the construction of the software down to discrete ‘modules’ of workers, who would specialize in writing a single piece of the code. For these workers, almost no skills and experience were required to assemble discrete fragments of programs, and thus, they could be paid far less than the elite systems analysts and engineers.

In his own words:

“Structured programming, in short is the software manager’s answer to the assembly line, minus the conveyer belt but with all the other essential features of a mass production work place: a standardized product made in a standardized way by people who do the same limited task over and over without knowing how they fit into the larger undertaking’”.

If we follow Kraft further, we can see his notion of routinization. The routinization of labor is reinforced by two institutionalized means: nature of training and career structure available to software workers. In this effect, low-level programmers experience merely a horizontal movement in the organization. It can be termed as virtual promotions. They may get slightly increased pay and their title may also change, but their nature of work remains the same. They move from project to project many a times doing the same job. However we should note that, Kraft and Greenbaum were criticized for their political bias and lack of in-depth understanding of software work. 

As per Vigneshwara Ilavarasan and Arun Kumar Sharma from IIT Kanpur, the low skilled nature of Indian software industry provides the opportunity for routinization. They put forwarded the following six hypothesizes to test whether software work in India is routinized:

  • Software professionals are clearly divided into conception and execution workers, such as designers, coders and testers.
  • Execution workers do not participate in the conception part of the project.
  • Workers involved in one module do not have knowledge of the other modules in the same project.
  • Training requirements differ for different categories of workers.
  • Career opportunities are restricted for execution workers.
  • Quality certification procedures enhance managerial control. 
Their findings are worth detailed analysis and debate. It is available on the following link:  

Such being the level of task fragmentation in a relatively older programming paradigms, one may wonder about the level of task fragmentation in the new paradigms like object oriented programming, unified modeling language and aspect oriented programming, and test driven development. Reflecting on the current software development process, we need to explore whether the development methodologies like Waterfall, Agile and Scrum are dominantly incorporated with management strategies rather than code quality guidelines. Even the present prescribed standards of code quality need a debate. And we need an objective evaluation of the concept of deskilling in the present day. There are larger variations in this among software companies of different strength and different capability maturity model.

With the advent of breakthroughs like open source model, free software movement, virtualization and cloud computing paradigm, the software economy is undergoing rapid changes. The cost of software production is becoming more and more affordable and standardized with the advent of mobile computing and cloud based infrastructures. If in the future we witness open-source grid computing infrastructures the cost of production and distribution of software will become further more level playing field. However, this task fragmentation seems to have eaten up the space of a 'software engineer' in its totality. And like any change in the course of history, one may attribute a sense of necessity to this change and advocate its continuity. At the same time, we need to see how this whole process will transform the software worker. There is always a break-even for any process in nature.

References:

  1. In an Outpost of the Global Economy: Work and Workers in India’s Informationtion Technology Industry - a, A.R.R. Vasavi. 
  1. Is Software Work in India Task Fragmented? A Study of Software Workers in Bangalore- Sociological Bulletin 56:  P. Vigneswara I lavarasan,  
  1. Industrial Sociology: A comprehensive approach By Osama Lari. 
  1. The Software Industry in Emerging Markets – By Simon Commander