왜 Scratch가 아이들이 프로그래밍을 배우기에 가장 좋은 플랫폼인지

내 딸이 Scratch에서 첫 번째 프로젝트인 고양이가 나비를 쫓는 간단한 애니메이션을 만들었을 때, 그녀의 컴퓨터와의 관계는 완전히 변했습니다. 갑자기 그녀는 단순히 콘텐츠를 소비하는 것이 아니라 화면에서 무언가를 만들어내는 사람이 되었습니다. 2년과 수많은 프로젝트가 지난 지금, Scratch가 아이들에게 얼마나 환상적인 프로그래밍 언어인지, 그리고 그녀와 같은 젊은 마음을 위한 훌륭한 창의적 놀이터인지 정확히 설명할 수 있습니다.
Scratch 소개: 아이들이 좋아하는 프로그래밍 언어
2000년대 초 MIT 미디어랩에서 개발된 Scratch는 아이들이 자신의 아이디어를 실현할 수 있는 다채롭고 직관적인 놀이터입니다.
전통적인 프로그래밍 언어는 복잡한 구문과 암호 같은 세미콜론으로 아이들을 압도할 수 있지만, Scratch는 어린 마음에 완벽하게 이해되는 시각적 접근 방식을 사용합니다.

각 프로그래밍 개념은 고유한 색상의 블록으로 표현됩니다: 보라색은 외관, 파란색은 움직임, 노란색은 제어 등입니다. 이 블록들은 논리적인 방식으로 퍼즐 조각처럼 맞물리며, 이들을 가지고 얼마나 많은 것을 할 수 있는지 놀라울 것입니다.
스페이스 바를 누를 때 캐릭터를 움직이게 하고 싶나요? 그냥 “이벤트” 블록을 잡으세요. 게임 내내 플레이어의 이름을 기억해야 하나요? 단 한 번의 클릭으로 변수를 생성하세요. 전통적인 프로그래밍 과정에서 위협적으로 들릴 수 있는 이러한 개념들은 블록으로 쌓는 것처럼 자연스러워집니다.
심지어 함수는 성인 학습자에게 도전이 될 수 있는 개념이지만, Scratch에서는 자연스럽게 나타납니다. 내 딸이 여러 캐릭터가 같은 춤을 추기를 원한다는 것을 깨달았을 때, 그녀는 “내 블록” 섹션에서 사용자 정의 블록을 생성하여 같은 코드를 반복하지 않도록 할 수 있다는 것을 발견했습니다.
가장 좋은 점은? 초보자를 위한 전통적인 프로그래밍 언어에서는 지루한 터미널 창에서 텍스트 출력만 보이는 경우가 많지만, Scratch에서 만드는 모든 것은 화면에서 즉시 살아납니다. 녹색 깃발을 한 번 클릭하면, 내 딸은 그녀가 상상한 대로 캐릭터가 춤추고, 상호작용하고, 움직이는 것을 볼 수 있었습니다.
Scratch 시작하기
Scratch를 시작하는 것은 그보다 더 쉬울 수 없습니다. scratch.mit.edu에서 웹 브라우저에서 바로 실행되며, 오프라인 작업을 선호하는 경우 Windows, macOS, ChromeOS 및 Android용 다운로드 가능한 버전도 있습니다. 우리는 내 딸이 Raspberry Pi를 컴퓨터로 사용하기 때문에 웹 버전을 선택했습니다(오프라인 버전은 Linux를 지원하지 않습니다).

계정 없이 바로 프로젝트를 만들 수 있지만, 나는 내 딸이 작업을 저장하고 젊은 창작자 커뮤니티에 참여할 수 있도록 계정을 만들기로 결정했습니다.
그녀의 첫 번째 창작물로, 우리는 간단한 것을 유지하기로 했습니다: 고양이가 나비를 쫓는 애니메이션. Scratch의 가장 매력적인 기능 중 하나는 아이들이 프로젝트에서 사용할 수 있는 미리 만들어진 애니메이션 캐릭터와 객체의 방대한 라이브러리입니다. 그래서 나비를 추가하는 것은 “스프라이트 선택” 버튼을 클릭하는 것만큼 쉬웠습니다. 편리하게도 고양이 스프라이트는 기본적으로 이미 존재하므로, 우리는 그것을 추가할 필요조차 없었습니다.

