I still think those «buggy, dangerous "mission critical" piles of garbage» are valuable.
If there was no VBA, the jobs these scripts were created for would still be done manually, with a mouse, by some secretary somewhere. "Getting a professional to do it" would never enter into the picture when you're talking about a BigCorp with a conservative, limited-budget IT department.
During my internship at a manufacturing company, I knew enough about VBA to record a macro in Excel (just record, no actual coding involved) to automate ~10 minutes of work I had to complete monthly and included step-by-step instructions for how to run the macro and what the macro did.
When I came back a year later after graduating, I learned the process was again being done manually because my replacement did not have even a basic understanding of how to interpret what a macro does from the script.
A few months ago, I automated ~6 hours of monthly Excel work through ~4 hours of trial and error of recording macros and manually editing them. I have zero training in coding other than osmosis from my brother who is an iOS programmer, but I wasn't afraid to screw up enough to figure it out.
Based on my first experience, unless my eventual replacement has at least a curiosity about how macros work I wouldn't trust them to effectively run my script over the long term--if anything breaks, they won't be able to fix it.
The point is, a lack of basic, basic understanding of coding could end up costing the company the 75+ hours/year I was able to save with a "buggy, dangerous...pile of garbage" when I either move to a new role or leave. This was something which would never have been a high enough priority for our coders to write for us. Multiply that through 25 people in our finance department, and you're talking about needing an additional full-time employee.
Can anyone recommend a good place to learn enough VBA to move past the buggy and dangerous stage?
You hit on an important point: curiosity. Most of the best programmers are deeply curious, and I don't think that can be taught, though I do believe it can be cultivated from an early age.
On the other hand, showing people how to safely experiment in ways they can be sure won't screw things up may be very empowering and allow them to express their creative drive.
I kind of agree with you. I think everyone is inherently curious right until the point when a smart-ass parent says "Because I said so, and now shut up and don't ask questions."
My parents did not do that. Even today, they pride themselves on the fact that when I used to asked them a "What would happen if..." question, they'd be like "Why don't you try it out". Sure I may/may not have got myself in a sticky situation, but the point is they didn't shut me down. Also, if I ever broke something (which was fixable) my dad would actually open that damn thing and fix it during the weekends, talking and explaining to me what the things inside do. Sure I may be only 7-8 or even 10-11 but hey that adds more to my curiosity.
At their angriest, my parents have assessed the situation to check if it's fixable by a human at my age/capacity and given me a stern "fix it" look. Boom, that was a blessing in disguise as well because now I'd be all like "Shit, how DOES this work".
[Note: I'm neither married/not have kids...yet]
The problem that I've seen with others/their parents/their children is that they get annoyed quite quickly. And when you shut down a 5 year old, you can clearly see the pained expression on his face.
They simply lose interest in everything and end up becoming drones. And they're afraid of doing anything new because they worry if they screw it up, their parent will come home and beat them up.
Very few people look at a medical problem and decide to "hack it" themselves without seeking treatment from a Medical Professional. Neither to many people seek legal solutions without the aid of a Professional Lawyer.
Software development is a highly skilled discipline. Sure, you can teach your accountant to code fizz buzz - but what use is that to them? Are they going to spend the thousands upon thousands of hours to become proficient in development before realizing it would be cheaper just to hire it out?
Again, focus on teaching a coder point of view - a way of thinking.
If there was no VBA, the jobs these scripts were created for would still be done manually, with a mouse, by some secretary somewhere. "Getting a professional to do it" would never enter into the picture when you're talking about a BigCorp with a conservative, limited-budget IT department.