Object-oriented programming (OOP) was a significant advance over classic structured coding. Bigger programs could be handled because code organization was greatly improved. But programs kept growing, becoming too complex and hard to manage. Like structured programming before it, OOP was quickly surpassed.
A series of new techniques have been proposed to increase project complexity once again and keep programs organized. Tools like the Standard Template Library (STL) have been a huge leap forward, because the programmer can now trust a series of components to do part of the job for him. These components are context insensitive and can be used on anything from a spreadsheet to a 3D game. Thus, the coding team can concentrate on the part of the code that actually defines the application functionality by using STL as building blocks.
In recent years, a new technique has surfaced, which is somewhat similar to STL in the sense that it allows you to use predefined components. But its scope and ambition is much broader. Complete sections of your program, not only the base classes, can be substituted with prebuilt components, thus saving lots of man-hours and headaches.