Developers creating Windows API-based applications in the C programming language faced many uphill battles, from the complexity of the unsophisticated flat API itself to the nuances of the event- and message-driven paradigms required by the underlying platform. But the bigger issue, perhaps, was related to scale: Even the simplest Windows API applications required a lot of code---which I think of as “scaffolding”---to perform the simplest of tasks: Define a window. Create a window based on that definition. Start a message loop, looking for events to which to respond. And so on.
Developers typically look to some type of code reuse to make repetitive tasks easier over time. And in those days, code reuse took two forms: Copy and paste, where the C scaffolding for one application was literally copied into the code for a new application so that it could be changed as needed, and function library creation, where a developer could create his own libraries of boilerplate code to hide the scaffolding in sub-files and keep the main program file cleaner and easier to read. Indeed, many early Windows developers would even go far as to strip Microsoft’s massive C header files of functionality not required by their apps to save space, improve performance, and make the resulting collection of source code more manageable.