I know the following statement suggests that I've become a cranky Gray Beard, but it's pretty amazing how easy software engineers have it these days. Forget how easy instructional materials are to find compared to scouring library and bookstore shelves. Software engineers today benefit from full production mirrors in the cloud, forging long compile cycles, a giant library of open-source software, just to name a few.
Yet the single biggest advancement to my productivity that I've noticed is a seemingly minor change: syntax error reporting has gotten orders of magnitude better.
If write software today, and create a typo, stick a closing
} in the wrong place, or drop an errant semi-colon, the computer will tell you exactly where you went wrong (and even occasionally how to fix it).
My first experience programming was in CodeWarrior on a Mac. Getting something to compile (the process of getting a human readable representation into a computer readable one) was half the battle. I vividly remember the day typing
voit functionName() instead of
void functionName() caused the entire computer to crash. It took six people to figure that one out.
Eighteen years ago, as a freshman in college I started writing Java on an actual SUN workstation. The computer no longer crashed when compiling, the technology has progressed that far. Yet getting a program to compile was still hard. A simple mistake would lead to pages of scrolling output of cascading errors.
Finding the error would be an exercise in isolation, by which the programmer would execute a binary search for the error by painstakingly commenting out pieces of the code. When the first offending typo was found, it was on to the next one. Should you accidentally delete a line, good luck. At the turn of the century, we didn't have infinite copy-paste buffers.
Once a critical part of the software development lifecycle, we can now limit binary searches to job interviews and libraries. Very smart engineers have spent countless hours getting the errors produced to be more accurate. It is the kind of hard work that can go unnoticed, but has a huge impact. If you know any compiler creators, be sure to thank them. Even if you don't write software, you benefit from the increased quality.