Als programmeergemeenschap helpt freeCodeCamp veel mensen die vragen hebben over hun code. Het kan behoorlijk verleidelijk zijn om de leerling simpelweg het antwoord te geven en verder te gaan, maar dat is eigenlijk schadelijk voor het leerproces. Hier is waarom:
Wanneer je iemand het antwoord geeft, ontnemen je hen dat “aha”-moment. Je verwijdert de kans voor hen om te leren hoe ze de conclusie kunnen bereiken door hun eigen denken, en laat hen in plaats daarvan verdergaan met minimale inspanning of nadenken.
Dus hoe kun je iemand het beste helpen met hun code?
Wat is de Socratische methode?
De Griekse filosoof Plato was een leerling van een andere filosoof, Socrates. In Plato’s werken schrijft hij vaak over de debatten die Socrates had met zijn collega’s en studenten.
Socrates begon deze discussies door gangbare overtuigingen ter discussie te stellen en ze te onderzoeken om hun compatibiliteit met andere overtuigingen in twijfel te trekken, en leidde mensen naar de waarheid.
Maar hoe vertaalt dat zich naar onze moderne interacties in een digitaal tijdperk?
Laten we een echt voorbeeld overwegen uit een van onze gemeenschappen:
Je zou geneigd kunnen zijn om hen het directe antwoord te geven, zoals dit codevoorbeeld:
const sum = nums.reduce((acc, el) => acc + el, 0);
Maar door dit te doen, heb je de logische redenering namens de leerling uitgevoerd.
In plaats daarvan zou je je moeten richten op het stellen van gerichte vragen om hen naar het antwoord te leiden. Bijvoorbeeld, je zou kunnen beginnen met vragen:
❓ Hoe zou je de som van een lijst met getallen op papier vinden, zonder code?
Het kan tegenintuïtief lijken om de leerling een vraag te stellen die hen dwingt om even weg te stappen van de code, maar je wijst hen eigenlijk op de onderliggende logica achter hun vraag.
Laten we aannemen dat de leerling reageert met iets als:
Ik zou elk nummer één voor één doorlopen en het optellen bij de som van de vorige nummers.
Als de leerling begint met het beantwoorden van je vragen, zou de dialoog moeten voortgaan in dit vraag-en-antwoordformaat. Je vragen zouden steeds specifieker en gerichter moeten worden naarmate de leerling vordert naar de oplossing.
Bijvoorbeeld, een reeks vragen zou eruit kunnen zien als:
Docent: “Geweldig, wat is nu een array van nummers?”
Student: “Een lijst?”
Docent: “Goed! Hoe zou je door die lijst itereren?”
Student: “Met een for-lus.”
Docent: “En wat moet jouw lus doen bij elke iteratie?”
Student: “Het huidige nummer optellen bij de som.”
Docent: “Waar kun je de som vinden?”
Student: “Ik zou het in een variabele buiten de lus kunnen zetten.”
Docent: “Geweldig, nu ben je klaar om te proberen de code te schrijven.”
— origineel voorbeeld geschreven voor dit artikel
Op dit punt zal de leerling waarschijnlijk de verbanden leggen en de uiteindelijke oplossing bereiken.
Socrates in de Moderne Cultuur
Het leren van de Socratische methode is moeilijk. In feite komen velen het pas tegen wanneer ze hun universitaire studies bereiken. Maar er zijn voorbeelden te vinden in de moderne popcultuur die je kunnen helpen begrijpen hoe de Socratische methode werkt.
De tv-show House, M.D. zit boordevol voorbeelden. Neem dit gesprek uit de aflevering getiteld “Three Stories”:
House: “Nierstenen zouden wat veroorzaken?”
Student: “Bloed in urine.”
House: “Welke kleur heeft je plas?”
Student: “Geel.”
House: “Welke kleur heeft je bloed?”
Student: “Rood.”
House: “Welke kleuren heb ik gebruikt?”
Student: “Rood, geel en bruin.
House: “En bruin. Wat veroorzaakt bruin?”
Student: “Afval”.
— (Frapier, 2008)¹
Je zult merken hoe dit gesprek verliep. House’s doel hier was niet om de leerling het antwoord te geven, maar om deductieve vragen te stellen om de leerling te begeleiden om het antwoord zelf te bereiken.
Overweeg de populaire film The Matrix:
Morpheus: “Heb je ooit een droom gehad, Neo, waarvan je zo zeker wist dat die echt was?”
Neo: “Dit kan niet zijn…”
Morpheus: “Zijn wat? Echt zijn?”
Morpheus: “Wat als je niet uit die droom kon ontwaken, Neo? Hoe zou je het verschil weten tussen de droomwereld en de echte wereld?”
— (Wachowski & Wachowski, 1999)²
In deze scène past Morpheus de Socratische methode toe om Neo te laten twijfelen aan zijn waarnemingen van de realiteit. Dit is een nogal dramatisch voorbeeld, maar het uitgangspunt blijft hetzelfde: in plaats van de leerling te vertellen hoe ze moeten denken, begeleid je hen om de conclusie uit eigen beweging te bereiken.
Ten slotte, laten we kijken naar een voorbeeld uit Legally Blonde:
Elle: “Jouw vader werd neergeschoten terwijl je aan het douchen was?”
…
Chutney: “Ja. Ik was mijn haar aan het wassen.”
Elle: “Mevrouw Windham, kunt u ons vertellen wat u eerder die dag aan het doen was?”
Chutney: “Ik stond op, ging naar Starbucks, ging naar de sportschool, liet mijn haar permanenten en kwam thuis.”
Elle: “Waar je in de douche ging.”
Chutney: “Ja.”
…
Elle: “…Had je ooit eerder een permanent gehad, mevrouw Windham?”
Chutney: “Ja.”
Elle: “Hoeveel, zou je zeggen?”
Chutney: “Twee per jaar sinds ik twaalf was. Jij rekent het maar uit.”
…
Elle: “Chutney, waarom zijn de krullen van Tracy Marcinko verpest toen ze met de tuinslang werd nat gespoten?”
Chutney: “Omdat ze nat werden.”
Elle: “Dat klopt. Want is niet de eerste kardinale regel van het onderhouden van een permanent dat je je haar minstens vierentwintig uur na het krijgen van een permanent niet nat mag maken, uit angst dat het ammoniumthiglycolaat inactief wordt? En zou iemand die gedurende haar leven — dertig permanents heeft gehad? — niet goed op de hoogte zijn van deze regel? En als je eigenlijk je haar niet aan het wassen was, zoals ik vermoed dat je niet deed, aangezien je krullen nog intact zijn, zou je dan niet het schot hebben gehoord?”
—(Luketic, 2001)³
De Socratische methode is vaak te zien in de rechtspraak, en dit dient als een uitstekend voorbeeld. Door deze uitwisseling probeert Elle Chutney niet naar een conclusie te leiden, maar eerder de toeschouwers (in dit geval, de jury). Dit is een belangrijke onderscheid voor een gemeenschap zoals de onze: waar het deelnemen aan een Socratische discussie met één lid daadwerkelijk de huidige en toekomstige leden kan ten goede komen die misschien jullie gesprek observeren of herbekijken.
Doel van de Socratische Methode
Het is belangrijk te erkennen dat het doel van de Socratische methode niet is om een snelle uitwisseling van informatie te presenteren. In plaats daarvan is het doel om de leerling eerst te laten beseffen dat ze minder weten dan ze denken, en hen vervolgens door middel van vragen naar het antwoord te leiden die bepaalde denkprocessen oproepen.⁴
Wanneer we dit toepassen op het leren programmeren, is het belangrijk om de frase “daag je aannames uit” te onthouden. We gaan er vaak van uit dat we weten wat de code die we hebben geschreven doet, dus onze eerste stap wanneer deze niet werkt, is om die aannames te onderzoeken.
Terwijl we leerlingen door het proces van debuggen leiden, willen we vragen stellen die hetzelfde doen. Een veelgestelde vraag in je repertoire zou moeten zijn: “Wat doet deze regel code?”. Wanneer de leerling antwoordt met informatie die onjuist is, reageer dan met vragen die dieper ingaan op kleinere componenten van de code – breek het probleem in stukken, zo gezegd.
Overweeg dit voorbeeld:
Leerling: “maar misschien zou dat niet werken omdat ik het boek moet vinden en niet de id in het boek”
Instructeur: “Klopt. Nu, het goede nieuws is dat we een functie hebben die dat ogenschijnlijk zou doen. Het slechte nieuws is dat die functie dat niet doet. Wat doet die functie dan wel?”
Leerling: “geeft bookId terug”
— afkomstig uit onze Discord-gemeenschap⁵
Door de vraag te stellen “Wat doet die functie in plaats daarvan?”, heeft de instructeur de richting aangegeven voor de leerling om tot de juiste conclusie te komen zonder specifieke informatie te hoeven verstrekken. De leerling wist al dat de functie niet werkte zoals verwacht, en de instructeur stelde de vraag om de aanname van de leerling uit te dagen dat de functie wel werkte.
Hier is nog een voorbeeld:
Instructeur: “Dit is het voorbeeld van de uitdaging. Heb je dat voorbeeld gevolgd dat ze gaven?”
Leerling: “ja maar ik begreep de for-in loop niet, ik begreep “(const food in refigerator)” niet, het verwarrend vinden om de string-eigenschapsnaam met const of let te vermelden (dat is het nu niet meer)”
Instructeur: “Oké, laten we hier beginnen in plaats van de volledige oplossing voor de Uitdaging”
Instructeur: “Wat doet die code als je het uitvoert?”
…
Leerling: “elke sleutel van het object werd ingesteld op de variabele food die in de for-in loop was gemaakt, het doorloopt vervolgens het object en logt de sleutel en de aan de sleutel toegewezen waarde?”
— afkomstig van onze Discord-community⁶
We kunnen opnieuw zien hoe de instructeur zich richt op het stellen van gerichte vragen die de gebruiker naar de oplossingen leiden via hun eigen redenering.
❗ Dat is het uiteindelijke doel van de Socratische methode: de leerling begeleiden om tot de logische conclusie te komen uitsluitend via hun eigen redenering.
Langdurige voordelen van de Socratische methode
De Socratische methode is niet alleen voordelig voor het oplossen van de onmiddellijke oplossing. Het deductieve redeneerproces dat in deze benadering wordt toegepast, kan de leerling ook op de lange termijn goed van dienst zijn.
Het proces van het stellen van vragen aan een leerling om hun aannames en kennis uit te dagen en hen naar de oplossing te begeleiden, is iets dat ook geïnternaliseerd kan worden. Het is een krachtig hulpmiddel om in je repertoire te hebben voor het benaderen van debugging, het isoleren van aannames en zelfs leren om een probleem te verwoorden.
Dat wil zeggen, door een leerling door deze vraag-en-antwoordgesprekken te leiden, kan de leerling ook weglopen met het vermogen om zichzelf deze vragen te stellen. Ze kunnen hetzelfde proces van het stellen van steeds meer gerichte vragen als een logische weg nemen en dit mentaal doorlopen wanneer ze in de toekomst problemen met hun code tegenkomen (of zelfs in andere aspecten van het leven)!
Conclusie
Het direct bieden van een oplossing aan een leerling belemmerd hun intellectuele groei en berooft hen van de belonende ervaring die voortkomt uit het bereiken van hun eigen logische conclusie. Door technieken zoals de Socratische methode te benutten, kunnen we een sterkere en effectievere leeromgeving bevorderen die het mogelijk maakt voor leerlingen om te groeien en te bloeien.
💡 Als je dit artikel hebt ontvangen als reactie op een forumpost, Reddit-commentaar, Discord-bericht of andere communicatie waarin je een medeleerling een werkende oplossing bood, overweeg dan alstublieft de voordelen van deze methode in plaats daarvan.
Deze benadering kan vermoeiend en langdradig lijken, en soms is het dat ook. Het is veel sneller (en misschien gemakkelijker) om iemand de code te geven die hun probleem oplost.
Maar die benadering schaadt de leerling meestal uiteindelijk. En als u deze auteur wilt vergeven voor een anekdote, heb ik gezien dat mensen gefrustreerd raken wanneer ze het onderwerp zijn van een Socratische benadering, of hun geduld verliezen in het heen en weer gesprek. Maar ik heb ze nooit boos of teleurgesteld gezien door dat eindresultaat – het “aha”-moment waarop ze de oplossing voor het probleem afleiden door hun eigen redenering.
Bronnen:
-
¹ Frapier, M. (2008). Being Nice is Overrated: House and Socrates on the Necessity of Conflict. In House and Philosophy (pp. 100–101). John Wiley & Sons, Inc.
-
² Wachowski, L., & Wachowski, L. (Regisseurs). (1999, 24 maart). The Matrix (Z. Staenberg, Red.). Warner Bros.
-
³ Luketic, R. (Regisseur). (2001, 13 juli). Legally Blonde (A. Brandt-Burgoyne, Red.). MGM Distribution Co.
-
⁴ Frapier, M. (2008). Being Nice is Overrated: House and Socrates on the Necessity of Conflict. In House and Philosophy (p. 103). John Wiley & Sons, Inc.
-
⁵ lightskingeneral & plamoni (2024, 4 januari). [Discord-gesprek]. Discord. Opgehaald 6 januari 2025, van https://discord.com/channels/692816967895220344/718214639669870683/1192488621043888198
-
⁶ lightskingeneral & jeremylt (2023, 13 november). [Discord-gesprek]. Discord. Opgehaald 6 januari 2025, van https://discord.com/channels/692816967895220344/718214639669870683/1173733715109761065
Speciale dank aan ArielLeslie en JeremyLT voor hun hulp bij dit artikel.
Source:
https://www.freecodecamp.org/news/how-to-help-someone-with-their-code-using-the-socratic-method/