The history of offshore programming is more than a dozen years old. Its appearance was the result of a completely natural desire of companies to reduce their production costs at the expense of cheaper labor.
In order to make this all a reality, many people prefer to contact the offshore product development company Diceus, which is a fairly correct decision.
In some cases, the reason for transferring an order abroad was associated with the impossibility or inappropriateness of exporting specialists who are carriers of a particular technology from another country, and also due to the peculiarities of the sales market (in particular, when localizing a software product, adapting it to local conditions).
If we talk about the global production of programs, then within the framework of large corporations, the creation of foreign branches for the same reasons was taken for granted. In particular, IBM is a classic example of its global manufacturing. Research laboratories and factories of the corporation are located all over the world; however, they are all independent enterprises and are fighting for contracts for the development of new products. Laboratories not integrated into the national structure have the opportunity to choose their own location for reasons of its attractiveness to staff.
Electronic presentation of software products, global communications providing delivery of “raw materials” and “materials”, and the idea of distributing manufacturing units around the world allowed IBM to develop a technology for continuous global production, in which the workday is extended to 24 hours by distributing work performers, taking into account time zones.
This picture, which is close to the ideal, is achievable only with “intracorporate contracting”, while in the general case, this is hampered by the key offshore problems – the difference in the corporate cultures of the customer and the contractor, the difficulty of synchronizing different stages of the production process.
So, the main thing that unites offshore programming and global software production is the geographically different location of the customer and contractor. As for the fundamental differences, programming itself in the total share of production takes an important, but not the main place. In addition, the differences between programming and software engineering are already clearly manifested here.
Programming and Software Engineering
As Bertrand Meyer, author of the Eiffel language and design by contract, emphasizes in a recent paper, “we can distinguish software engineering from programming by its industrial nature.” Software engineering is a collection of methods, tools and techniques.
Thus, programming can be viewed as the authoring production of programs in which challenges of enterprise application development may arise, while software engineering is a full-fledged industrial production. Usually, programming is divided into three important areas: theoretical, systems and applied programming, combining scientific, research and production aspects. However, if we approach programming as a scientific or inventive activity, such a division is of little use in the case of real projects, where the production aspect comes to the fore.