Due to the rapid centralization of computing power towards the server side, middleware technologies that provide high parallel computing capabilities and availability have been widely adopted, and have even become a necessity for building large-scale software systems.
Because of the adoption of middleware technology, software development teams can focus more on business logic, while many details can be handed over to the middleware for management. This has significantly reduced the number of lines of code that need to be written, and directly resulted in smaller software development teams, but with increasingly specialized roles (such as business analysts who understand industry requirements, and architects who are familiar with middleware technology and domain architecture).
The enhancement of computing power has made software increasingly user-friendly, leading to its ubiquity. As a result, the demand for software developers has surged dramatically (with organizational structures consisting of numerous small-scale development teams). Under this factor and the pressure to reduce costs, development outsourcing has become very prevalent.