프로그래밍 개념 공부: 실행 전에 먼저 예측하세요
프로그래밍 개념 공부는 코드를 실행하기 전에 결과를 예측하고, 예상과 달랐다면 이유를 설명하는 데서 시작합니다. 변수를 손으로 추적하고, 며칠 뒤 작은 프로그램을 기억만으로 다시 쓰고, 다른 유형의 문제를 섞어 푸세요. 보고 따라 치면 익숙해지고, 예측하고 직접 만들어야 이해가 됩니다.

많은 입문자가 몇 주씩 튜토리얼을 따라 하며 고개를 끄덕이다가, 빈 에디터 앞에서는 얼어붙습니다. 흔히 튜토리얼 지옥이라고 부르는 상태인데, 원인은 단순합니다. 따라 하기는 코드를 알아보는 일이고, 프로그램을 쓰는 일은 코드를 만들어 내는 일입니다. 시험에서도 프로젝트에서도 통하는 프로그래밍 개념 공부를 하려면 연습이 만들어 내는 방식이어야 합니다.
이 가이드는 프로그래밍 수업을 1~2학기째 듣는 학생과 독학하는 입문자를 위한 글입니다. 예시는 Python이지만 기법은 어떤 언어에서나 통합니다. 예측 후 실행 루프, 추적 방법, 개념 카드 형식, 주간 계획을 알려 드립니다.
코딩 튜토리얼은 왜 머릿속에 남지 않을까요?
튜토리얼은 모든 결정을 대신 해 주기 때문에, 다음에 무엇을 쓸지 고르는 가장 어려운 부분을 연습하지 못합니다. 본 적 있는 코드는 나중에 익숙해 보이는데, 이는 지식이 아니라 알아보는 느낌일 뿐입니다. 쓸 수 있는 멘탈 모델은 떠올리기와 예측에서 만들어집니다.

그래도 튜토리얼은 쓸모가 있습니다. 새로운 개념을 처음 만나는 용도로 쓰세요. 그런 다음 영상을 끄고 본 내용을 빈 파일에서 다시 만들어 보세요. 다시 만들지 못하는 부분이 바로 공부할 부분입니다.
문법이 아니라 프로그래밍 개념을 익히려면 어떻게 해야 할까요?
코드가 메모리에서 무슨 일을 하는지에 집중하세요. 각 변수가 무엇을 가리키는지, 값이 언제 어떻게 바뀌는지입니다. 짧은 코드를 실행하기 전에 출력을 예측하고, 틀렸다면 이유를 적어 두세요. 문법은 쓰다 보면 붙고, 개념에는 의도적인 연습이 필요합니다.
핵심 습관은 네 단계 루프입니다. 코드 하나에 몇 초면 되고, 수업의 모든 예제를 연습으로 바꿔 줍니다.

지금 직접 해 보세요. Python에서 a = [1, 2, 3]으로 시작해 b = a를 만들고, b.append(4)를 호출한 뒤 print(a)를 실행합니다. 읽기 전에 출력을 먼저 예측해 보세요. 입문자 상당수가 [1, 2, 3]이라고 답합니다. 실제 출력은 [1, 2, 3, 4]입니다. b = a는 리스트를 복사하지 않고 두 이름이 같은 리스트를 가리키기 때문입니다. 이 한 번의 의외성이 설명 한 페이지보다 변수의 동작 방식을 더 잘 가르쳐 줍니다. 공식 Python 튜토리얼에는 같은 방식으로 쓸 수 있는 짧은 코드가 가득합니다.
코드 추적이란 무엇이고 왜 도움이 될까요?
코드 추적은 코드를 손으로 한 줄씩 따라가며, 매 줄 뒤의 변수 값을 적는 것입니다. 컴퓨터가 되어 보는 이 연습이 코드 작성과 디버깅 모두의 바탕이 되는 멘탈 모델을 만듭니다. 시험에도 자주 나오는 형식입니다.

마지막 줄에는 시험에 자주 나오는 디테일이 숨어 있습니다. Python에서는 반복문이 끝난 뒤에도 반복 변수가 마지막 값을 그대로 갖고 있습니다. 모든 줄을 적어 봐야 알아챌 수 있는 부분입니다. 반복문, 조건문, 함수 호출을 매주 몇 개씩 추적해 보세요. 특히 재귀처럼 머릿속에 그리기 어려운 주제에 효과적입니다.
코딩 개념을 오래 기억하려면 어떻게 해야 할까요?
배운 지 며칠 뒤에 작은 프로그램을 기억만으로 다시 쓰고, 무엇인지가 아니라 왜인지를 묻는 개념 카드 덱을 유지하세요. 며칠 간격으로 반복해서 떠올려야 개념이 쓸 수 있는 상태로 남습니다. 한 번 성공했다고 끝이 아닙니다.
기억 연구가 이를 뒷받침합니다. 한 실험에서 처음 맞힌 뒤에도 계속 떠올린 학생은 일주일 뒤 약 80퍼센트를 기억했고, 한 번 성공하고 멈춘 학생은 약 35퍼센트를 기억했습니다. Karpicke 연구진이 설명한 결과입니다. 코드에서는 이진 탐색이나 클래스 정의를 월요일, 목요일, 다음 주에 빈 파일에서 다시 써 보는 것이 같은 효과를 냅니다. 전체 방법은 능동적 회상과 간격 반복을 참고하세요.

