New tools would probably be great if only the documentation kept pace. While trying a new software IDE for a microcontroller a few days ago, I inadvertently closed two windows on the display. I couldn't figure out how to get them back. The docs explained what those windows would show but had no information about how to open them. Sad.

It's not just the "do it fast/do it over" that causes me to sometimes question all of the "advances." The proliferation of options is also staggering. If you look at all of the library functions available in .NET and other tool chains, you can spend a lot of time just searching to the right library function to use. On the one hand, that frees up a lot of time from wrote tasks, but it also can cause delays. There are so many that you can't keep them in your head so you likely have to research each time you need to use one.

I remember my first year of programming. FORTRAN on punch cards using a mainframe. We submitted our programs as batch jobs and got a print out back hours later.
Due to the time involved, you would be very careful about what you submitted, painstakingly checking the code before cutting cards (cards == money) and then checking the cards again before submitting.
It was more than once that a 200-line program ran - correctly - first time.
Frugality was important too. I wrote a 56-line Fortran program to print out wall calendars. Worked great, but was pretty hard to understand.
Now editing and compilation is cheap/free and I don't worry so much about getting it perfect first time.
Forgot a variable name? So what just compile and see the errors the compiler throws up.
Would I trade back for the Good Old Days? No thank you! I also remember dropping the 2000 punch-card source code for a compiler when I tripped down some stairs. It took quite a while to get them back in order and re-punch damaged cards.