สุภาษิตโบราณที่โปรแกรมเมอร์หลายคนยึดติดคือ "ต้องใช้ความคิดบางอย่างในการเรียนรู้การเขียนโปรแกรมและทุกคนไม่สามารถทำได้"
ตอนนี้ฉันแน่ใจว่าเราทุกคนมีหลักฐานพอสมควรของเราเอง แต่มีการศึกษาทางวิทยาศาสตร์หรือไม่?
สุภาษิตโบราณที่โปรแกรมเมอร์หลายคนยึดติดคือ "ต้องใช้ความคิดบางอย่างในการเรียนรู้การเขียนโปรแกรมและทุกคนไม่สามารถทำได้"
ตอนนี้ฉันแน่ใจว่าเราทุกคนมีหลักฐานพอสมควรของเราเอง แต่มีการศึกษาทางวิทยาศาสตร์หรือไม่?
คำตอบ:
การศึกษาอื่นการศึกษาความมีชีวิตของแบบจำลองทางจิตที่จัดทำโดยโปรแกรมเมอร์มือใหม่ :
บทความนี้จะอธิบายการตรวจสอบความมีชีวิตของแบบจำลองทางจิตที่ใช้โดยโปรแกรมเมอร์มือใหม่เมื่อสิ้นสุดหลักสูตรการเขียนโปรแกรม Java ปีแรก ผลการวิจัยเชิงคุณภาพระบุช่วงของแบบจำลองทางจิตของค่านิยมและการมอบหมายการอ้างอิงที่จัดขึ้นโดยผู้เข้าร่วม การวิเคราะห์เชิงปริมาณพบว่าประมาณหนึ่งในสามของนักเรียนมีแบบจำลองทางจิตที่ไม่สามารถปฏิบัติได้ของการกำหนดค่าและมีเพียง 17% ของนักเรียนที่มีรูปแบบจิตที่ทำงานได้ของการกำหนดอ้างอิง นอกจากนี้ในแง่ของการเปรียบเทียบระหว่างแบบจำลองทางจิตของผู้เข้าร่วมกับการปฏิบัติในการประเมินในหลักสูตรและการสอบปลายภาคพบว่านักเรียนที่มีแบบจำลองทางจิตที่ทำงานได้นั้นมีประสิทธิภาพดีกว่าแบบที่ไม่สามารถใช้งานได้ การค้นพบนี้ใช้เพื่อเสนอ "คอนสตรัคติวิสต์" มากกว่า
นอกจากนี้โปรดดูการวิจัยในภายหลังจากผู้เขียนเดียวกันของการศึกษา Sheep vs Goats (ซึ่งไม่เคยตีพิมพ์จริงเพื่อให้ชัดเจน) การศึกษาล่าสุดและล่าสุดของพวกเขาในหัวข้อนี้ตั้งแต่ปี 2009 คือการวิเคราะห์ Meta ของผลของความสอดคล้องต่อความสำเร็จในการเรียนรู้เริ่มต้นของการเขียนโปรแกรม (pdf)
การทดสอบถูกออกแบบมาเพื่อตรวจสอบความรู้ของนักเรียนเกี่ยวกับการมอบหมายและลำดับก่อนหลักสูตรแรกในการเขียนโปรแกรม แต่อันที่จริงถูกออกแบบมาเพื่อจับกลยุทธ์การใช้เหตุผลของพวกเขา การทดลองพบว่ามีนักเรียนสองคนที่แตกต่างกัน: คนหนึ่งสามารถสร้างและใช้แบบจำลองทางจิตของการทำงานของโปรแกรมอย่างสม่ำเสมอ อีกคนหนึ่งปรากฏว่าไม่สามารถสร้างแบบจำลองหรือนำไปใช้อย่างสม่ำเสมอ กลุ่มแรกทำคะแนนได้ดีกว่าการสอบปลายภาคมากกว่ากลุ่มที่สองในแง่ของความสำเร็จหรือความล้มเหลว การทดสอบไม่ได้คาดการณ์ระดับประสิทธิภาพอย่างแม่นยำ แต่โดยการรวมผลลัพธ์ของการทดสอบซ้ำหกครั้งห้าครั้งในสหราชอาณาจักรและอีกหนึ่งรายการในออสเตรเลียเราแสดงให้เห็นว่าความสอดคล้องนั้นมีผลอย่างมากต่อความสำเร็จในการเรียนรู้ล่วงหน้า ประสบการณ์การเขียนโปรแกรมพื้นหลังในทางกลับกัน
ใช่มีกระดาษที่มีชื่อเสียงทางออนไลน์ที่ได้รับการออกแบบมาเพื่อระบุว่า "ใครถูกตัดออกไปเป็นโปรแกรมเมอร์"
การศึกษาความรู้ความเข้าใจเกี่ยวกับการเรียนรู้ในช่วงต้นของการเขียนโปรแกรม - ศาสตราจารย์ริชาร์ด Bornat, ดร. เรย์อดัมส์
ครูของการเขียนโปรแกรมทั้งหมดพบว่าผลลัพธ์ของพวกเขาแสดง 'โคกสองเท่า' ราวกับว่ามีประชากรสองคน: ผู้ที่สามารถ [โปรแกรม] และผู้ที่ไม่สามารถ [โปรแกรม] แต่ละคนมีเส้นโค้งระฆังอิสระ
งานวิจัยเกือบทั้งหมดในการเรียนการสอนการเขียนโปรแกรมและการเรียนรู้มุ่งเน้นไปที่การสอน: เปลี่ยนภาษาเปลี่ยนพื้นที่การสมัครใช้ IDE และทำงานกับแรงจูงใจ มันไม่ทำงานและโคกคู่ยังคงมีอยู่
เรามีการทดสอบที่เลือกประชากรที่สามารถโปรแกรมก่อนที่จะเริ่มหลักสูตร เราสามารถแยกโคกคู่ออกจากกัน คุณอาจไม่เชื่อสิ่งนี้ แต่หลังจากคุณได้ยินเสียงพูด เราไม่รู้แน่ชัดว่ามันทำงานอย่างไร แต่เรามีทฤษฎีที่ดี
นี่คือบล็อกโพสต์โดย Jeff Atwoodที่ตีความผลลัพธ์และทำให้บางสิ่งเข้ากับบริบท
แม้จะมีการเปลี่ยนแปลงครั้งใหญ่ที่เกิดขึ้นตั้งแต่การคำนวณทางอิเล็กทรอนิกส์ได้ถูกคิดค้นขึ้นในปี 1950 แต่บางสิ่งก็ยังคงเหมือนเดิม โดยเฉพาะอย่างยิ่งคนส่วนใหญ่ไม่สามารถเรียนรู้ที่จะโปรแกรม: ระหว่าง 30% และ 60% ของการบริโภคภาควิชาวิทยาการคอมพิวเตอร์มหาวิทยาลัยทุกคนล้มเหลวหลักสูตรการเขียนโปรแกรมครั้งแรก
ครูที่มีประสบการณ์เบื่อหน่าย แต่ไม่เคยลืมความจริงข้อนี้ ผู้เริ่มต้นที่สดใสที่เชื่อว่าผู้เฒ่าคนแก่ต้องทำผิดเรียนรู้ความจริงจากประสบการณ์อันขมขื่น และเป็นเช่นนั้นมาเกือบสองชั่วอายุคนนับตั้งแต่เริ่มหัวข้อในทศวรรษ 1960
ทุกคนสามารถเป็นโปรแกรมเมอร์ พิจารณาว่าผู้คนเข้าใจกระดาษคำนวณได้ง่ายเพียงใด พิจารณาว่า Alan Kay แนะนำให้เด็กรู้จักการเขียนโปรแกรมโดยใช้การทดลองและการสำรวจอย่างไรในสภาพแวดล้อมที่ตั้งโปรแกรมได้
ผู้คนอาจศึกษาความสำเร็จในหลักสูตรระดับวิทยาลัยและสรุปว่า "บางคนไม่เหมาะที่จะเรียนรู้การเขียนโปรแกรม" อย่างไรก็ตามข้อสรุปดังกล่าวรุนแรงเกินขอบเขตอย่างรุนแรงของหลักฐานที่สังเกต ความล้มเหลวมากน้อยเพียงใดที่สามารถนำมาประกอบกับวิธีการสอนการเขียนโปรแกรม (นามธรรมเกินไป?) หรือรูปแบบของการเขียนโปรแกรมที่สอน (จำเป็นเกินไปหรือไม่) หรือสภาพแวดล้อมการเขียนโปรแกรม (การรวบรวม
เป็นที่เข้าใจกันดีว่าผู้คนสามารถเข้าใจ abstractions ได้อย่างง่ายดายที่สุดหลังจากที่พวกเขาได้ทำงานกับตัวอย่างที่เป็นรูปธรรมหลายครั้ง - นั่นคือเราไม่สามารถเรียนรู้บางสิ่งจนกว่าเราจะรู้แล้ว ดังนั้นการเริ่มต้นด้วยบทคัดย่อจึงเป็นวิธีที่โง่เขลาในการสอนการเขียนโปรแกรม หลายคนที่สะดุด premisconceived รุ่น "จิต" จะเจริญเติบโตถ้าสอนในสภาพแวดล้อมที่เป็นรูปธรรมมากขึ้นที่มีความคิดเห็นแบบ real-time (เช่นในขณะที่คาห์นสกา CS ) แล้วการสนับสนุนในการปีนบันไดของนามธรรมเมื่อพวกเขาจะพร้อมสำหรับมัน Learnable Programmingเป็นบทความล่าสุดโดย Bret Victor ดึงความสนใจไปที่ความท้าทายด้านสิ่งแวดล้อมที่ไม่จำเป็นซึ่งโปรแกรมเมอร์ต้องเผชิญในการเรียนรู้
ในบางกรณีมันเป็นนักเรียนที่ล้มเหลวในชั้นเรียนของพวกเขา ความเกียจคร้านทางปัญญาและความไม่รู้เจตนาจะมีอยู่ในกลุ่มคนจำนวนมาก สมาร์ทโฟล์กก็ไม่ใช่ข้อยกเว้นเพราะทุกคนที่โต้เถียงกับข้อเหวี่ยงที่สดใสสามารถยืนยันได้ แต่โดยเฉพาะอย่างยิ่งสำหรับการเขียนโปรแกรมและคณิตศาสตร์มันมักจะเป็นชั้นเรียนที่ล้มเหลวของนักเรียน
x = 1; y = x;
และคำถามคือ " คุณค่าของx
และy
คืออะไร "
Is it true that not everyone can learn how to program?
บรรทัดนั้นออกจากคำถามสมาชิกที่มีประสบการณ์มากกว่าของเราเพิกเฉยโดยตระหนักว่าไม่เป็นไปตามหลักเกณฑ์ของเราและรวบรวมคำตอบของพวกเขาในด้านการวิจัย / วิทยาศาสตร์ของคำถาม คุณช่วยทำสิ่งเดียวกันได้ไหม
อาจจะเป็นเรื่องเล็ก ๆ น้อย ๆ แต่เมื่อฉันสอนการเขียนโปรแกรมอินโทรให้กับนักเรียนศิลปศาสตร์หลายร้อยคนฉันไม่พบ "โคกสองเท่า" ดูเหมือนว่าพวกเขาทุกคนจะมีความสามารถ แต่บางคนก็ทำงานหนักกว่าคนอื่น ๆ และมีคนเพียงไม่กี่คนที่พยายามเผชิญหน้ากับพวกเขา
มีหลายสิ่งที่เกี่ยวข้องกับวิธีการสอน
มีหลายสิ่งที่ต้องทำด้วยความปรารถนา - บางคนไม่พบว่าการเขียนโปรแกรมมีความน่าสนใจน้อยที่สุด แต่ถึงกระนั้นพวกเขาก็สามารถเรียนรู้ได้หากพวกเขาใช้ความพยายามอย่างซื่อสัตย์
เมื่อฉันเริ่มต้นมันเป็นเรื่องปกติที่จะนั่ง "ทดสอบความถนัด" ก่อนที่คุณจะได้งานเขียนโปรแกรม มีบัณฑิตสาขาวิทยาศาสตร์คอมพิวเตอร์ไม่มากนักดังนั้นจึงเป็นเรื่องธรรมดาที่จะรับสมัครจากสาขาอื่น
การทดสอบคล้ายกับที่คุณเห็นในการทดสอบไอคิว (หมายเลขถัดไปในลำดับ ฯลฯ ) คืออะไร
หลักฐานพอสมควรคือในขณะที่ไม่ใช่ทุกคนที่ผ่านการทดสอบได้กลายเป็นโปรแกรมเมอร์ที่ดีไม่มีใครที่ล้มเหลวในการทดสอบ แต่ได้รับการว่าจ้างด้วยเหตุผลอื่น ๆ ที่เคยเป็นโปรแกรมเมอร์ที่ดี
เจ้าหน้าที่ฝ่ายทรัพยากรบุคคลที่น่าเศร้าไม่เข้าใจการทดสอบเหล่านี้ (และล้มเหลวเมื่อพวกเขารับพวกเขา!) ดังนั้นการรับสมัครในทุกวันนี้ขึ้นอยู่กับสิ่งที่เจ้าหน้าที่โดรนเข้าใจ - วิทยาลัยที่ดีการสื่อสารและทักษะการสวมใส่ที่เหมาะสม
นี่เป็นเหตุผลที่แผนกไอทีขนาดใหญ่มีผู้คนมากมายที่ยอดเยี่ยมในงาน PowerPoint และโปรแกรมเมอร์ที่ดีเพียงไม่กี่คน
สำหรับผู้ที่อ้างถึงการศึกษาของ Dehnadi และ Bornat แบบ double-hump หรือ goat-vs-sheep มันคุ้มค่าที่จะตรวจสอบแบบจำลองทางจิตและความถนัดในการเขียนโปรแกรมโดย Caspersen et al (2007) ที่พวกเขาพยายามทำซ้ำ:
การทำนายความสำเร็จของนักเรียนที่เข้าร่วมในหลักสูตรการเขียนโปรแกรมเบื้องต้นเป็นพื้นที่การวิจัยที่ใช้งานมานานกว่า 25 ปี จนกระทั่งเมื่อไม่นานมานี้ไม่มีตัวแปรหรือการทดสอบใด ๆ ที่มีอำนาจการทำนายที่สำคัญ อย่างไรก็ตาม Dehnadi และ Bornat อ้างว่าได้พบการทดสอบอย่างง่ายสำหรับการเขียนโปรแกรมความถนัดเพื่อแยกแกะการเขียนโปรแกรมอย่างหมดจดจากแพะที่ไม่ใช่การเขียนโปรแกรม เรานำเสนอทฤษฎีและเครื่องมือทดสอบของพวกเขาสั้น ๆ
เราทำการทดสอบซ้ำในบริบทท้องถิ่นของเราเพื่อตรวจสอบและอาจสรุปผลการวิจัยของพวกเขา แต่เราไม่สามารถแสดงได้ว่าการทดสอบทำนายความสำเร็จของนักเรียนในหลักสูตรการแนะนำโปรแกรมเบื้องต้นของเรา
จากความล้มเหลวของเครื่องมือทดสอบนี้เราจะอธิบายคำอธิบายต่าง ๆ สำหรับผลลัพธ์ที่แตกต่างกันของเราและแนะนำวิธีการวิจัยซึ่งอาจเป็นไปได้ที่จะสรุปผลการวิจัยในพื้นที่นี้ นอกจากนี้เรายังพูดคุยและวิพากษ์วิจารณ์การทดสอบความถนัด Dehnadi และ Bornat ของการเขียนโปรแกรมและประดิษฐ์เครื่องมือทดสอบทางเลือก
เราสามารถศึกษาเกี่ยวกับความสามารถที่เป็นนามธรรมหรือความรู้ที่เป็นประโยชน์อื่น ๆ แต่ความหมายของการเขียนโปรแกรมไม่ชัดเจนและฉันคิดว่าข้อความที่ไม่เกี่ยวข้องเพราะมีวิธีที่ตรงกันข้ามเพื่อดูการเขียนโปรแกรม:
ประเภทแรก: ภาษาการเขียนโปรแกรมคือ (หรือควร) ภาษามนุษย์บางประเภทที่ทำขึ้นเพื่ออธิบายงานสำหรับคอมพิวเตอร์ที่จะดำเนินการดังนั้นทุกคนที่พูดควรจะสามารถตั้งโปรแกรม มันเรียกว่าการเขียนสคริปต์พื้นฐานระบบเรียงพิมพ์TeXฯลฯ ... ภาษาหรือระบบไม่สำคัญมันเป็นวิธีที่ผู้สร้างและผู้คนมองมัน: "เรียนโปรแกรม / คอมพิวเตอร์โปรดพิมพ์ชื่อของฉัน"แทนที่จะเป็น"ให้ฉันมีที่ว่างขนาดสิบเอ็ดตัวอักษรจากนั้นให้ที่อยู่ของพื้นที่นี้จากนั้นให้ฉันเก็บไว้แล้วป้อนตัวอักษรสิบเอ็ดเข้าไปในหน่วยความจำนี้ซึ่งคุณสามารถนำออกจากบัฟเฟอร์ของแป้นพิมพ์ของฉัน (แต่อย่าลืมทำความสะอาด เป็นต้น "
ในกรณีนี้เป็นที่ชัดเจนว่าการศึกษาค่อนข้างจะเป็น "ไม่ใช่ทุกภาษาที่สามารถหลอมรวมได้อย่างรวดเร็ว?"
ในทางกลับกันภาษาการเขียนโปรแกรมเป็นเพียงวิธีการอธิบายวิธีการทำงานของคอมพิวเตอร์หรือวิธีการทำงานวิธีการเชื่อมต่อ 'ถ้าคุณนึกถึงคอมพิวเตอร์ยุค 1950 ดังนั้นโปรแกรมเมอร์จึงไม่สามารถทำอะไรได้แม้ว่าเขาจะพูดภาษาการเขียนโปรแกรมได้อย่างสมบูรณ์แบบหากสติปัญญาของเขา / เธอไม่สามารถไปถึงระดับที่เป็นนามธรรมนี้ซึ่งคุณเห็นไบต์ที่ถูกเก็บไว้ในหน่วยความจำสตริงเป็นตัวชี้ ฯลฯ แล้ว กลับไปที่โลกเพื่อเชื่อมโยงกับปัญหา ดังนั้นไม่ใช่มนุษย์ทุกคนสามารถเขียนโปรแกรม (ในภาษาแอสเซมบลี ... )
นอกเหนือจากนี้คุณจะต้องมีคุณสมบัติทั้งหมดที่จำเป็นในการทำงานและสร้างบางสิ่ง: รู้ดีในสิ่งที่คุณต้องการทำให้ผู้อื่นเข้าใจ / เสร็จสมบูรณ์ / ทบทวนทบทวนให้ความสำคัญกับวัตถุประสงค์ของคุณ ฯลฯ ... แต่เหมือนสถาปนิก นักเขียนนักดนตรีผู้ค้าประเวณี ... นักเล่นแร่แปรธาตุอะฮะ ฯลฯ
แต่มนุษย์ส่วนใหญ่มีความสามารถทางนามธรรมที่ดีโดยเฉพาะเด็ก ๆ โรงเรียนภาษาเยอรมันบางแห่งสอนHaskellให้กับเด็กก่อนวัยเรียน (ภาษาการเขียนโปรแกรมเช่นPascalหรือDelphiนั้นกำลังสอนอยู่ในโรงเรียนภาษาเยอรมันทุกแห่ง)
ดังนั้นฉันจะบอกว่าคำถามยากมากที่จะตอบและคำตอบใด ๆ (หรือการศึกษา) มีแนวโน้มที่จะไม่เกี่ยวข้อง
คุณจะพบการวิเคราะห์สั้น ๆ ว่าผู้คนเรียนรู้การเขียนโปรแกรมได้อย่างไรในบทความสอนตัวเองการเขียนโปรแกรมในสิบปีโดย Peter Norvig ดูเหมือนว่าเขาจะคิดว่าไม่มีโปรแกรมเมอร์เกิด
หลายปีที่ผ่านมาฉันทำหลายหลักสูตรซึ่งรวมถึงทฤษฎีความเป็นผู้นำทางทหาร ส่วนหนึ่งของทฤษฎีก็คือมีภาวะผู้นำอย่างต่อเนื่องตั้งแต่ผู้ที่เป็นผู้นำตามธรรมชาติจนถึงผู้ที่ไม่สามารถจูงสุนัขได้ แนวคิดก็คือผู้คนได้รับการแจกจ่ายให้กับความต่อเนื่องของการเป็นผู้นำนี้ด้วยเส้นโค้งระฆังโดยที่คนส่วนใหญ่อยู่ที่ไหนสักแห่งระหว่างทั้งสองขั้ว นอกเหนือจากคนไม่กี่คนที่ไกลสุดขีด "ไม่สามารถนำทางสุนัข" ได้เกือบทุกคนสามารถสอนศิลปะแห่งความเป็นผู้นำได้ จำนวนของความพยายามที่จะทำให้ใครบางคนกลายเป็นผู้นำขึ้นอยู่กับว่าพวกเขานั่งอยู่ที่ไหน
ฉันสงสัยว่าการเขียนโปรแกรมมีความต่อเนื่องและการกระจายที่คล้ายกัน จะมีคนที่เพิ่งได้รับมันอย่างง่ายดายและผู้ที่ไม่เคยได้รับถ้าชีวิตของพวกเขาขึ้นอยู่กับมัน แต่พวกมันอยู่ที่ปลายหางโค้ง คนส่วนใหญ่นั่งระหว่างสุดขั้วเหล่านั้นบนความต่อเนื่อง พวกเขาสามารถเรียนรู้ที่จะเขียนโปรแกรม แต่ความพยายามที่จำเป็นในการสอนพวกเขาจะขึ้นอยู่กับว่าพวกเขานั่งอยู่ตรงไหน
ฉันไม่แน่ใจว่ามันเป็นเพียงการเขียนโปรแกรม ฉันเห็นปรากฏการณ์แบบเดียวกันกับผู้คนเพียงแค่เรียนรู้ที่จะใช้คอมพิวเตอร์ ย้อนกลับไปในวิทยาลัยฉันเป็นผู้ช่วยห้องแล็บในห้องแล็บที่ใช้คอมพิวเตอร์สำหรับการเรียนในชั้นสูง
ภายในสองสัปดาห์ฉันสามารถระบุผู้ที่จะได้รับและผู้ที่ไม่ได้รับความแม่นยำ 100% คุณอาจยอมรับว่านี่เป็นวิธีที่คอมพิวเตอร์ใช้งานหรือคุณตบหัวกับมันสำหรับทั้งชั้นเรียน ไม่มีพื้นกลาง (ความจริงที่ว่ามันเป็นคลาสผู้สูงอายุนั่นหมายความว่าเรามีหัวหน้านักเต้นหลายคนซึ่งทำให้รูปแบบชัดเจนยิ่งขึ้น)