I started programming in Algol on a Univac 1108 in 1969. We used IBM 026 and 029 card punch machines to create "program decks", with job control cards at the beginning and end of the program itself to identify ourselves to the machine, and tell it what compiler to run, and what data to use with the program. The output was on large fan-fold computer paper that came out of a line printer or a chain printer.
You submitted your "job" and waited anywhere for 2-48 hours for it to come back, hopefully successfully, but often with errors in the JCL or bugs that kept the program from compiling or running. Remote Job entry from a terminal was considered quite a benefit in those days.
The card decks were your storage, and you made mods to the individual cards to change the program. Periodically, you would run the deck thru a card duplicator to make sure you had a backup. Some people who were fortunate had their own tape reels with their data or production programs. The extremely fortunate had space on the Fastrand drum or on the IBM 2314 disks (on a 360/67)