Ha! I love to tell this to our, even not so young, software developers. (Because I'm old and that's what we do!)
I started working as a programmer in the late '70s.
Each day I would sit at my desk with a coding pad and a pencil, literally "writing" code. When the program was ready to test, I would sign up for time on one of our office's 2 keypunch machines.
When my reserved time arrived I would go to the keypunch area and punch out a deck of cards containing my program code, then take my compile JCL deck from my desk drawer and insert the cards containing my program code into the appropriate place in that deck. I would then walk down the hall to the I/O desk and turn in my card deck. On a set schedule, the Operations group would retrieve the waiting decks from the I/O office, take them to the computer room, and feed them into the card reader.
Eventually, the computer would process the job and print out the results of the compile, indicating the line(s) of code with compile errors, if any. If there were errors, you take the listing back to your desk, fix the code, reserve keypunch time, etc. If the compile was successful, the program would execute and your print out would contain the output results. Occasionally, the Operations team would deliver all of the completed job decks back to the I/O office. You never knew when your job results would be available, so you just walked down and checked with I/O from time to time. Often you would not receive your compile results on the same day it was submitted because you were competing for computer time with production jobs and all of the other programmers' jobs.
If I didn't know how to do something, I went and grabbed the manual (aka. book) from the common set (if someone else didn't already take it), took it back to my desk, and started reading.
Also, probably at least half of your co-workers smoked at their desks, which were all in an open room.
Good times!