이건 비단 프로그래밍 언어와 이를 위한 의사소통으로 국한할게 아니라 전반적인 문화와 관습에 대한 걸로 확대시켜서 다루면 좋지 않을까 싶네.
ㅇㅅㅇ
비영어권 원어민의 컴퓨터 프로그래밍 학습: 장벽, 요구사항, 그리고 설계 기회
Philip J. Guo
UC San Diego, La Jolla, CA, USA
pg@ucsd.edu
초록
현재 거의 모든 나라의 사람들이 컴퓨터 프로그래밍을 배우고 있지만, 대부분의 프로그래밍 언어, 라이브러리, 문서, 교육 자료는 영어로 되어 있다. 비영어권 원어민들이 영어 기반 자료로 학습할 때 어떤 장벽에 직면하는가? 그들이 교육 자료 개선을 위해 바라는 것은 무엇인가? 우리는 프로그래밍 교육 웹사이트에 설문을 배포하고, 86개국 74개 모국어에 걸친 840개의 응답을 분석하여 이 질문들을 탐구하였다. 비영어권 원어민들은 교육 자료 읽기, 기술적 의사소통, 코드 읽기·쓰기, 그리고 영어와 프로그래밍을 동시에 배우는 것에서 장벽을 겪고 있었다. 그들은 교육 자료가 문화 특수적 슬랭 없이 단순한 영어를 사용하고, 더 많은 시각 자료와 멀티미디어를 활용하며, 더 문화 중립적인 코드 예제를 사용하고, 인라인 사전을 포함하기를 원했다. 또한 프로그래밍이 일부 사람들에게는 영어를 더 잘 배우고자 하는 동기를 부여했으며, 자연어에 대한 논리적 사고를 명확히 하는 데 도움이 되었다고 보고되었다. 이러한 결과를 바탕으로, 우리는 전 세계인이 더 쉽게 접근할 수 있도록 프로그래밍 관련 교육 자료와 도구에 대한 학습자 중심 설계 개선 방안을 제안한다.
저자 키워드: 비영어권 원어민; 프로그래밍 학습
ACM 분류 키워드: K.3.2 컴퓨터와 교육: 컴퓨터 및 정보과학 교육 – 리터러시
서론
영어는 사실상 과학, 기술, 상업의 국제 공용어다. 오늘날의 글로벌 노동시장에서 디지털 리터러시를 갖추고 직업 경쟁력을 갖추기 위해서는 종종 영어 기반 자료를 통해 기술적 역량을 습득해야 한다. 그러나 전 세계 인구의 95%는 영어가 모국어가 아니기 때문에, 비영어권 원어민들이 복잡한 기술 분야에서 전문성을 쌓으려 할 때 직면하는 장벽을 파악하는 것이 중요하다. 이 지식은 디지털 리터러시와 전 세계인의 취업 기회 확대를 위해 더 포용적인 학습 기술을 설계하는 데 도움이 될 수 있다.
이 논문은 현재 높은 수요를 보이는 기술 교육의 한 예시로서 컴퓨터 프로그래밍에 집중한다. 현재 190개국 이상에서 수백만 명의 사람들이 온라인으로 프로그래밍을 배우고 있다. 그러나 가장 인기 있는 프로그래밍 언어들은 모두 영어로 설계되어 있다. 공식 문서 페이지와 코드 예제(예: 그림 1)는 영어로 작성되어 있고, 라이브러리와 API 문서 생태계도 영어 기반이며, 가장 인기 있는 교재, MOOC, 토론 사이트(예: Stack Overflow)도 주로 영어로 되어 있다. 번역본이 존재하더라도, 사람들은 종종 원본 영어 버전보다 품질이 낮고 불편하다고 느낀다. 영어는 또한 메일링 리스트 관례와 코딩 스타일 가이드라인에서 나타나듯이, 많은 국제 오픈소스 소프트웨어 커뮤니티의 공식 언어이기도 하다.
비영어권 원어민들은 영어 기반 자료로 프로그래밍을 배울 때 어떤 장벽에 직면하는가? 그들이 교육 자료 개선을 위해 원하는 것은 무엇인가? 모든 언어 배경을 가진 학습자에게 더 보편적으로 접근 가능하도록 프로그래밍 자료와 도구를 어떻게 재설계할 수 있을까? 우리는 이 질문들을 널리 사용되는 프로그래밍 교육 웹사이트(pythontutor.com)에 설문을 배포하고, 86개국 74개 모국어 출신의 840개 응답을 분석함으로써 탐구하였다. 우리가 아는 한, 이는 인간 언어가 프로그래밍 학습에 미치는 영향을 연구한 가장 다양한 집단을 대상으로 한 연구이다.
연구 결과, 비영어권 원어민들은 교육 자료 읽기, 기술적 의사소통(듣기 및 말하기), 코드 읽기·쓰기, 그리고 영어와 프로그래밍을 동시에 배우는 것에서 장벽을 겪고 있었다. 그들은 교육 자료가 문화 특수적 슬랭 없이 단순한 영어를 사용하고, 더 많은 시각 자료와 멀티미디어를 활용하며, 더 문화 중립적인 코드 예제를 사용하고, 인라인 사전을 포함하기를 원했다. 마지막으로, 일부는 프로그래밍이 영어를 더 잘 배우고자 하는 동기를 부여하였으며, 자연어에 대한 논리적 사고를 명확히 하는 데 도움이 되었다고 보고하였다.
이러한 결과를 바탕으로, 우리는 프로그래밍 교육 자료와 도구를 개선하기 위한 학습자 중심 설계 접근법을 취한다. 이중 언어 페어 프로그래밍, 코드 예제의 국제화, 코드 내 식별자 명칭을 이해하고 더 잘 작성할 수 있도록 돕는 IDE 플러그인, 프로그래밍 작업 흐름 내에서 맥락에 맞는 영어 학습 연습을 제공하는 브라우저+IDE 확장 기능 등의 아이디어를 제안한다. 이러한 아이디어들은 범용 설계의 한 형태를 지향한다—비영어권 원어민을 위한 교육 자료 개선은 사실상 모든 학습자에게 혜택을 줄 수 있다.
이 논문은 'Computer Science For All'의 낙관적인 약속이 전 세계 모든 언어 배경을 가진 사람들을 포함하도록 범위를 더욱 넓히는 미래를 향한 발걸음을 내딛는다. 주요 기여는 다음과 같다:
86개국 74개 모국어에 걸친 840개 설문 응답으로부터 얻은, 프로그래밍을 배우는 비영어권 원어민의 장벽과 요구사항
전 세계인이 프로그래밍에 더 쉽게 접근할 수 있도록 자료와 도구를 개선하기 위한 학습자 중심 설계
배경 및 관련 연구
많은 학생들이 영어를 모국어로 성장하지 않았음에도 불구하고, 영어는 전 세계 대학 강의실에서 자주 교수 언어로 사용된다. 고등교육에서 영어가 만연한 이유로는 정전적인 교재가 영어로 되어 있는 경우가 많다는 점, 수십 가지 모국어 배경을 가진 학생들(예: 인도)이 같은 대학에 다닐 때 영어가 공통 작업 언어가 된다는 점, 그리고 학생들이 영어를 사용하는 다국적 기업 취업을 준비하고 싶어 한다는 점 등이 있다. 또한 대부분의 MOOC는 영어로 제공된다. 모국어 버전이 있더라도, 일부 학생들은 영어 유창성 향상과 취업 전망 개선, 영어권 국가로의 이주 준비를 위해 영어 MOOC를 수강하는 것을 선택한다고 보고되었다.
비영어권 원어민들은 수학, 과학, 공학, 의학, 인문학 등 광범위한 주제를 영어로 배울 때 잘 알려진 어려움에 직면한다. 장벽은 인지적·정서적·사회적 측면에 걸쳐 있다. 개념을 모국어로 심리적으로 번역해야 하는 것—특히 강의를 들으면서 실시간으로—은 외재적 인지 부하를 증가시키고 이해도를 낮춘다. 영어 유창성 부족에 대한 불안과 함께 구두 질문을 만들어내는 어려움은 명확화를 위한 질문을 덜 하게 만든다. 급우로부터의 사회적 소외에 대한 두려움은 추가적인 정서적 장벽으로 이어진다. 우리 연구의 결과는 이러한 장벽들 중 일부가 온라인 환경에서도, 그리고 컴퓨터 프로그래밍 학습에 관해서도 존재함을 확인한다.
일반적인 영어를 제2외국어(ESL)로 배우는 데 따른 장벽 이상으로, 프로그래밍은 그림 1에서 보듯 영어가 프로그래밍 언어 키워드와 API 명명 규칙에 깊숙이 얽혀 있기 때문에 복잡성의 추가 층위를 더한다. 코딩 스타일 가이드라인은 주석뿐만 아니라 모든 식별자(변수, 함수, 클래스 이름)도 영어로 작성하도록 규정한다. 비영어권 화자들은 특히 축약된 경우(예: C 함수 getch()는 "get character"를 의미) 코드 식별자의 의미를 해독하는 데 어려움을 겪는다고 보고된다. 비영어 키워드로 된 프로그래밍 언어를 만들려는 시도가 있었지만, 아직까지 널리 채택된 것은 없다. API와 오류 메시지를 번역하려는 시도도 채택이 저조했는데, 프로그래머들이 현지화된 용어로는 온라인 도움을 쉽게 검색할 수 없기 때문이다. 이 방향에서 유망한 연구는 Scratch나 App Inventor 같은 초보자용 블록 기반 언어에서 키워드와 UI 구성 요소를 현지화하는 것이다. Dasgupta와 Mako Hill은 다섯 나라의 사용 로그를 분석하여, 모국어 버전의 Scratch를 사용한 학습자들이 기본 영어 버전을 사용한 학습자들보다 더 복잡한 프로그램을 더 빠르게 만들 수 있었음을 발견하였다.
우리가 아는 한, 인간 언어가 프로그래밍 학습에 미치는 영향에 대한 연구는 매우 적다. 앞서 설명한 바와 같이 Dasgupta와 Mako Hill은 주로 유럽 언어권(독일어, 이탈리아어, 노르웨이어, 포르투갈어, 브라질 포르투갈어) 다섯 나라에서 현지화된 버전의 Scratch를 사용한 학습자들이 영어 버전보다 빠르게 학습했음을 발견하였다. Pal과 Iyer는 영어 강의 및 스크린캐스트 비디오의 음성 부분을 힌디어로 번역하여 인도 대학생들에게 제시하였으며, 영어를 모국어로 쓰지 않는 힌디어 학생들이 힌디어 더빙 스크린캐스트 비디오로 가장 잘 배우는 것처럼 보였음을 발견하였다. 우리의 연구는 86개국 74개 모국어라는 훨씬 더 광범위한 표본을 도입함으로써 이 초기 문헌에 기여한다. 또한 이전 연구들처럼 학습 향상도를 정량적으로 측정하는 대신, 학습자들의 질적 인식을 얻는 데 초점을 맞춘다.
우리의 연구는 또한 초보 프로그래머들이 직면하는 장벽에 관한 문헌에도 기여한다. 컴퓨팅 교육의 기초 연구들은 초보자들이 컴퓨터가 코드와 데이터를 어떻게 운영하는지에 대한 정신적 모델인 개념적 기계(notional machine)를 형성하려 할 때 상당한 장벽에 직면한다는 것을 보여주었다. HCI 관점에서 Green의 인지 차원 프레임워크는 프로그래밍 언어와 환경을 사용자 인터페이스로 보고 인간 공학 원칙을 적용하여 장벽을 구조화한다. Pane과 Myers도 프로그래밍 언어를 사용자 인터페이스로 보고 수십 가지의 초보자 사용성 장벽을 분류하였다. 많은 장벽은 키워드의 일상적인 영어 해석(예: "and", "or", "while")이 프로그래밍 언어에서의 공식적 의미론과 일치하지 않기 때문에 발생하였다. 우리의 연구는 영어 언어 유창성 부족을 프로그래밍 지망자들의 장벽으로 초점을 맞춤으로써 이 풍부한 장벽 연구 계보를 확장한다.
마지막으로, 우리의 연구는 컴퓨팅 참여 확대에 관한 HCI 및 컴퓨팅 교육 문헌에도 기여한다. 이 논문은 컴퓨팅 참여 확대의 범위를 영어 원어민이 아닌 세계 인구의 95%까지 포함하도록 잠재적으로 확장한다.
방법론: 국제 온라인 설문
이 연구를 위해 우리는 광범위한 글로벌 학습자 집단에 도달하고자 프로그래밍 교육 웹사이트 pythontutor.com(Python Tutor)에 온라인 설문을 배포하였다. 학습자들은 이 웹사이트를 이용해 코드 작성을 연습하고, 단계별 런타임 데이터 구조 시각화 도구를 사용하여 오류를 시각적으로 디버깅한다. 이름과 달리 Python Tutor는 Python, Java, C, C++, Ruby, JavaScript 등 인기 있는 언어들을 시각화한다. 8년 이상 운영되어 왔으며 총 350만 명 이상의 사용자를 보유하고 있다.
우리가 Python Tutor에 설문을 배포한 이유는, 이 웹사이트가 Coursera, edX, Udacity 등의 MOOC, Khan Academy, Codecademy, Stack Overflow, 디지털 교재, 수많은 코딩 튜토리얼 및 블로그 등 다양한 온라인 학습 채널에서 유입된 학습자들이 사용하는 무료의 널리 활용되는 자료이기 때문이다. Python Tutor의 사용자층은 연령과 지역 면에서 다양하다: 사용자의 13%는 18세 미만, 29%는 18~24세, 20%는 25~34세, 12%는 35~44세, 11%는 45~54세, 8%는 55~64세, 7%는 65세 이상이다. 사용자들은 180개국 이상에서 온다. 25%는 여성으로, 미국 대학의 여성 CS 전공 비율(약 18%)보다 약간 높다.
설문 도구
우리는 Python Tutor 웹사이트 하단에 다음 문장과 Google Forms 설문 링크를 추가하였다: "모국어가 프로그래밍 학습에 어떤 영향을 미치는지에 관한 연구에 도움을 주고 싶으시다면 이 설문을 작성해 주세요 [링크]." 설문 링크는 사이트 학습자들의 주의를 불필요하게 분산시키지 않도록 눈에 잘 띄지 않게 배치하였다. 참여는 자발적이었으며 응답자에게 보상을 제공하지 않았다. 설문은 2016년 12월에 시작하여 2017년 8월에 종료하였다.
설문은 응답자의 언어 배경과 장벽 및 요구사항에 대한 자기 성찰을 수집하기 위해 최대한 짧게 설계하였다. 총 여덟 가지 질문으로 구성되었다:
처음 배운 언어는 무엇입니까?
현재 가장 편하게 말할 수 있는 언어는 무엇입니까?
어떤 언어로 프로그래밍 관련 교육 자료(웹사이트, 책, 포럼 등)를 읽습니까?
영어 읽기 유창성을 어떻게 평가하십니까? {초급, 중급, 능숙, 완전 유창}
영어 원어민이라면, 비영어권 원어민이 프로그래밍을 배울 때 어떤 어려움을 겪는 것을 보셨습니까? 어떻게 도움을 주셨습니까?
비영어권 원어민이라면, 영어 유창성 수준이 프로그래밍 학습을 어떻게 어렵게 만들었습니까? 어떻게 극복하셨습니까?
비영어권 원어민이라면, 프로그래밍 교육 자료(웹사이트, 책, 포럼 등)가 더 잘 배울 수 있도록 어떻게 개선될 수 있다고 생각합니까?
비영어권 원어민이라면, 프로그래밍을 배우거나 프로그래밍에 대해 읽음으로써 영어 유창성이 어떤 방식으로 향상되었습니까?
Q1과 Q2는 각각 모국어와 일상 회화 언어를 파악한다. Q3과 Q4는 자기 보고 읽기 리터러시를 파악한다. 응답자에게 최대한의 유연성을 주기 위해 Q4를 제외한 모든 질문은 자유 응답형이었으며, 모두 선택사항이었다.
데이터 개요 및 분석
우리는 질문 5~8 중 하나 이상에 빈칸이 아닌, 스팸이 아닌 응답을 포함한 840개의 응답을 받았다. 자기 보고 영어 원어민 184명 중 97%가 Q5에 응답하였다. 비영어권 원어민 656명 중 59%가 Q6에, 71%가 Q7에, 73%가 Q8에 응답하였다.
Q1~Q3에서 보고된 언어 이름을 표준화하기 위해 국제 ISO 639-2 언어 분류 표준을 사용하고, 방언도 그에 맞게 정규화하였다. 예를 들어 표준어와 광둥어는 모두 "중국어"로, 모든 영어 변형(호주식, 영국식, 미국식 등)은 "영어"로, 자민족 명칭은 ISO 639-2 명칭으로 정규화하였다(예: Kodava→칸나다어, Farsi→페르시아어).
자유 응답형 Q5~Q8을 분류하기 위해 연구팀(교수+연구보조원)은 귀납적 분석 접근법에 기반하여 일련의 코드를 반복적으로 개발하였다. 팀은 모든 응답을 함께 읽고 상향식 귀납적 방식으로 새롭게 나타나는 주제를 점진적으로 정리하였으며, 이를 영어가 프로그래밍 학습에 미치는 가능한 영향과 관련된 가장 작은 수의 뚜렷한 범주들로 묶었다. 범주가 확정된 후 응답을 다시 전체적으로 검토하며 각 응답에 하나 이상의 레이블을 부여하였다. 14명의 응답자가 비영어 응답을 작성하였는데(포르투갈어 6명, 중국어 5명, 아프리칸스어 1명, 프랑스어 1명, 러시아어 1명), 이는 Google 번역을 통해 전처리하였다.
연구 설계의 한계
설문의 목표는 비영어권 원어민이 프로그래밍을 배울 때 직면하는 장벽과 교육 자료 개선에 대한 그들의 요구사항을 폭넓게 파악하는 것이었다. 우리는 프로그래밍을 배우는 전 세계 모든 사람들을 균일하게 표집하고 싶었지만, 미국산 영어 웹사이트(Python Tutor)에 설문을 배포했기 때문에—비록 180개국 이상에서 사용되고 많은 비영어 교육 웹사이트에서 링크되어 있지만—응답자들은 일반 대중보다 영어 리터러시가 높을 가능성이 크다. 따라서 우리의 연구는 영어 언어 자료에서 더 많이 배우는 사람들의 견해를 포착하며, 이는 프로그래밍 및 기타 기술 주제에서 영어가 종종 주된 교수 언어라는 기존 보고와 일치한다. 그러나 영어 리터러시가 매우 낮거나 비영어 자료만 사용하는 사람들이 직면하는 어려움을 완전히 반영하지 못할 수 있다. 또한 자기 보고 설문 데이터에 의존하기 때문에, 사람들이 자기 보고하지 못하는 잠재적 장벽이 누락될 수 있다.
우리 연구는 응답자의 언어 배경(Q1~Q3)에만 초점을 맞추며, 문화, 사회경제적 지위, 교육 수준, 나이, 성별, 인종, 민족 등 복잡하게 얽힌 요인들은 고려하지 않는다. 또한 특정 자연 언어나 언어 계통의 가능한 효과를 분석하지 않으며, Q1에 기반하여 응답자를 영어 원어민과 비영어권 원어민으로만 구분한다.
응답의 1.6%에 대해 Google 번역을 실행하였다. 기계 번역에는 오류가 있으므로, 이는 우리의 수동 분류 범주 집계에 약 1.6%의 추가 오류를 더할 수 있다. 이 논문에서 사용된 모든 인용문은 원래 영어로 작성된 것이며 번역된 것이 아님을 밝힌다.
마지막으로, 온라인 학습 옵션을 스스로 찾아 나설 의향이 있는 사람들인 만큼, 응답자 집단은 더 독학적이고, 기술에 익숙하며, 자기 동기 부여가 되어 있고, 자기 성찰적인 편에 속할 가능성이 크다. 따라서 우리의 결과는 오직 대면 수업만 듣는 사람들이 직면하는 어려움을 반영하지 않을 수 있다.
응답자의 언어 배경
장벽과 요구사항을 자세히 설명하기 전에, 먼저 응답자들의 언어 배경을 요약한다. 응답자들은 Q1~Q3에서 총 74개 언어를 언급하는 다양한 배경 출신으로, 이 언어들은 거주 대륙 여섯 개 전체에 걸쳐 있다.
응답자의 22%(840명 중 184명)만이 영어 원어민이었다. 나머지 78%의 비영어권 원어민 중, 3%는 영어 읽기 유창성을 초급, 14%는 중급, 44%는 능숙, 39%는 완전 유창으로 자기 평가하였다(Q4). 37%의 응답자는 현재 영어 말하기가 가장 편하고, 7%는 다중 언어(즉 다국어 구사자)로 가장 편하다고 보고하였다. 가장 일반적인 다국어 응답 세 가지는 영어+힌디어(0.7%), 영어+프랑스어(0.6%), 영어+독일어(0.6%)였다.
거의 모든 응답자(96%)가 영어로 프로그래밍 관련 교육 자료를 읽었다. 그러나 8%는 두 개 이상의 언어로 읽는다고 보고하였다. 응답자들은 전 세계 다양한 지역 출신으로, IP 주소 지오로케이션 결과 86개국 출신임이 확인되었다. 예상대로 영어 원어민은 미국과 기타 주로 영어권인 나라에 상대적으로 많이 거주하였다.
비영어권 원어민이 프로그래밍을 배울 때 직면하는 장벽은?
우리는 두 가지 보완적인 설문 질문을 통해 비영어권 원어민이 직면하는 장벽을 발견하였다: (a) 비영어권 원어민에게 프로그래밍을 배울 때 직면한 언어 관련 어려움을 직접 묻는 것(Q6)과 (b) 영어 원어민에게 비영어권 동료들이 직면하는 어려움을 관찰한 것을 묻는 것(Q5). 다섯 가지 주요 장벽 유형이 발견되었다.
교육 자료 읽기의 어려움
가장 많이 보고된 장벽(전체 응답의 34%)은 교재, 온라인 튜토리얼, 토론 포럼, API 문서 등 영어 교육 자료 읽기의 어려움이었다. 비영어권 화자들은 종종 모국어로 된 좋은 자료를 찾기 어렵기 때문에 영어 교육 자료에 의존해야 한다고 언급하였다. 한 스페인어 원어민은 이 감정을 다음과 같이 요약하였다: "거의 모든 좋은 코드 문서는 영어로 되어 있습니다. 프로그래밍 언어의 인간 언어를 선택하는 데는 많은 옵션이 없습니다. 영어는 모든 프로그램의 공식 언어입니다." 한 포르투갈어 화자는 "포르투갈어로 된 프로그래밍 관련 자료가 많지 않습니다. 찾을 수 있는 것들은 대부분 매우 오래되어 있습니다"라고 적었다.
모국어 자료가 있더라도 종종 번역이 미흡하다. 예를 들어 "루마니아어로 된 [프로그래밍] 책 등을 읽는 것이 더 어렵다. 때로 용어를 번역해 놓아서 혼란스럽다"는 의견이 있었다. 한 폴란드어 화자는 프로그래밍 자료만큼은 영어에 의존한다고 언급하였다: "솔직히 폴란드 인터넷에서 벗어나지 않고는 많이 배울 수 없지만, [프로그래밍]에 관한 것은 모두 꽤 오래되어 있거나, 기초만 다루거나, 이상하게 번역되어 있습니다."
응답자들은 비모국어로 읽는 일반적인 장벽, 예를 들어 읽기 이해 속도 저하 등을 보고하였다. 한 중국어 원어민은 "학습 효율이 떨어집니다. 내가 학습하는 프로그래밍 교육 자료의 언어는 영어이므로, 읽고 이해하고 강의를 듣는 데 더 많은 시간을 써야 합니다"라고 적었다.
프로그래밍과 관련된 전문 용어는 일상적인 산문보다 이해를 훨씬 더 어렵게 만드는 것으로 보인다. 한 프랑스어 화자는 "프로그래밍과 관련된 기술 어휘는 동화시키기 복잡할 수 있습니다. 특히 설명 문장 중간에 모국어로 동등한 단어를 모를 경우 더욱 그렇습니다"라고 적었다.
영어 원어민들도 비영어권 동료들이 직면하는 어려움에 대해 비슷한 관찰을 하였다. 일부는 구어적 언어가 텍스트를 읽기 어렵게 만든다고 언급하였다: "가장 큰 문제는 소프트웨어 사양을 이해하는 것에 있는 것 같습니다. 영어로 작성할 때 [원어민인] 우리는 비영어권 원어민들이 뉘앙스나 덜 격식적인 표현을 이해하지 못할 수 있다는 것을 종종 간과합니다."
기술적 의사소통의 어려움
다음으로 많이 보고된 장벽은 듣기와 말하기를 통한 기술적 의사소통이었다. 이 범주에서 대표적인 발언으로, 한 체코어 원어민은 듣기 이해의 어려움을 언급하였다: "영어로 설명하면 프로그래밍에서 사용되는 단어의 정확한 의미를 머릿속에 그리기가 어려워서 이해하는 데 훨씬 더 많은 시간이 걸립니다." 한 영어 원어민은 이 감정을 되풀이하였다: "비영어권 화자들을 돕는 것이 어려운 이유는, 내 설명을 비영어권 화자가 처리할 수 있는 방식으로 말해야 하기 때문입니다. (더 짧고, 더 천천히 말하며, 주어-동사-목적어 문법에 집중해야 합니다.)"
영어 원어민들은 또한 말하기에 대한 자신감 부족이 비영어권 동료들을 방해할 수 있다고 언급하였다: "내가 [비영어권 원어민들에게서] 본 유일한 어려움은 프로그래밍에 대해 말하기가 더 어렵다는 것인데, 이는 차례로 배우기를 더 어렵게 만듭니다."
마지막으로, 비영어권 의사소통 문제는 인간과의 의사소통뿐 아니라 기계와의 '대화'로도 확장된다. 한 독일어 화자는 특정 문제를 조사할 때 영어로 Google에 입력할 적절한 방법을 찾는 어려움을 다음과 같이 설명하였다: "특히 어려운 것은 특수한 문제를 조사할 때 답을 찾기 위해 Google에 질문을 입력할 올바른 방법을 찾는 것입니다. 문제를 설명할 수 있어야 할 뿐만 아니라, 영어로 그 문제를 가장 일반적으로 표현하는 방법을 추측해야 하고, 그것이 통하지 않으면 문제를 설명하는 유사한 동의어적 방법을 찾아야 합니다."
코드 읽기의 어려움
산문 읽기 외에도 비영어권 원어민들은 소스 코드 이해에도 어려움을 보고하였다. 일반적인 근본 원인은 프로그래밍 언어 키워드(예: "while")가 영어로 되어 있다는 것이다. 한 포르투갈어 화자는 다음과 같이 적었다: "가장 큰 어려움은 각 단어가 코드에서 무엇을 의미하는지, 그리고 무엇을 의미하지 않는지 정확히 이해하는 것이었습니다(예: 포르투갈어에서 'while'의 번역은 코드에서 사용되는 것보다 더 많은 의미를 가집니다)." 더 일반적으로는, 유사한 개념에 대한 프로그래밍 용어가 종종 구별하기 어려운 동의어들이다. 예를 들어 한 스페인어 원어민은 "objects, classes, instances의 차이를 이해하기 어렵습니다"라고 설명하였다.
내장 키워드 너머에서, 프로그래머들은 종종 식별자(함수, 클래스, 변수 이름)에 약어와 관용적 명명 관례를 사용하는데, 이는 비영어권 화자들이 이해하기 어려울 수 있다. 또한 라이브러리는 영어 명명 관례를 사용한다. Apple의 Cocoa 라이브러리 API 명명 가이드라인은 약식 문장과 유사한 긴 함수 이름을 권장하는데(예: (void)setAcceptsGlyphInfo:(BOOL)flag), 이는 비영어권 화자들이 해독하기 더 어려울 수 있다.
국제화 및 현지화 문제도 영어 중심 소스 코드를 읽을 때 비영어권 화자들을 좌절시킨다. 한 슬로바키아어 원어민은 다음과 같이 요약하였다: "예를 들어 거의 모든 강의에서 처음 몇 번의 수업 안에 문자열이 (사전식) 순서로 비교될 수 있다고 나와 있습니다. 그러나 내 모국어에서는 단어 순서가 다릅니다... 따라서 전제가 '잘못되어' 있을 때 따라가기 어렵습니다."
코드 쓰기의 어려움
영어 원어민들은 또한 일부 비영어권 화자들이 이해하기 쉬운 코드를 작성하는 데 어려움을 겪는다고 보고하였다. 그들은 비영어권 동료들이 변수 명명 방식이 독특하여 불명확한 코드를 작성하는 경우가 있다고 언급하였다: "그들의 이름 선택이 구체적이지 않거나 내 직관과 맞지 않는 경우가 많습니다." 또 다른 응답자는 변수 명명이 자연 언어 작성과 만나는 지점임을 다음과 같이 요약하였다: "저는 사람들이 변수 이름을 지을 때 어려움을 겪는 것을 봤습니다. 'a' 같은 단순한 이름이나 'table' 같은 의미 없는(또는 더 나쁜 경우 오해를 불러일으키는) 이름을 선택하더군요. 그 외에는 영어 원어민이 아니지만 코더인 사람들은 코딩의 구조와 문법은 꽤 잘 해냈습니다. 문제는 자연 인간 언어와 코드가 만나는 지점에 있습니다."
마찬가지로, 텍스트 출력과 오류 메시지를 인쇄하는 코드는 비영어권 화자들이 영어 산문을 작성해야 하는 코드베이스의 다른 부분이다. 영어 원어민 화자들은 비영어권 동료들의 코드에서 문자열 출력의 문법 및 철자 오류를 주로 발견하였다고 보고하였다. 또한 영어 원어민 화자들은 비영어권 동료들이 식별자 이름과 주석에 비영어 단어를 사용하기 때문에 그들이 작성한 코드를 이해하는 데 어려움을 겪었다고 보고하였다.
영어와 프로그래밍을 동시에 배우는 어려움
비영어권 화자들은 종종 영어 교육 자료에 의존해야 하기 때문에, 일부는 주어진 프로그래밍 개념을 동시에 배우면서 그 자료를 이해할 수 있을 만큼 충분한 영어를 배우는 데 어려움을 겪는다고 보고하였다. 한 아랍어 원어민은 "정말 어렵습니다. 영어와 코딩을 동시에 배워야 하고, 둘 다에서 더디게 발전하고 있어서 실망스럽기 때문에 90%는 그만둘 것이라고 예상합니다"라고 적었다. 한 불가리아어 화자는 "영어를 모르는 채로 프로그래밍을 배우기 시작했습니다. 발전하기 위해 두 가지를 병렬로 배워야 했습니다"라고 적었다.
비영어권 원어민이 이러한 장벽을 극복하도록 돕는 것은?
장벽을 파악하는 것 외에도, Q5는 영어 원어민에게 비영어권 동료들의 장벽 극복을 어떻게 도왔는지 물었고, Q6은 비영어권 원어민에게 스스로 장벽을 어떻게 극복하려고 했는지 물었다. Q5와 Q6에 각각 응답한 모든 응답자 중, 25%의 영어 원어민과 58%의 비영어권 원어민이 장벽 극복 방법을 언급하였다.
영어 원어민들이 도우려 한 방법
이중 언어를 구사하는 영어 원어민은 동료들을 위한 통역자 역할을 할 수 있다. 예를 들어 한 응답자는 "저는 지금 독일에 살고 있는데, 가장 큰 문제는 'if'나 'while loop' 같은 키워드가 어떤 개념과 연결되는지 즉각적으로 알지 못한다는 것입니다. 그들을 위해 독일어로 많이 번역해야 했습니다"라고 적었다.
일부는 비영어권 화자들을 위해 더 명확하게 프로그래밍 관련 전문 용어를 정의해야 했음을 회상하였다: "제가 알아챈 것은 주로 영어 기반의 축약어를 이해하는 것이 비영어권 원어민에게 약간 어려울 수 있다는 것입니다. 교사로서 개념을 가르치기 전에 핵심 단어와 언어를 미리 설명하는 것이 중요합니다." 또 다른 응답자는 비영어권 화자들이 "'concatenate(연결)' 같은 다소 생소한 단어의 일반적인 영어 의미를 몰라서 그 지식을 프로그래밍으로 변환하는 방법을 모른다"고 언급하며, 보통 설명이나 대체 단어로 해결된다고 하였다.
더 일반적으로는, 일부는 비영어권 원어민을 가르칠 때 공감과 인내심의 중요성을 언급하였다: "그냥 그들이 더 간단한 단계를 필요로 하고, 먼저 모국어로 변환한 다음 프로그래밍 개념을 이해해야 하기 때문에 더 오래 걸린다는 것을 받아들여야 합니다."
비영어권 원어민들이 장벽을 극복하는 방법
많은 비영어권 화자들은 현재 학습 장벽을 극복하는 주요 방법으로 자신의 영어 실력 향상의 중요성을 언급하였다. 한 포르투갈어 원어민은 "프로그래밍에서 사용되는 주요 단어들은 제 언어로 번역이 되지 않습니다. 그래서 프로그래밍이 어떻게 작동하는지, 어떤 단어가 사용되는지 이해하려고 할 때 많은 문제에 직면하지 않으려면 최소한 중급 수준의 영어는 절대적으로 필요합니다"라고 적었다.
사람들은 또한 낯선 용어를 번역하기 위해 사전, 번역기, 또는 Google 검색을 사용하였다. 한 독일어 화자는 "예를 들어 'append'라는 단어처럼 함수 이름인 특정 단어를 이미 몰랐을 때 번역해야 하는 경우가 있습니다. 그냥 모국어로 의미를 Google에 검색하면 바로 이해가 됩니다"라고 적었다.
비영어권 원어민이 프로그래밍 교육 자료에서 원하는 것은?
비영어권 원어민 응답자 656명 중 464명(71%)이 Q7에 응답하여, 프로그래밍 교육 자료가 어떻게 개선되어야 하는지를 답하였다. 다섯 가지 유형의 학습자 요구사항이 파악되었다.
문화 특수적 슬랭 없이 단순한 영어 사용
가장 일반적인 요구사항은 교육 자료가 단순한 영어—더 작은 단어, 더 간단한 문장, 더 적은 구어 표현, 더 적은 문화 특수적 언급—를 사용하는 것이었다. 예를 들어 한 힌디어 화자는 알고리즘을 배우면서 "nickel and dimed"라는 표현에 혼란을 겪었다: "일부 블로그에는 이해하기 어려운 문화적 언급이 있습니다. 예를 들어 동적 프로그래밍에 대한 블로그를 읽으면서 nickel, dime 등의 의미를 찾아봐야 했습니다." 다른 이들은 일반적으로 슬랭을 피하도록 제안하였다: "세계의 특정 지역에서만 의미 있는 지역적 표현은 피하려고 노력하세요."
프로그래밍 특수 용어의 경우, 일부는 개념들을 더 명확하게 미리 정의하도록 제안하였다. 특히 프로그래밍 맥락에서의 영어 단어 의미가 일상적 용법과 다를 수 있기 때문이다. 한 줄루어 원어민은 "컴퓨터 프로그래밍 분야에서 일반적인 영어와 다르게 사용되는 중요한 용어들을 설명해야 합니다"라고 제안하였다. 한 스페인어 화자는 "'할당문'이 무엇을 의미하는지 같은 개념은 영어 화자에게는 더 직관적일 수 있지만, 이것이 나머지 화자들에게도 반드시 그렇지는 않습니다"라고 적었다.
다른 이들은 자료의 혼란 지점을 발견하기 위한 사용자 테스트를 제안하였다: "비영어권 원어민과 함께 책을 테스트하여 지나치게 복잡한 문장을 찾아내세요."
더 많은 시각 자료와 멀티미디어 사용
응답자들은 시각 자료가 언어를 더 쉽게 초월할 수 있다고 생각하여, 교육 자료에 더 많은 시각 이미지와 멀티미디어(예: 동영상)가 포함되기를 원했다. 한 아랍어 화자는 "그림과 삽화가 글로 쓴 영어보다 이해하기 쉽습니다"라고 관찰하였다. 한 프랑스어 화자는 "그림, 스케치를 포함하고, 동적인 내용이 있으면 블로그/웹사이트에 애니메이션을 포함하세요"라고 제안하였다. 한 힌디어 원어민은 "다이어그램과 인터랙티브 튜토리얼이 모든 텍스트를 이깁니다"라고 이 요구사항을 요약하였다.
일부는 읽기보다 동영상 시청을 선호하였다. 한 중국어 화자는 "단계별로 무슨 일이 일어나는지 볼 수 있고 보통 단순화되어 있기 때문에 동영상이 프로그래밍 학습에 가장 도움이 됩니다. 책은 보통 두꺼워서 다 읽으려면 너무 오래 걸리는 것 같아서 느립니다"라고 적었다.
문화 중립적인 예제 더 많이 사용
비영어권 원어민들은 또한 더 많은 코드 예제를 원했다. 한 네팔어 원어민은 이 요구사항을 간결하게 요약하였다: "더 적은 텍스트, 더 많은 예제."
단순한 영어 요청과 마찬가지로, 그들은 예제가 가능한 한 문화 중립적이기를 원했다. 한 중국어 원어민은 "프로그래밍 예제에서 사용된 모든 문화적, 정치적 농담과 유명인 이야기가 비영어권 화자 모두에게 이해된다고 가정하지 마세요"라고 적었다. 또한 대상 학습자 집단이 예제와 개인적으로 연관될 수 있도록 하는 것도 중요하다. 한 칸나다어 화자는 "대상 독자에게 친숙한 예제를 사용하세요. 예를 들어 저는 미국에서 일어나는 일에 대해 전혀 모릅니다(그리고 가장 관심이 없습니다). 관련지을 수 있는 것이 있었다면 도움이 되었을 것입니다"라고 언급하였다.
마지막으로, 응답자들은 코드 예제가 국제화 및 현지화 문제를 인식하기를 원했다: "영어가 아닌 애플리케이션을 프로그래밍할 때 발생하는 문제(문자 인코딩, 다국어 지원 필요)에 관한 더 많은 예제를 제공하세요."
인라인 사전 포함
대부분의 응답자가 영어 자료를 사용하지만, 비영어권 화자들은 원본 영어 자료를 읽으면서 낯선 용어를 배울 수 있는 가벼운 사전을 원했다. 한 폴란드어 원어민은 전자책 리더에 비유하였다: "제 전자책 리더에 있는, 별도의 브라우저 창이나 애플리케이션을 열지 않고도 텍스트에서 '인라인으로' 단어를 번역할 수 있는 기능이 제게 많은 도움이 됩니다. 이처럼 원본에 풍부하고 맥락과 관련된 콘텐츠를 포함하는 것이 훌륭한 가속 장치라고 생각합니다." 한 스페인어 화자는 "용어의 어원에 관한 섹션 또는 용어의 역사 섹션을 포함하는 것"을 제안하였다. 한 알바니아어 화자는 자막을 언급하였다: "영화 자막과 유사한 것을 생각하고 있습니다. 번역된 개념을 원본 영어 소스와 비교할 수 있습니다."
번역에서 길을 잃다: 번역보다 영어 텍스트 선호
마지막 범주의 응답은 직접적인 요구사항이 아니라, 우리 응답자 집단의 비영어권 화자들이 영어 자료의 번역본을 원하지 않는다는 것이었다. 예를 들어 한 한국어 화자는 "저는 실제로 한국어와 영어 블로그와 정보를 모두 검색했지만, 구문이 어차피 영어로 되어 있기 때문에 번역된 한국어 버전의 설명이 오히려 더 혼란스럽다고 느꼈습니다"라고 적었다.
다른 비영어권 화자들은 영어가 이미 프로그래밍의 사실상 공식 언어가 되어 있기 때문에, 너무 많은 번역으로 생태계를 분열시키지 않는 것이 더 낫다고 언급하였다: "모든 비영어권 프로그래머가 문서를 번역하기 시작한다면, 업데이트를 따라가는 것은 말할 것도 없고, 엄청난 자원 낭비일 것입니다. 오픈소스의 현재 힘이 생긴 이래로 영어는—누가 좋아하든 싫어하든—프로그래밍 언어와 도구를 설명하는 우리의 링구아 프랑카가 되었습니다. 이는 프로그래밍 커뮤니티가 국경을 넘어 소통하는 능력을 키웁니다. 과학에서처럼, 우리는 공통점을 찾고 자원을 모아야지 언어적 발칸화로 분산시켜서는 안 됩니다." (독일어 원어민)
프로그래밍이 영어 학습에 도움이 될 수 있는가?
우리의 마지막 설문 질문은 더 탐색적인 것으로, 주요 연구 질문의 역방향을 탐구하였다. 영어 능력이 비영어권 화자들의 프로그래밍 학습에 어떤 영향을 미치는지를 묻는 대신, 프로그래밍 학습이 실제로 그들의 영어 능력에 영향을 미칠 수 있는지 파악하고자 하였다. Q8은 비영어권 화자들에게 프로그래밍을 배우거나 프로그래밍에 대해 읽음으로써 영어 유창성이 어떤 방식으로 향상되었는지를 물었다.
프로그래밍이 영어 향상을 위한 맥락을 제공
가장 일반적인 긍정적 응답은 프로그래밍이 사람들이 영어 실력을 향상시킬 수 있는 구체적인 맥락을 제공했다는 것이었다. 한 폴란드어 원어민은 "프로그래밍을 배우고 싶은 욕구가 영어를 배우고 싶은 욕구의 원동력이었습니다"라고 이 감정을 요약하였다.
프로그래밍은 필요에 의해 영어 읽기 능력을 향상시키려는 동기를 부여하는 강제 기능이었다. 한 이탈리아어 원어민은 "프로그래밍에 대해 읽는 것이 다른 읽기가 도움이 된 것과 같은 방식으로 영어 유창성을 향상시켰습니다. 프로그래밍을 배우는 것은 영어 책과 웹사이트를 읽도록 '강요'했기 때문에 부수 효과로서 영어를 배우는 데 도움이 되었습니다"라고 적었다.
영어가 소프트웨어 엔지니어링의 링구아 프랑카이기 때문에, 말하기 연습을 위한 사회적 맥락도 제공된다. 한 펀자브어 원어민은 "프로그래밍은 영어를 잘하는 것이 기대되는 환경을 제공해주었습니다. 그래서 프로그래밍 관련 책뿐만 아니라 다른 사람들, 클라이언트, 관리자, 면접관 등과 정기적으로 대화하는 것도 유창성 향상에 도움이 되었습니다"라고 적었다.
또한 기술 질문을 토론 포럼에 올려야 하는 필요성 때문에 영어 쓰기도 향상되었다고 보고한 이들도 있었다. 한 스페인어 화자는 자신의 영어 실력이 "엄청나게" 향상되었다고 보고하면서, "토론 포럼은 어떤 의심이든 영어로 작성하도록 강요하기 때문에 이를 위해 훌륭합니다. 내 영어 수업 중 어느 것도 여기서 향상된 것만큼 향상시켜 주지 못했습니다"라고 하였다.
프로그래밍이 언어에 대한 논리적 사고를 명확히 함
영어 읽기, 쓰기, 말하기 향상 동기 부여 외에도, 일부 비영어권 화자들은 프로그래밍이 더 논리적으로 생각하게 하여 영어 실력 향상에도 기여할 수 있다고 보고하였다. 한 크메르어 화자는 이 아이디어를 다음과 같이 요약하였다: "[프로그래밍은] 내가 말하려는 것의 논리를 생각하는 데 도움이 됩니다. 이는 영어로 말하거나 생각하는 것을 덜 모호하게 합니다." 한 러시아어 화자는 프로그래밍이 "문장과 함수에서 진행되는 논리적 과정에 새로운 빛을 비추어, 이를 구어/문어 텍스트에 적용하면 더 철저하게 분석하고 따라서 언어 자체의 유창성을 높일 수 있습니다"라고 언급하였다.
토론
이러한 결과에 비추어, 영어 원어민이 아닌 세계 인구의 95%를 더 잘 지원하도록 프로그래밍 교육 자료와 도구를 어떻게 재설계할 수 있을까? 우리는 Guzdial 등이 제안한 학습자 중심 설계 방법론을 이론적 기반으로 삼는데, 이는 학습자 자신의 동기와 좌절을 설계의 출발점으로 삼아야 한다고 주장한다. 응답자들이 좌절(표 3)과 요구사항(표 4)을 보고하였으므로, 우리는 이를 제안된 프레임워크의 일곱 가지 요소를 따르는 기반으로 삼는다.
1. 학습자가 어디서 시작하고 무엇을 하고 싶어 하는지 파악: 우리 연구는 동기를 명시적으로 조사하지 않았지만, 기술적 의사소통 장벽에 대한 원어민과 비원어민 모두의 응답을 바탕으로, 우리가 발견한 한 가지 학습자 유형은 영어를 모국어로 갖지 않은 상태에서 시작하여 수익성 있는 취업에 충분한 영어와 프로그래밍 능력을 얻고자 하는 사람들이다. 그들은 Stack Overflow, IRC, 메일링 리스트 등 온·오프라인 맥락에서 기술적 의사소통의 링구아 프랑카로 영어를 사용하는 전문가 실천 커뮤니티에 합류하기를 열망할 수 있다. 따라서 우리의 설계 아이디어는 모두 이러한 실용적 가정 하에 운영된다.
2. 학습자가 어디서 어려움을 겪는지 파악: 기술적 의사소통 능력 향상(전체 응답자의 31%가 장벽으로 보고)을 위해, 한 가지 아이디어는 비영어권 화자와 영어 원어민을 수업이나 MOOC에서 페어 프로그래밍 파트너로 매칭하여, 비영어권 화자들이 빠른 피드백과 함께 몰입적인 1대1 환경에서 말하고 듣도록 강제하는 것이다. 페어 프로그래밍은 기술적 멘토링에 효과적인 것으로 알려져 있지만, ESL 의사소통 향상을 위한 잠재력은 아직 탐구되지 않았다. 한 가지 과제는 프로그래밍+언어 튜터로서 역할을 할 충분한 영어 원어민을 찾는 것이다. 잠재적 해결책은 다른 나라 사람들이 원격으로 짝을 이룰 수 있고 기꺼이 짝이 되는 것을 보여준 Python Tutor의 실시간 확장 기능의 어포던스를 채택하는 것이다.
3. 스캐폴딩: 전통적인 교수 스캐폴딩을 어떻게 확장하여 코드 읽기와 쓰기(전체적으로 각각 23%와 17%가 보고)에서 비영어권 원어민을 도울 수 있는가? 한 가지 아이디어는 작업 예제에 이중 언어 레이블을 추가하는 것으로, 이는 학습자들이 영어와 모국어 두 가지로 용어를 볼 수 있게 해준다. 이 설계는 응답자들이 더 많은 예제와 인라인 사전을 원한다는 보고(두 가지 모두 표 4에서 21%)와 일치한다.
코드베이스에서 클래스, 함수, 변수 이름을 이해할 수 있도록 돕기 위해, IDE 플러그인이 식별자 이름을 파싱하고 일반적인 영어 약어와 관용적 관례를 기반으로 가능한 의미를 발견적으로 해독할 수 있다(예: getch() 해독하기). 자신의 코드에서 더 잘 명명된 식별자를 작성하도록 사람들을 돕기 위해, 유사한 IDE 기반 도구가 코드를 분석하여 런타임 값이 사용되는 용도에 기반하여 더 나은 이름을 제안할 수 있다.
4. 학습자가 이해하는 용어 사용: 많은 응답자가 교육 자료와 코드 예제 모두에서 영어 관용어, 슬랭, 문화적 언급을 이해하는 데 어려움을 보고하였다. 그들은 산문과 코드 모두 문화 특수적 슬랭 없이 단순화된 영어를 사용하도록 요청하였다. 이는 단순히 읽기 이해 문제만이 아니다. 문화적으로 낯선 자료를 보는 것은 학습자의 소속감에도 부정적인 영향을 미쳐, 다른 문화권의 사람들이 "프로그래밍은 나를 위한 것이 아니다"고 느끼게 할 수 있는데, 이는 프로그래밍이 지나치게 영미 중심적으로 보이기 때문이다. 이를 해결하기 위해, 교육 자료 제작자들은 더 간단한 문법과 어휘의 영어 부분집합을 사용하는 Simple English Wikipedia 같은 프로젝트에서 영감을 받을 수 있다.
5. 맥락화: 학습 자료는 학습자가 개인적으로 관련짓고 관심을 갖는 영역의 맥락에 놓일 때 더 매력적이다. 따라서 프로그래밍 교육 자료가 여전히 영어로 남아 있더라도, 일부 응답자들이 제안한 것처럼 더 견고한 유니코드 문자열 처리, 지역별 통화·날짜·숫자 형식 등 현지화된 관례를 보여주는 코드 예제를 포함하는 것이 도움이 될 것이다.
또한 우리의 결과는 프로그래밍이 일부 사람들에게 영어를 더 잘 배우고자 하는 동기를 부여하는 맥락을 제공한다는 것을 보여주었다. 이 맥락을 활용하여 학습자들이 동시에 영어 실력을 향상시킬 기회를 어떻게 줄 수 있을까? 한 가지 아이디어는 기존 API 문서, 기술 블로그 게시물, 온라인 튜토리얼의 텍스트를 분석하는 웹 브라우저 확장 기능을 만드는 것이다. 이 도구는 ESL 독자들이 온라인을 읽으면서 능동적 학습을 수행할 수 있도록 맥락에 맞는 영어 이해 연습을 웹 페이지에 삽입할 수 있다. 이 확장 기능은 또한 IDE와 연결되어 코드가 컴파일되거나 테스트가 실행되는 동안 사용자의 현재 코드 및 문서 맥락과 관련된 영어 연습을 IDE 내에서 팝업으로 표시할 수 있다.
6. 학습자는 전문성을 습득하면서 변화한다, 그리고
7. 학습자 간의 차이를 인정한다: 이 연구에서 우리는 모든 비영어권 원어민을 하나의 집단으로 고려하였지만, 실제로는 인간 언어에 엄청난 다양성이 있고 그 기저의 문화에도 더 많은 미묘한 차이가 있다. 따라서 이러한 설계 아이디어를 과도하게 일반화하거나 전 세계 모든 사람을 위한 최적의 설계가 있다고 암묵적으로 주장하지 않는 것이 중요하다. 이러한 아이디어들은 향후 연구에 추진력을 제공하기 위한 출발점으로 보아야 한다.
프로그래밍 기술의 범용 설계를 향하여
앞서 언급한 아이디어들 중 많은 부분은 특정 사용자 집단(이 경우 비영어권 원어민)에 대해 생각하는 것이 모든 사람에게 도움이 되는 기술을 낳을 수 있는 범용 설계의 한 형태를 지향한다. 예를 들어 모든 사람이 코드에서 더 나은 식별자 이름을 이해하고 만들 수 있도록 돕는 IDE 도구로부터 혜택을 받을 수 있으며, 단순화된 영어는 원어민들도 지역 방언이나 지역적 관용구에 대해 걱정하지 않아도 되기 때문에 혜택을 주고, 코드 예제의 국제화는 모든 사람이 더 견고한 코드를 작성하는 법을 배우는 데 도움이 된다. ESL 문제를 명시적으로 다루는 제안된 아이디어들의 경우, '언어 비트를 뒤집어' 영어 원어민이 정상적인 프로그래밍 활동의 맥락에서 외국어를 배울 수 있도록 그 아이디어들을 사용할 수 있다.
결과의 일반성과 향후 연구에 대한 시사점
코드 읽기에 관한 일부 보고된 장벽은 비영어권 원어민에게만 국한되지 않는다. 이전 연구들은 영어에 능숙한 학습자조차 일상적인 단어 정의(예: "or", "while")와 코드에서의 정확한 의미론적 의미를 구별하는 데 어려움을 겪는다는 것을 발견하였다. 향후 연구는 비영어권 원어민에게 불균형적으로 방해가 되는 용어를 가려내는 것을 목표로 할 수 있다.
마찬가지로, 교육 자료 읽기와 ESL 기술적 의사소통에 관한 일부 보고된 장벽은 프로그래밍에 국한되지 않는다. 다른 분야의 학습자들도 유사한 이해 문제로 어려움을 겪는다. 그럼에도 우리 연구가 강조한 프로그래밍의 두드러진 특징은 코드가 영어와 긴밀하게 얽혀 있는 정도이다. 비록 프로그래밍 언어의 플라톤적 이상은 지저분한 인간 언어와 무관한 순수한 수학적 논리이지만, 현실적으로 프로그래밍 언어는—API, 프레임워크, IDE, 온라인 도움 커뮤니티의 주변 생태계와 함께—강하게 영어에 묶여 있다.
이 현실이 소프트웨어의 사용성과 견고성에 어떤 시사점을 가질까? 선행 연구에서 서양 설계 사용자 인터페이스는 전 세계 모든 사람에게 이상적이지 않다는 것이 발견되었는데, 이는 기반 구현 언어가 매우 영어 중심적이기 때문에 다른 유형의 소프트웨어에도 적용되는가?
더 광범위하게, 향후 연구는 영어 원어민과 비영어권 원어민이 유사한 소프트웨어 조각을 구현하는 방식의 차이와 유지보수성, 견고성, 사용성에 미치는 영향을 실증적으로 측정할 수 있다. 이해력 측면에서는, 코드베이스를 읽을 때 영어 원어민과 비영어권 원어민이 겪는 인지 부하의 차이를 측정하여 비영어권 화자에게 가장 많은 어려움을 주는 기능을 분리할 수 있다.
더 광범위하게, 향후 연구는 비영어권 원어민이 수학, 물리학, 3D 그래픽 등 다른 복잡한 기술 주제를 배우는 것과 코딩을 배우는 것이 얼마나 어려운지를 비교할 수 있다. 프로그래밍의 '언어'가 텍스트적이어서 상징적이거나 그래픽적인 것보다 영어에 더 묶여 있기 때문에 배우기 더 어려울까? 연관하여, 블록 기반이나 그래픽 기반 언어가 프로그래밍을 인간 언어에 더 중립적으로 만들어 더 전 세계적으로 접근 가능하게 할 수 있을까?
실용적 목표를 넘어 더 넓히기
이 논문은 프로그래밍을 글로벌 노동력에 참여하기 위해 성인들이 습득하고 싶어 하는 시장성 있는 기술이라는 매우 실용적인 관점을 취하였다. 하지만 계산적 리터러시 달성, 컴퓨팅 사고력 개발, 세상에 대해 배우는 수단으로서 코딩을 배우는 것과 같은 다른 자주 인용되는 이유들은 어떠한가?
프로그래밍의 범위를 실용적인 직업 관련 목표를 넘어 확장하면, 영어 중심적 기원과 잠재적인 문화적 동질성에 얽매이지 않아도 된다. 기존의 생산급 API 및 생태계와 상호 운용할 필요에서 자유로워진다면, 다양한 배경을 가진 학습자들의 모국어와 문화와 긴밀하게 어우러지는 새로운 프로그래밍 언어와 도구를 설계할 미래의 기회는 무엇이 될까? 이것들은 단순히 기존 영어 기반 도구의 번역이 아니라, 처음부터 자신의 모국어 및 문화와 긴밀하게 얽히도록 설계될 것이다.
더 나아가 추측하자면, 다른 인간 언어 배경을 가진 사람들이 계산적 사고를 다르게 표현하여 프로그래밍 언어와 도구에서 완전히 다른 구성을 선호하는 것은 아닐까? 즉, 프로그래밍에 대한 사피르-워프 가설이 있을 수 있을까?
결론
이 논문은 우리가 아는 한 인간 언어가 프로그래밍 학습에 미치는 영향에 대한 가장 대규모의 질적 연구에 기여한다. 86개국 74개 모국어에 걸친 840개의 설문 응답을 분석함으로써, 우리는 비영어권 원어민이 직면하는 장벽들(영어 원어민과 비원어민 모두에 의해 보고된)과 교육 자료 개선에 대한 그들의 요구사항들을 발견하였다. 그런 다음 교육 자료와 도구를 비영어권 원어민에게 더 접근 가능하게 만들기 위한 학습자 중심 설계 아이디어를 제안하였다. 이 연구는 'Computer Science For All'의 희망적인 약속이 모든 언어 배경을 가진 사람들을 포함하도록 범위를 넓히는 미래에 우리를 더 가까이 데려간다.
더 일반적으로, 프로그래머들은 기존 자료를 자신의 필요에 맞게 채택하고 적응시키는 데 있어 "앞서 나가는" 형태의 선도 사용자이다. 따라서 초보 프로그래머들을 위해 설계하는 것은 모든 종류의 언어적·문화적 배경을 가진 사람들이 다른 창의적인 기술에 더 쉽게 접근할 수 있는 길을 열 수 있다. 앞으로 수십 년 동안 어떤 새로운 창의적 기술이 수요를 받을지 정확히 예측하기는 어렵지만, 세계가 더욱 상호 연결됨에 따라 그것들이 글로벌 청중에게 최대한 접근 가능하도록 만드는 것이 더욱 중요해질 것이다. 다양한 배경을 가진 미래의 창조자들이 더 많이 역량을 갖추게 됨으로써, 결국 만들어지는 산물들이 세계의 필요를 더 잘 대표하게 되기를 희망한다.
감사의 말: 데이터 분석을 도와준 Hsien-che(Charles) Chen과, 이 프로젝트에 대한 피드백을 제공해준 Xiong Zhang 및 UC San Diego Design Lab에 감사드린다.
[참고문헌 목록은 원문 그대로이므로 생략]
https://claude.ai/share/cbfd21fc-28e5-4fb1-afed-734b777baf01

Shared via Claude, an AI assistant from Anthropic
claude.ai
댓글 0