무대가 설정되었으니, 이제 논리를 추가할 시간입니다. 나는 내 딸에게 “[스페이스] 키가 눌렸을 때”와 같은 이벤트 블록을 사용하는 방법을 보여주어 고양이가 나비에 더 가까이 다가가도록 했습니다. 우리는 “[10] 스텝 이동”과 같은 간단한 움직임 블록을 사용하여 그녀가 명령의 결과를 즉시 볼 수 있도록 했습니다. 상호작용을 위해, 우리는 고양이가 나비에 닿았을 때를 감지하기 위해 “if” 블록으로 조건 검사를 추가했습니다. 그럴 때마다, 우리는 고양이가 야옹하는 소리를 내도록 사운드 블록을 트리거했습니다.

이 블록들을 드래그하고 맞추는 단순함 덕분에 그녀는 행동의 흐름을 이해하는 데 직관적이었습니다. 이 초기 단계에서도 그녀는 “if-then” 문과 이벤트 기반 프로그래밍의 논리를 이해했으며, 자신이 기본적인 프로그래밍 개념을 배우고 있다는 것을 깨닫지 못했습니다.
Scratch의 주요 도전 과제
Scratch는 아동 친화적으로 설계되었지만, 우리는 도중에 두 가지 장애물에 직면했습니다. 우리는 그것들을 어떻게 해결했는지 살펴보겠습니다.
초기 읽기 어려움
가장 큰 초기 장애물은 전혀 기술적인 것이 아니라 문해력이었습니다. 우리가 Scratch를 처음 시작했을 때, 내 딸의 읽기 능력은 블록 설명과 버튼 레이블을 독립적으로 이해하기에 충분히 발달하지 않았습니다.

이것이 그녀를 방해하도록 두기보다는, 나는 이를 공유 학습 시간의 기회로 바꾸었습니다. 나는 그녀의 초기 프로그래밍 세션 동안 그녀와 함께 앉아 레이블을 읽고 다양한 블록이 무엇을 하는지 설명했습니다. 몇 달 안에 그녀는 스스로 블록 설명을 읽을 수 있게 되었고, 그녀의 프로그래밍 어휘와 기술 문해력은 읽기 능력과 함께 자연스럽게 확장되었습니다.
프로젝트 크기 제한
우리가 직면한 유일한 기술적 도전은 Scratch의 프로젝트 자산 한계에서 발생했습니다. 각 프로젝트는 여러 자산을 포함할 수 있지만, 각 자산은 최대 10MB 크기여야 합니다. 이는 스프라이트와 짧은 사운드 효과에는 충분하지만, 내 딸이 자신의 제작 배경 음악을 추가하기 시작했을 때 크기 문제에 직면했습니다.

해결책은 오디오 파일에 대해 더 스마트해지는 것이었습니다. 직접 녹음한 WAV 파일을 사용하는 대신, 우리는 Audacity라는 무료 오디오 편집기를 사용하여 MP3 형식으로 변환하기 시작했습니다. 이 압축은 일반적으로 파일 크기를 80-90% 줄이면서도 수용 가능한 음질을 유지했습니다.
Scratch 너머: 다음은 무엇인가?
Scratch가 아이들이 흥미롭게 느끼는 시각적 블록을 통해 프로그래밍 개념을 소개하는 데 훌륭하지만, 젊은 코더들이 텍스트 기반 프로그래밍을 탐색하고 싶어하는 시점이 올 수 있습니다. 결국, 그것이 진정한 프로그래밍의 본질입니다.

내 딸은 아직 완전한 텍스트 기반 프로그래밍을 할 준비가 되어 있지 않아서, 우리는 Microsoft의 MakeCode로 중간 단계를 밟고 있습니다. MakeCode는 Scratch와 매우 유사하게 블록을 사용하여 프로그래밍을 가르칩니다. 그러나 Scratch와 달리 MakeCode는 젊은 코더들이 텍스트 기반 프로그래밍으로 전환하고 JavaScript 또는 Python에서 더 고급 논리를 구현할 수 있도록 합니다.
텍스트 기반 언어에 바로 뛰어들 준비가 된 더 나이 많은 아이들에게는 Python과 JavaScript가 훌륭한 출발점이 됩니다. 두 언어 모두 깔끔하고 읽기 쉬운 구문과 게임 및 그래픽을 생성하기 위한 방대한 라이브러리를 제공하여 Scratch에서 배운 개념을 확장하고자 하는 젊은 프로그래머에게 적합합니다.
표지 이미지 및 스크린샷 제공: David Morelo.