Thinking back to programming in the past. Turnaround times were much longer.
You'd come up with a design, using the methodologies of the time (which have also changed with time). Then, write out your code by hand on special coding sheets, one character per box. Hand it in. Someone else would actually type your code so it was now on a stack of punched cards. Then it would be fed into the card reader, the computer would process it, spit out the messages about the syntax errors in your code.
You'd pick up the results of your code up to a week after handing it in.
In those days, you made sure to spend plenty of time on the design. The code would be traced through by hand (desk checking) to follow the flow of logic. And of course the code itself was written with care that every detail was as good as you could get it. With a turnaround time of several days, you'd do as much as possible before the computer even had a sniff at your code.
Now I don't long for a return to those days. I think it's great that we can type in our code and get instant feedback from the machine. But it does seem to encourage a lot of trial-and error methods, where even when the program actually works correctly, the person who wrote it has no idea how it happened.
The one thing which is still now vitally important is time spent on design. The rewards of proper design handsomely repays the time spent.
(I was going to post this as a response to a question in another forum, but figure it belongs here).
Yes. I find that if I sit down and think about how that program is going to run and interact with itself I tend to produce much better code faster and that is more stable then if I just start hacking away.