코드를 소리 내어 설명하는 것이 정말 도움이 될까요?
네. 친구에게든 책상 위 고무 오리에게든, 한 줄 한 줄을 쉬운 말로 설명하면 대충 넘어갔던 단계가 드러납니다. 그 줄이 왜 있는지 말하지 못한다면, 다음에 공부할 개념을 찾은 것입니다.
프로그래머들은 이를 러버덕 디버깅이라 부르고, 학습 연구자들은 같은 습관을 자기 설명이라 부릅니다. 원리는 같습니다. 추론을 말로 풀어내면 조용히 읽을 때 건너뛰던 빈틈을 채우게 됩니다. 풀이 예제를 공부할 때는 블록마다 멈추고, 이 블록이 무슨 일을 하는지와 저자가 다른 방법 대신 이 방법을 고른 이유를 말해 보세요.
수업 예제, 라이브러리 문서, 친구의 프로젝트 등 어떤 코드에든 쓸 수 있어서, 프로그래밍 개념 공부를 깊이 있게 하는 가장 비용이 적게 드는 방법 중 하나입니다. 예측 루프와 함께 쓰면 과제에서 버그가 되기 한참 전에 대부분의 오해를 잡아낼 수 있습니다.
여러 종류의 코딩 문제를 섞어서 풀어야 할까요?
네. 한 주제가 익숙해지면 여러 주제의 문제를 섞어서, 반복문과 재귀, 리스트와 딕셔너리 중 무엇이 맞는지 직접 판단하게 하세요. 실제 문제와 시험이 요구하는 것이 바로 그 선택입니다.
중학교 1학년에 해당하는 7학년 학생 787명을 대상으로 한 수학 연구에서, 문제 유형을 섞어 연습한 학생은 예고 없는 시험에서 61퍼센트를 받았고 한 번에 한 유형씩 연습한 학생은 38퍼센트를 받았습니다. 교육과학연구소가 지원한 무작위 대조 시험의 결과입니다. 프로그래밍도 방법을 골라야 한다는 같은 과제를 안고 있습니다. 문제 은행을 작게 만들고 주제별로 태그를 붙여, 매 세션마다 여러 주제에서 뽑아 푸세요. 방법은 교차 학습 가이드에서 볼 수 있습니다.
프로그래밍 수업을 위한 주간 계획
강의나 튜토리얼에서 개념을 만나고, 같은 날 예제에 예측 루프를 돌리세요. 주중에는 처음부터 작은 프로그램을 쓰고, 주말에는 섞어 푸는 문제 세트와 지난주 프로그램 기억으로 다시 쓰기로 마무리합니다.
- 1일차: 강의의 모든 예제를 예측하고 실행하기.
- 2일차: 함수 호출이 있는 코드를 포함해 두 개의 코드를 손으로 추적하기.
- 3일차: 예제를 보지 않고 그 개념을 쓰는 작은 프로그램 짜기.
- 5일차: 이번 주와 이전 주의 문제 섞어 풀기.
- 7일차: 지난주 프로그램을 기억만으로 다시 쓰고 비교하기.
버그 일지도 함께 쓰세요. 버그마다 증상, 원인, 잘못 이해했던 개념을 적습니다. 몇 주 지나면 수학이나 과학에서 쓰는 오답 노트 방식처럼 나만의 약점 목록이 됩니다. 다른 과목 가이드가 궁금하다면 과학 공부법부터 보세요.
자주 묻는 질문
프로그래밍 개념을 익히는 데는 얼마나 걸리나요?
변수, 반복문, 조건문, 함수 같은 기본기는 꾸준히 연습해서 몇 주면 자연스러워지는 편입니다. 재귀나 객체 설계 같은 깊은 개념은 더 오래 걸리고 프로젝트를 할 때마다 나아집니다. 총 시간보다 짧게 규칙적으로 하는 것이 중요합니다.
프로그래밍 언어 여러 개를 동시에 배워도 될까요?
입문 단계에서는 대체로 권하지 않습니다. 개념은 언어를 넘나들지만, 문법 두 개를 동시에 배우면 세부 사항이 두 배가 됩니다. 한 언어에 먼저 익숙해지면 두 번째 언어는 훨씬 빨리 익힐 수 있습니다.
공부하는 동안 AI로 코드를 작성해도 될까요?
먼저 직접 시도한 뒤에 코드를 설명받거나 내 추론을 확인하는 용도로 쓰세요. AI가 풀이를 먼저 써 주면 실력을 만드는 연습을 건너뛰게 됩니다. 직접 예측하거나 내 버전을 쓴 다음 비교하는 것이 좋은 규칙입니다.
종이로 보는 프로그래밍 시험은 어떻게 준비하나요?
시험 형식이 종이이니 코드를 손으로 추적하고 쓰는 연습을 하세요. 에디터 없이 짧은 함수에 시간을 재고, 끝난 뒤 실행해서 확인합니다. 하나 차이 오류와 반복문의 경계 조건에 특히 주의하세요.
참고 자료
- The Python Tutorial, Python Software Foundation (예측 후 실행 연습에 알맞은 짧은 코드 예제가 담긴 공식 튜토리얼.)
- Metacognitive strategies in student learning: Do students practise retrieval when they study on their own?, Memory (Karpicke, Butler and Roediger, 2009) (처음 성공한 뒤에도 반복해서 떠올리면 일주일 뒤 약 80%를 기억했고, 문항을 제외하면 약 35%였습니다.)
- Efficacy Study of Interleaved Mathematics Practice, Institute of Education Sciences, U.S. Department of Education (7학년 787명. 예고 없는 시험에서 섞어 푼 집단 61퍼센트, 한 유형씩 푼 집단 38퍼센트.)



