많은 프로그래머들이 고집하는 오래된 격언은 "프로그래밍을 배우기 위해서는 특정한 유형의 마음이 필요하지만 모든 사람이 할 수있는 것은 아닙니다"라는 것입니다.
이제 우리 모두 자신의 일화 적 증거를 가지고 있다고 확신하지만 이것이 과학적으로 연구 되었습니까?
많은 프로그래머들이 고집하는 오래된 격언은 "프로그래밍을 배우기 위해서는 특정한 유형의 마음이 필요하지만 모든 사람이 할 수있는 것은 아닙니다"라는 것입니다.
이제 우리 모두 자신의 일화 적 증거를 가지고 있다고 확신하지만 이것이 과학적으로 연구 되었습니까?
답변:
초보자 프로그래머가 보유한 정신 모델의 생존 가능성을 조사하는 또 다른 연구 :
이 백서에서는 1 년차 Java 프로그래밍 과정 말에 초보 프로그래머가 사용하는 정신 모델의 실행 가능성에 대한 조사에 대해 설명합니다. 질적 연구 결과는 참여자들이 보유한 정신적 가치 모델과 참조 할당 범위를 식별합니다. 정량 분석 결과 약 1/3의 학생들이 가치가 부여되지 않은 정신적 모델을 보유했으며, 학생의 17 %만이 실용적인 기준이 부여 된 정신적 모델을 보유한 것으로 나타났습니다. 또한 참가자의 정신적 모델과 코스 내 평가 및 최종 시험에서의 성과를 비교해 볼 때, 실행 가능한 정신 모델을 가진 학생들은 실행 불가능한 모델을 가진 학생들보다 훨씬 더 나은 성능을 보였습니다. 이러한 결과는보다 "구조 주의자"를 제안하는 데 사용됩니다
또한 Sheep vs Goats 연구의 동일한 저자의 연구 결과 를 참조하십시오 (실제로는 결코 출판되지 않았 음). 2009 년 부터이 주제에 대한 그들의 마지막 그리고 가장 최근의 연구 는 프로그래밍의 초기 학습에서 성공에 대한 일관성의 영향에 대한 메타 분석입니다 (pdf).
프로그래밍의 첫 과정 전에 과제와 순서에 대한 학생의 지식을 분명히 검사하는 테스트가 설계되었지만 실제로는 추론 전략을 포착하도록 설계되었습니다. 한 실험에서 두 개의 다른 학생들이 발견되었습니다. 하나는 프로그램 실행의 정신 모델을 구축하고 지속적으로 적용 할 수 있습니다. 다른 하나는 모델을 만들 수 없거나 모델을 일관되게 적용 할 수 없었습니다. 첫 번째 그룹은 성공 또는 실패 측면에서 두 번째 그룹보다 코스 종료 시험에서 훨씬 더 잘 수행했습니다. 이 테스트는 성능 수준을 정확하게 예측하지는 못하지만 실험의 6 가지 복제 결과 (영국의 경우 5 개, 오스트레일리아의 경우 1 개)를 결합하여 일관성이 학습 초기 학습 성공에 큰 영향을 미치는 것으로 나타났습니다. 반면에 백그라운드 프로그래밍 경험은
그렇습니다. "프로그래머가되기 위해 누가 잘랐는 지"를 결정하기 위해 온라인에서 꽤 유명한 논문이 있습니다.
프로그래밍 초기 학습에 대한인지 연구 -Richard Bornat 교수, Dr. Ray Adams
모든 프로그래밍 교사는 결과에 '이중 혹'이 표시되는 것을 발견했습니다. 마치 두 개의 인구가있는 것처럼 [프로그램] 할 수있는 사람들과 [프로그램] 할 수없는 사람들은 각각 독립적 인 종 곡선을 가지고 있습니다.
프로그래밍 교육 및 학습에 대한 거의 모든 연구는 언어 변경, 응용 프로그램 영역 변경, IDE 사용 및 동기 부여 작업에 중점을 두었습니다. 작동하지 않으며 이중 혹이 지속됩니다.
코스가 시작되기 전에 프로그래밍 할 수있는 인구를 골라내는 테스트가 있습니다. 우리는 이중 혹을 따를 수 있습니다. 당신은 아마 이것을 믿지 않지만, 당신은 대화를 듣고 나면 그럴 것입니다. 우리는 그것이 어떻게 / 왜 작동하는지 정확히 알지 못하지만 좋은 이론이 있습니다.
여기 제프 앳 우드에 의해 블로그 포스트 결과를 해석하고 상황에 몇 가지를 넣습니다.
전자 컴퓨팅이 1950 년대에 발명 된 이래로 엄청난 변화가 있었음에도 불구하고 일부는 완고하게 동일하게 유지됩니다. 특히, 대부분의 사람들은 프로그램을 배울 수 없습니다 : 모든 대학 컴퓨터 과학 부서의 섭취량의 30 % ~ 60 %가 첫 번째 프로그래밍 과정에 실패합니다.
경험 많은 교사들은 지치지 만 결코이 사실을 잊어 버리지 않습니다. 오래된 사람들이 잘못하고 있다고 생각하는 초보 초보자는 쓴 경험에서 진실을 배우십시오. 그 주제가 1960 년대에 시작된 이래로 거의 2 세대가되었습니다.
누구나 프로그래머가 될 수 있습니다. 사람들이 스프레드 시트를 얼마나 쉽게 파악하는지 고려하십시오. 프로그래밍 가능한 환경에서 실험 및 탐색을 통해 Alan Kay가 프로그래밍에 어린이를 얼마나 쉽게 소개하는지 고려하십시오.
사람들은 대학 수준의 과정에서 성공을 공부하고 "일부 사람들은 프로그래밍을 배우기에 적합하지 않다"고 결론을 내릴 수 있습니다. 그러나 이러한 결론은 관측 된 증거의 범위를 크게 넘어 섭니다. 대신 프로그래밍을 가르치는 방법 (너무 추상적인가), 또는 어떤 프로그래밍 스타일을 가르치는가 (너무 필요한가?) 또는 프로그래밍 환경 (컴파일, 즉각적인 피드백이 없는가)으로 인해 얼마나 많은 실패가 발생할 수 있는가.
사람들이 이미 여러 가지 구체적인 사례로 작업 한 후 추상화를 가장 쉽게 파악할 수 있습니다. 즉, 우리가 이미 알고있을 때까지는 무언가를 배울 수 없습니다. 그러므로 초록부터 시작하는 것은 프로그래밍을 가르치는 완전히 어리석은 방법입니다. 실시간 피드백으로보다 구체적인 환경에서 배운 경우 (예에서와 같이 premisconceived "정신 모델"을 통해 넘어 많은 사람들이 성공할 것 CS에 대한 칸 아카데미 다음 권장) 추상화의 사다리를 올라 그들이 준비가되면. 학습 가능 프로그래밍 은 Bret Victor의 최근 에세이로 프로그래머가 학습에서 직면하는 불필요한 환경 문제에 주목합니다.
어떤 경우에는 수업에 실패한 학생들이 있습니다. 지적 게으름과 고의적 인 무지가 모든 인간 집단에 존재할 것입니다. 똑똑한 사람들도 예외는 아닙니다. 화려한 크랭크를 주장한 사람은 누구나 증명할 수 있습니다. 그러나 특히 프로그래밍과 수학의 경우 종종 학생들에게 실패하는 수업입니다.
x = 1; y = x;
질문은 " x
및 의 값은 무엇입니까 y
? "
Is it true that not everyone can learn how to program?
질문에서 선을, 우리의 경험이 많은 회원들은이 가이드 라인을 맞지 않았던 것을 깨닫고, 그것을 무시하고, 질문의 연구 / 과학 측면에 답을 집중. 당신도 똑같이 할 수 있습니까?
어쩌면 이것은 일 화일 수도 있지만, 수백 명의 교양 학생들에게 인트로 프로그래밍을 가르쳤을 때 그런 "더블 혹"을 발견하지 못했습니다. 일부 사람들은 다른 사람들보다 열심히 일했지만 아주 소수의 사람들은 자신의 길을 허세하려고했습니다.
그것이 가르치는 방법과 많은 관련이 있습니다.
또한 많은 것이 욕망과 관련이 있습니다. 그럼에도 불구하고 그들은 정직한 노력을 기울이면 그것을 배울 수 있습니다.
내가 시작했을 때 프로그래밍 작업을하기 전에 "적성 검사"를하는 것이 일반적이었습니다. 컴퓨터 공학 졸업생은 많지 않았으므로 다른 분야에서 채용하는 것이 일반적이었습니다.
테스트는 IQ 테스트에서 볼 수있는 것과 유사합니다 (시퀀스의 다음 숫자 등).
일화적인 증거는 시험에 합격 한 모든 사람이 훌륭한 프로그래머가 된 것은 아니지만 시험에 실패한 사람은 없었지만 다른 이유로 고용 된 사람은 좋은 프로그래머가되었다는 일화 증거가있었습니다.
슬프게도 HR 드론은 이러한 테스트를 이해하지 못했고 (그들이 실패했을 때 실패했습니다!) 요즘 채용은 HR 드론이 이해하는 것-좋은 대학, 의사 소통 및 정장 착용 기술에 달려 있습니다.
이것이 바로 큰 IT 부서가 PowerPoint 쇼에 능숙하고 훌륭한 프로그래머가 거의없는 이유입니다.
Dehnadi와 Bornat의 이중 혹 또는 염소 대 양의 연구를 인용 한 사람들에게는 Caspersen et al (2007)의 Mental Models and Programming Aptitude 를 살펴 보는 것이 좋습니다 .
입문 프로그래밍 과정에 참여하는 학생들의 성공을 예측하는 것은 25 년 이상 활발한 연구 분야였습니다. 최근까지 변수 나 테스트에서 예측력이 없었습니다. 그러나 Dehnadi와 Bornat는 프로그래밍 양을 비 프로그래밍 염소와 깨끗하게 분리하기위한 프로그래밍 적성에 대한 간단한 테스트를 발견했다고 주장합니다. 우리는 그들의 이론과 시험 도구를 간략하게 제시합니다.
우리는 그들이 찾은 결과를 검증하고 일반화하기 위해 현지 상황에서 시험을 반복했지만, 시험이 입문 프로그램 작성 과정에서 학생들의 성공을 예측한다는 것을 보여줄 수 없었습니다.
테스트 기기의 이러한 실패에 기초하여, 우리는 서로 다른 결과에 대한 다양한 설명을 논의하고이 영역에서 지역 결과를 일반화 할 수있는 연구 방법을 제안합니다. 또한 Dehnadi와 Bornat의 프로그래밍 적성 테스트에 대해 논의하고 비판하고 대체 테스트 장비를 고안합니다.
추상화 용량 또는 다른 유용한 지식에 대한 연구를 할 수는 있지만 프로그래밍의 정의는 명확하지 않으며 프로그래밍을 보는 반대의 방법이 있기 때문에 인용문은 관련이 없다고 생각합니다.
첫 번째 종류 : 프로그래밍 언어는 컴퓨터가 수행해야 할 작업을 설명하기 위해 만들어진 일종의 휴먼 언어입니다. 따라서 말하는 사람은 모두 프로그래밍 할 수 있어야합니다. 스크립트는 기본, 조판 시스템이라고 텍은 :, 등등 ... 언어 또는 시스템이 중요하지 않습니다, 그것은 그들의 제작자와 사람들이 그것을보고하는 방법이있다 "친애하는 프로그램 / 컴퓨터, 내 이름을 인쇄하십시오" 보다는 "11 자 크기의 공간을 확보 한 다음이 공간의 주소를 지정하고 저장 한 다음 11 개의 문자를이 메모리에 입력하여 키보드 버퍼에서 제거 할 수 있습니다 (그러나 청소하는 것을 잊지 마십시오) 등 "
이 경우 연구가 "모든 언어가 빨리 동화 될 수있는 것은 아닙니까?"라는 것이 분명합니다.
반면, 프로그래밍 언어는 컴퓨터 작동 방식 또는 작동 방식, 1950 년대 컴퓨터를 생각하면 어떻게 '연결'되어야하는지 설명하는 방법 일뿐입니다. 따라서 프로그래머가 프로그래밍 언어를 완벽하게 말하더라도 지능이이 추상화 레벨에 도달 할 수없는 경우 바이트 바이트가 메모리에 저장된 바이트, 포인터 등의 문자열을 볼 수있는 경우 지구로 돌아가서 문제에 연결하십시오. 그러므로 모든 사람이 (조립 언어로) 프로그래밍 할 수있는 것은 아닙니다.
이 외에도, 무언가를 만들고 생산하는 데 필요한 모든 자질이 필요합니다. 원하는 것을 잘 알고, 다른 사람들이 이해 / 완료 / 검토하고, 목표에 집중하는 등의 작업을 쉽게하십시오.하지만 건축가와 마찬가지로 작가, 뮤지션, 프로 슈트 등
그러나 대부분의 인간에게는 좋은 추상화 능력, 특히 어린이가 있습니다. 일부 독일 학교는 Haskell 을 초반부터 가르치고 있습니다 ( Pascal 또는 Delphi 와 같은 프로그래밍 언어 는 모든 독일 학교에서 가르치고 있습니다).
그래서 나는 그 질문에 대답하기가 매우 어렵고 어떤 대답 (또는 연구)도 관련이 없을 것이라고 말합니다.
Peter Norvig의 10 년간 자신을 프로그래밍 하세요 ( Teach Yourself Programming) 기사에서 사람들이 프로그래밍을 배우는 방법에 대한 간단한 분석을 볼 수 있습니다. 그는 태어난 프로그래머가 없다고 생각하는 것 같습니다.
몇 년 전에 나는 군사 리더십 이론을 포함한 몇 가지 과정을 수행했습니다. 이론의 일부는 자연 지도자에서 가죽 끈으로 개를 이끌 수없는 사람들에 이르기까지 리더십 연속체가 있다는 것입니다. 아이디어는 사람들이이 리더십 연속체에 종 곡선으로 분포되어 있으며, 대부분의 사람들이 두 극단 사이에 있다는 것입니다. 극단의 "개를 이끌 수 없었습니다"라는 말을 제외하고는 거의 모든 사람들이 지도력을 가르 칠 수있었습니다. 누군가를 지도자로 만들기 위해 필요한 노력의 양은 그들이 연속체에서 앉은 곳에 달려있었습니다.
나는 프로그래밍에 비슷한 연속체와 비슷한 분포가 있다고 생각합니다. 힘들이지 않은 사람들이 있고, 그들의 삶이 그것에 의존한다면 결코 그것을 얻을 수없는 사람들이있을 것입니다. 그러나 그들은 종 곡선의 끝에있는 몇 안됩니다. 대부분의 사람들은 연속체에서 이러한 극단 사이에 앉아 있습니다. 그들은 프로그램을 배우는 것을 배울 수 있지만, 가르치는 데 필요한 노력은 그들이 연속체의 어디에 있는지에 달려 있습니다.
나는 그것이 단지 프로그래밍인지 확실하지 않습니다. 사람들이 단순히 컴퓨터 사용을 배우는 것과 같은 현상을 보았습니다. 대학으로 돌아가서 나는 노인반을위한 컴퓨터 교육을 주관하는 실험실의 실험실 조교였습니다.
2 주 안에 나는 그것을 얻을 사람과 기본적으로 100 % 정확도를 갖지 않는 사람을 식별 할 수있었습니다. 당신은 이것이 컴퓨터가 작동하는 방식이라는 것을 받아들 였거나 당신은 학급 전체에 대해 컴퓨터를 대적했습니다. 중간 근거가 없었습니다. (이것이 시니어 클래스라는 사실은 우리가 패턴을 훨씬 더 분명하게 만드는 많은 헤드 바이커를 가지고 있음을 의미했습니다.)