With great difficulty - you had to figure out a lot of stuff yourself, actually read the docs and if a book was available, no matter how bad it was, you had to get it. You also had to write a lot of stuff yourself, very few frameworks existed.
For example, I spent a lot of time in one project (back in school still) trying to figure out how to sort things, I was so chuffed when I finally wrote a generic sorting algorithm in Delphi. Several years later when I finally got dial-up internet, I discovered that I implemented bubble sort and insertion sort.
I wanted to make the NumLock + CapsLock + ScrollLock lights go on and off (like the Knight Rider car) while processing something - I could only find some assembly code on how to access those lights and some C++ code on how to get access to those APIs in Windows 95. Used it to figure out how to write a DLL that I could import in Delphi, used the Delphi docs to figure out how to interface DLL files and my Encryption application would cycle through the keyboard lights while encrypting - took around a month of tinkering to get it working since I had no idea what I was doing - whereas now, I would post a question on StackOverflow, get a response and build something like that in a day or two.