Then, after that didn't work, we had to go to find the weird bearded guy that didn't like to talk to people, but knew everything. He would usually tell you the answer, but in a condescending way that made you understand that you only came to him in "emergencies" and that you were kind of stupid for asking an "obvious" question. Actually, now that I think of it, that is stackoverflow now!
Thank god message boards started taking off! ... but sadly, then the "real" Internet came and killed it. :-(
"Why would you want to do that?"
"What's this for?"
"Did you try searching before asking such a stupid question?"
OP bemoaned how people on StackOverflow would tell you not to do what you're asking about. Reference material is not the cause of that "weird bearded guy" problem, but it is one possible solution.
We're talking about software developers, not wizards. It's not like you have to offer a dram of blood and draw a pentagram with salt before you approach the ancient grimoires.
On the good threads that become helpful, yeah.
On most of it, no, those are not the questions people ask there. They will focus on unrelated marginal issues, try to refuse to answer the question, just assume the reason the person is doing it (even when explicitly told on the question), and just throw wrong answers on the wall to see if they stick. (Granted, throwing things on the wall is a useful way to answer some questions, but not all.)
It's good that Google rewards the first kind of thread, but the second one is what sends people away from the platform.
Q: "I'm trying to configure Foo to produce Bar, but it's giving me this error!"
A1: "What are you really trying to do?" [Unsaid: I don't know how to produce Bar either]
A2: "You should not be trying to produce Bar. Instead you should produce Baz. I know how to do that--follow the following steps..."
A3: "Producing Bar will not solve what I imagine your goal is. In the general case, you may need to produce many different results, which I would rather answer about..."
Q: "Uhh, thanks everyone, but I'm just trying to configure Foo to produce Bar."
Many such cases!
The Elixir community talked about this a lot on the forums back when I was active on there, because language rankings look at Stack Overflow questions and Stack Overflow questions proliferate in languages with footguns. "Don't use obviously_named_function(), use obscr_wrd_fcn() instead" fits the SO formula quite well. Well designed languages, Elixir included, don't produce many of those kinds of question/answers. That leaves significantly more room for discourse around architecture and other higher-level conceptual stuff, which doesn't really have one correct answer, and thus is ill-suited for SO, being relegated to the lower-discoverability forums (and worse, the un-discoverable Discord).
Back then, it seemed a lot like that!
>"Why would you want to do that?" because it seems like the right thing to do? Is there a better way.
>"What's this for?" the boss wants it
>"Did you try searching before asking such a stupid question?" I read the manual and thought about it a lot (remember this was pre-Internet)
so, there was a lot of "rough" hand-holding to learn the ropes for edge cases.
The thing is... languages were smaller because they hadn't started the accretion of thousands of libraries and frameworks.
In my experience, every language out there is somewhat easy to learn and master. The ecosystem around it is an insane and ever-growing Katamri Damacy of (largely) crap. We all must know it, must use it, and must contribute to it because no one trusts the work of the individual and only the work of an aggregate of individuals... people often don't even trust their own code.
I wouldn't make a blanket statement either way, but there are certainly counterexamples to this:
- The mpv manual[1] is a work of art.
- The Arch Linux wiki[2] is a treasure trove of information for not just Arch-specific topics, but Linux in general.
- MDN[3] is the defacto standard for any web documentation.
- The PostgreSQL[4] documentation is quite thorough and high quality.
What I think backs up your point are two things:
1. There's just a vast amount of software since those early days. "Software is eating the world", and it's realistically impossible for most of it to be well documented.
2. A lot of information is spread out in books from users of the software, on blogs, tutorials, forums, videos, etc. Sure, this might be seen as a failure of the software authors to produce good documentation, but many of these resources didn't exist before the web made them accessible. In some ways this is better than having a single source of reference, as you can benefit from the collective wisdom of the hivemind, rather than only from what the author thought relevant to document.
[2]: https://wiki.archlinux.org/
In those days, we would usually read the manual when we needed to dig past a surface-level understanding of how things work. The manuals are dry and dense, but they're much easier to read with modern niceties like "Ctrl+F".
IMO, this is one of the reasons that people recommend using software with a long track record. If you have a question about some parameter in a systemd service script, and the internet doesn't have a ready made answer, the details are all written down in the manual.
https://www.man7.org/linux/man-pages/man5/systemd.service.5....
Plenty of modern tools have comprehensive detailed docs like this. Python, Go, even most widely-used JS frameworks. The primary sources are often downranked in search engines because they don't sell ads, but it's a good idea to find and bookmark them when you start working with a new technology. RTFM!