3 ms·
I like to express this as "it's hard to teach people the solution to a problem they don't have". I think it's a major problem in a lot of educational endeavors,
by jerf 6y ago
I like to express this as "it's hard to teach people the solution to a problem they don't have". I think it's a major problem in a lot of educational endeavors, including a lot of things like git tutorials.
I think the educational ideal is something more like: 1. Teach how to do something specific, e.g., "here's how to write a simply dynamic web page in Python". 2. Once they've done that, guide the student into a problem, e.g., "what if the user puts a <script> tag in their username". 3. Solve the specific problem (encoding user input properly). 4. Now, contextualize that problem in the broader space. ("this is a pervasive problem in protocols, let's talk about parsing theory and show the mathematical way in which this is fundamentally ambiguous".) 5. Finally, show another instance of the problem to show that #4 wasn't just an academic thing ("remember the $NEWS_ARTICLE about $BAD_PROBLEM? That was a similar encoding problem only in email instead of HTML").
I think pretty much all those steps are important, all the way out to #5. You can tell #5 is often not done by how many people manage to walk out of a 4 year computer science or software engineering education convinced they've learned nothing of value, because none of the actually-quite-substantial amount of stuff they've learned was contextualized properly.