Hacker News new | ask | show | jobs
by statstutor 1916 days ago
I don't believe that letting someone struggle for a day is a better learning experience than just telling them what they need to know. Sometimes it might be, but I feel it is more likely just unnecessary struggle - resulting in the same or a worse, bodged, end result.

And, I am 100% sure that providing education is better than letting them struggle. If you don't want to tell them the answer (and I haven't fully understood why not), then pointing them in the right direction to discover the answer is certainly going to be more helpful.

3 comments

Yes, this is true -- and another thing that's true is that you might still miss something subtle in your reverse engineering efforts.
I have been in the position of having spent hours to figure it out myself. And I believe I’ve learned more in the process.
I hope and expect that you did learn more in hours than what you could have learned in two minutes.

If you had spent those same hours after two minutes of support, you might have learned even more.

No! Because I wouldn't have done all the failing things.

Example: I am a Unix user and I want to delete a directory. But I don't know how to do that. So I say "ls /bin" and think that maybe the "d" in "dd" has something to do with delete directory (and "df" is delete file?), and so I do "man dd". So I get some idea what "dd" can do. (Deleting directories is not one of them, though, it seems) I also find "unlink" which seems promising, but that one can't delete directories, only files.

If I had asked you, and you would have told me "rmdir", then I would never have learned about "dd" and "unlink".

It's just an example; I wasn't sure I could come up with something more realistic from actual development.

Learning is only a frustrating struggle if you do it the way most students are taught to do it at school, mostly through rote memorization and very boring repetition. But there are other effective ways of learning that are not frustrating and that allow people to explore and be creative.

What I try to teach developers is how to learn things without getting frustrated. Usually people get frustrated because they don't have to right process in place for learning things, they try bolting solutions onto existing code and try fitting a square peg into a round hole. They get massive compiler errors or stack traces that are hard to isolate from the specific problem they're having and it feels like in order to solve one problem they need to solve a dozen other tangentially related problems.

That's overwhelming and frustrating, but it need not be that way.

I teach people how when they come across a challenge, how to learn to come to a solution from first principles; how to create a minimal project isolated from the rest of what they're working on and experiment. I try to emphasize the importance of having various different mental models of how a computer works and how to apply those models to have a better understanding of what's happening beneath the hood.

> I haven't fully understood why not

Because working in my industry isn't a matter of knowing answers to questions. It's about the process of knowledge discovery and that process comes with experience and practice. I really don't need anyone to be a glorified typist... if you need to take an entire day to really understand how to solve a problem, even if it's a trivial problem I could solve in a minute, then take the day. That's an investment I'm willing to make now while you're a junior and I am in a position to fully understand the problem you're facing, compared to 10 years from now when I won't be able to fully understand the problem and then we're really screwed.

I've been at this for 8 years now and I think you're dreaming if you believe you'll ever get to the point where you're never just beating your head against the wall with something frustrating and non-obvious, no matter how great your learning or deduction skills are. Either that or you're much better at it than I am.
FWIW I've been doing this for 20 years now and I completely agree with you. Knowing when to get a fresh perspective on a problem is a part of learning healthy problem solving skills, and it's not often that banging your head against a problem for a full day with no progress is better for your skills development than asking for help after, say, an hour or two.

And it's not like you're going to someone more senior and saying "I'm stuck; do my work for me". Ideally you're just getting a strong hint as to the right approach to take, and can make progress with that.

> But there are other effective ways of learning that are not frustrating and that allow people to explore and be creative.

Like... asking for help and having a chat with a mentor who has relevant experience.

(Most) people don't do that easily and are likely to have already spent time and effort formulating the question.

Asking them to go away and spend more time on their own is interrupting an effective way of learning.