After 25 years professional experience (plus 12 years before that), there are a number of reasons why I search for "how to do X in Y" online at least once a week:
- The language is poorly designed and has a lot of unintuitive, unorthogonal, difficult-to-remember parts or nasty footguns, but people continue using this beast-that-cannot-be-slain out of industry inertia (like Bash or CMake).
- The language is in a constant state of flux, adding new features and best practices / idiomatic things, and the cruft-that-must-not-be-used buildup is so insane that even a few years out of the loop makes you feel like a complete beginner (like C++ or Python or JS).
- The language is complicated enough that unless it's your day job you won't remember how to do basic things after a few months away (like Rust or Haskell or Gradle).
- It's been 10 years since you touched it and how the hell do you concatenate a string again???
I think the only languages I can just slide right back into are Java, C#, LUA, and Go (and C, but probably only because I used it daily for decades).
woefully underused, but has everything and is extremely well written with no fluff.
Among other possibilities:
SO suffers from hostile moderation and a generally unwelcoming culture, perhaps even worse than Wikipedia. This has a profound chilling effect on positive, substantial contributions, particularly from new contributors.
SO had a great strategy initially with relying on search engines to index everything, but it never seems to have solved the recency/relevance problem. In that respect, it has become its own worst enemy, with old answers about obsolete versions and practices often ranking highly in search results.
The first of those problems then exacerbates the second, because the same cultural issues get in the way of both updating answers to old questions and asking new questions that might be superficially similar to ones that already exist but actually need a different answer.
Meanwhile, in many areas of programming, documentation from other sources has become both better in quality and more readily located thanks to other well-known sites and high search engine rankings. Relatively speaking, SO simply isn't as useful if there is already primary documentation that answers questions correctly and comprehensively.
And finally, you personally may have grown as a developer over time, becoming both more capable of solving problems for yourself and more familiar with whatever tools you use regularly, so you might not need external help so often.
FWIW, I'm also in the "rarely visit SO any more" camp. I think I have a kind of banner blindness for SO hits on search results pages now, perhaps because I'm assuming that following a SO link is unlikely to provide a useful answer so I almost always check other plausible sources first. On those occasions when I do get as far as visiting SO, I'm usually reminded of why I tend to work this way now.
This rings very true to me. The GP's comment made me consider that I very rarely go to Stackoverflow anymore, no longer contribute and what stuff I do find there useful is from well before the cultural shift in moderation, back when questions could be a little more open and answers a little more freewheeling.
The other sites in the Stackexchange network aren't nearly as bad, fortunately. English Language Learners and Math/MathOverflow are very positive places. Software Engineering is pretty good, too.
So after that experience would I go to the effort of contributing back again? Maybe in this case, because the answer was shorter than this post, but the equation might change if it required more effort.
I do not get it.
Oh god yes, this is a nightmare.
I think the SO leadership is currently searching for a solution with this issue. Whether they deploy it and it works is another matter.
Regarding the moderation and unwelcoming culture, I don't really see it, but maybe it's because I follow different tags?
Put another way, I spend 100% less time in high school than I used to, but HS is still a valuable resource.
When I used stack overflow more, I was doing stuff with web technologies and Unix command line tools. These days I’m much more experienced with Unix tools; I use more specialised tools that aren’t mentioned on SO, use a programming language which isn’t often mentioned on SO, and a large array of libraries which are even less frequently mentioned there. I’m also generally better at finding my own way around—digging through code, jumping to definitions, looking up errors. I think the reason I don’t use it so much is that it is less useful because it doesn’t have the answers I care about and because I have fewer questions for it to answer.
SO used to have really god content for really some fundamental questions which gave it some credibility. As it accumulates more content the quality is really going down - I actively avoid SO unless I can't find any other source.
GitHub - literally every problem I have nowdays I spend searching through GH issues, reading through the code upstream and reporting back. For example I was working with .NET framework for a while (~5-6 years back now) and when dealing with closed source frameworks SO was a replacement for support channels. Now even as I'm coming back to a .NET core project - everything is OSS and on GitHub.
Docs also got better, MDN is now defunded by mozilla but where I had to do a SO search for random JS behavior I can now look up decent references on MDN. I think Google got better at indexing documentation as well.
The moderators' refusal to allow "opinion-based" questions has been very harmful to the usefulness of the site. Now you can only find best practices if someone happens to add them as a tangent. Or if you happen on an old one that got 1000+ upvotes before the mods decided theory was off topic.
I think this is it. I also thing documentation in general has gotten a lot better at answering questions rather than being just an autogen api doc site.
Previously you had to know the function you wanted to call. Now you can just scroll through the functions from typing the dot.
I do think that a big part is that the two things I spend most of my programming time on, one Clojure project and one C++ project, I’m just pretty familiar with at this stage. I’ve been using Clojure for ten years and the language hasn’t changed all that much, so I don’t need to look things up often (besides the occasional reference material on clojuredocs). For libraries, I check their readme’s and just read the code. I’ve actually never really used SO for clojure, now that I think about it. The Clojure project I’m working on is also a little bit niche, so I don’t tend to find anything useful on SO for it.
For C++, I keep cppreference at hand and only really use SO when I’m trying to figure out weird things, or newer features I’ve not yet used much. Again, for the libraries I use, it’s a mixture of documentation and reading headers and it’s rare that SO helps there.
In my previous job, I was mainly working with AWS services, terraform and some python (using boto) and, again, I had everything I needed from their documentation. Before that, it was Java with some Clojure, but again, the challenging part was the domain, which was nothing that SO could have helped with. Everything else, we had under control.
Maybe I got better at reading documentation?
I always leave a comment trying to explain to my future self where I learned to do stuff that was not intuitive.
Bash, Make, non-standard Python libraries, E-Lisp, and Fortran.
Also, it's been quite a while since I've touched JavaScript, so the newer features have been harder to grok.
I'm trying to think what's changed, I guess I've just been writing stuff that either I'm super comfortable with or is niche enough that there's not that much on SO that's helpful. Looking in my browser history, the last thing I looked for that I got an answer on SO is what's the differences between C++'s std::scoped_lock and std::unique_lock, which was a few days ago. I still use SO, just not as frequently as a few years ago.