I still use StackOverflow and LLMs, but if those things were available when I was learning I would probably not have learnt as much.
I still use StackOverflow and LLMs, but if those things were available when I was learning I would probably not have learnt as much.
The change with LLM is I can now just ask my hare brained questions first and figure out why it was a stupid question later
(Mostly this ended up being weird Ubuntu things relating to usecases specific to robots... not normal programming stuff)
The problem with Stack Overflow is not that it makes you do the work—that’s a good thing—but that it’s too often too pedantic and too inattentive to the question to realise the asker did put in the work, explained the problem well, and the question is not a duplicate. The reason it became such a curmudgeonly place is precisely due to a constant torrent of people treating it like you described it, not putting in the effort.
I can’t speak to whether this is a good approach for anyone else (or even for myself ~15 years later) but it served to ingrain in me the habit of questioning everything and poking at things from multiple angles to make sure I had a good mental model.
All that is to say, there is something to be said for answering “stupid” questions yourself (your own or other people’s).
Way back in "Ye olden days" (Apple ][ era) my first "computer teacher" was a teacher's assistant who had wrangled me (and a few other students) an hour a day each on the school's mostly otherwise un-used Apple ][e. He plopped us down in front of the thing with a stack of manuals, magazines, and floppy discs and let us have at it. "You wanna learn computer programming? You're gonna have to read..." :)
SO is infamous for treating question-askers badly.
I have used LLMs for some time, and have no intentions of ever going back to SO. I get tired of being insulted.
> The only stupid question is the one you don't ask.
- A poster on my old art teacher's studio wall.
StackOverflow intimidated me for reasons you say. What is it with the power trip that some of these forum mods have?
“Breaking the chain” is quite difficult, because it means not behaving in the manner that every cell in your body demands.
One of the reasons that I strive to behave, hereabouts, is that I feel the need to atone.
It can be quite difficult to hold my tongue/keyboard, though. I feel as if it’s good exercise.
With LLMs you can start with first principles, confirm basic knowledge (of course, it hallucinates but I find it's not that hard to verify things most of the time) or just get pointers where to dive deeper.
A second major issue with SO is that answers decay over time. So a good answer back in 2014 is a junk answer today. Thus, I would get drive by downvotes on years old discussions, which is simply irritating.
So I quit SO and never bothered to answer another single question ever again.
SO has suffered from enshitification, and though I despise that term, it does sort of capture how sites like SO went from excellent resources into cesspools of filth and fools.
That LLMs are trained on that garbage is amusing.
That way of life is gone for me. I've got a smartphone and I doomscroll to my detriment. What's new and fascinating to me is the models themselves. https://fi-le.net/oss/ currently trending here is the tip of a whole new area of study and work.
It was horrible. Because it wasn't about "figuring things out for yourself." I mean, if the answer was available in a programming language or library manual, then debugging was easy.
No, the problem was you spent 95% of your debugging time working around bugs and unspecified behavior in the libraries and API's. Bugs in Windows, bugs in DLL's, bugs in everything.
Very frequently something just wouldn't work even though it was supposed to, you'd waste an entire day trying to get the library call to work (what if you called it with less data? what if you used different flags?), and then another day rewriting your code to use a different library call, and praying that worked instead. The amount of time utterly wasted was just massive. You didn't learn anything. You just suffered.
In contrast, today you just search from the problem you're encountering and find StackOverflow answers and GitHub issues describing your exact problem, why it's happening, and what the solution is.
I'm so happy people today don't suffer the way we used to suffer. When I look back, it seems positively masochistic.
TBF Ali bugs in some framework you're using still happens. The problem wasn't eliminated, just moved to the next layer.
Those debugging skills are the most important part of working with legacy software (which is what nearly all industry workers work in). It sucks but is necessary for success in this metric.
My point is that I can frequently figure out how to work around them in 5 minutes rather than 2 days, because someone else already did that work. I can find out that a different function call is the answer, or a weird flag that doesn't do what the documentation says, or whatever it is.
And my problem of it taking two days to debug something is eliminated, usually.
Guess I'm just dumb then. I'm still taking days to work around some esoteric, underdocumented API issues in my day-to-day work.
The thing is these API's are probably just as massive as old school OS cosebases, so I'm always tripping into new landmines. I can be doing high level gameplay stuff one week. Then the next week I need to figure out how authoring assets works, and then the next week I'm performing physics queries to manage character state. All in the same API that must span 10s of millions of lines of code at this point.
There are tons of obfuscated Java jar libraries out there that are not upgradeable that companies have built mission critical systems around only to find out they can't easily move to JVM 17 or 25 or whatever and they don't like hearing that.
(1)https://archive.org/details/borland-turbo-pascal-6.0-1990
I have not, but at the beginner level you don't really need it, there are tons of tutorials and language documentation that is easier to understand. Also beginners feel absolutely discouraged to ask anything, because even if the question is not a real duplicate, you use all terms wrong and thus get downvoted to hell and then your question is marked as a duplicate to something, that doesn't even answer your question.
Later it's quite nice to ask for clarifications of e.g. the meaning of something specific in a protocol or the behaviour of a particular program. But quite quickly you don't actually get any satisfying answers, so you revert to just read the source code of the actual program and are surprised how easy that actually was. (I mean it's still hard every time you start with a new unknown program, but it's easier than expected.)
Also when you implement a protocol, asking questions on StackOverflow doesn't scale. Not because the time you need to wait for answers; even if that were zero, it still takes to long time and is deeply unsatisfying to develop a holistic enough understanding to write the code. So you start reading the RFCs and quickly appreciate how logically and understandable they are. You first curse how unstructured anything is and then you recognize that the order follows what you need to write and you can just trust the text and write the algorithm down. Then you see that the order in which the protocol is described actually works quite well for async and wonder what the legacy code did, because not deviating from the standard is actually easier.
At some point you don't understand the standard, there will be no answer on StackOverflow, the LLM just agrees with you for every conflicting interpretation you suggest, so you hate everything and start reading other implementations. So no, you still need to figure out a lot for yourself.