PH pullh
입문 블로그 / Hello, World 다음에 멈추지 않기 위한 첫 7일
첫걸음 5분 Beginner

Hello, World 다음에 멈추지 않기 위한 첫 7일

출력 한 줄은 시작일 뿐이다. 초보자가 가장 쉽게 동력을 잃는 첫 일주일을 어떻게 지나갈지 작게 쪼개 본다.

첫 7일 커버 이미지

많은 사람이 Hello, World를 찍은 뒤 갑자기 막막해진다. 방금까지는 잘 따라왔는데, 이제 무엇을 해야 하는지 아무도 정확히 말해 주지 않는 느낌이 들기 때문이다.

처음 일주일은 실력을 증명하는 기간이 아니라 학습 리듬을 만드는 기간이다. 매일 아주 작은 결과를 하나씩 만드는 편이 훨씬 오래 간다.

이 시기에 가장 흔한 실수는 다음 단계를 더 어려운 문법에서 찾는 것이다. 클래스나 비동기 같은 단어를 검색하기 시작하는데, 정작 변수 세 개를 조합해 작은 프로그램을 만드는 일은 아직 해 본 적이 없는 상태다.

왜 첫 주에 자주 멈출까

튜토리얼은 결과를 보여 주지만, 학습자는 아직 문제를 정의하는 법을 배우지 못했다. 그래서 다음 단계가 더 어려운 문법처럼 보이고, 실제로는 무엇을 연습해야 하는지 모르는 상태가 된다.

첫 주에는 언어를 깊게 파는 대신 입력, 처리, 출력이라는 아주 작은 흐름을 반복해서 몸에 익히는 것이 좋다. 어떤 프로그램이든 결국 이 세 덩어리이기 때문에, 이 틀이 잡히면 새로 배우는 문법을 어디에 끼워 넣어야 할지가 보인다.

7일 동안 해볼 일

  • 출력, 변수, 문자열을 섞어 자기소개 프로그램을 만든다.
  • 숫자 두 개를 받아 더하고 빼는 계산기를 만든다.
  • 조건문으로 합격과 불합격을 판단하는 코드를 만든다.
  • 반복문으로 구구단 한 단만 출력해 본다.
  • 리스트나 배열에 값을 넣고 하나씩 꺼내 본다.
  • 함수를 하나 만들어 같은 코드를 줄여 본다.
  • 가장 마음에 든 예제를 빈 파일에서 다시 쓴다.

2일차 계산기를 예로 들면

이 목록이 지나치게 시시해 보일 수 있어서, 둘째 날 과제 하나를 실제로 펼쳐 보겠다. 대부분의 입문자가 여기까지는 삼 분이면 쓴다.

1단계

a = input("첫 번째 숫자: ")
b = input("두 번째 숫자: ")
print(a + b)

3과 4를 넣으면 7이 아니라 34가 나온다. 여기서 첫 번째 배움이 생긴다.

이 결과를 보고 나면 문자열과 숫자가 다르다는 설명이 처음으로 실감난다. 설명을 읽고 이해한 것과, 34를 직접 보고 이해한 것은 남는 정도가 다르다. 고쳐 보면 두 번째 배움이 온다.

2단계

a = int(input("첫 번째 숫자: "))
b = int(input("두 번째 숫자: "))
print(a + b)
print(a - b)

이제 7이 나온다. 대신 3.5를 넣으면 프로그램이 죽는다.

여기서 멈추지 않고 일부러 이상한 값을 넣어 보는 것이 셋째 배움이다. 숫자가 아닌 것을 넣었을 때 어떤 에러가 나는지, 그 에러 이름이 무엇인지 한 번 보고 지나가면 나중에 같은 이름을 만났을 때 반응 속도가 다르다. 하루 과제 하나에서 이렇게 세 가지가 나온다. 과제가 작아서 나오는 것이지, 과제가 커지면 오히려 이런 관찰이 사라진다.

매일 붙이는 한 줄

과제를 끝냈으면 일부러 깨뜨려 보십시오. 빈 값을 넣고, 음수를 넣고, 아주 큰 수를 넣어 봅니다. 깨지는 방식이 그 문법의 성질을 알려 줍니다.

7일차의 빈 파일이 핵심이다

마지막 날 과제만 성격이 다르다는 점을 눈치챘을 것이다. 앞의 엿새는 새로운 것을 하나씩 붙이는 날이고, 이레째는 아무것도 안 보고 다시 쓰는 날이다. 이 하루가 없으면 앞의 엿새가 대부분 증발한다.

다시 쓰다 보면 반드시 막힌다. 함수 정의 문법이 기억나지 않거나, 리스트에 값을 넣는 함수 이름이 떠오르지 않는다. 그때 답을 보는 것은 괜찮다. 중요한 것은 무엇이 안 떠올랐는지가 목록으로 남는다는 점이다. 그 목록이 다음 주에 실제로 연습해야 할 항목이고, 튜토리얼 목차보다 훨씬 정확하다.

순서에도 이유가 있다

목록의 순서가 임의로 정해진 것은 아니다. 앞의 세 개는 값을 다루는 연습이고, 네 번째와 다섯 번째는 여러 개를 다루는 연습이며, 여섯 번째는 코드를 묶는 연습이다. 값 하나에서 여러 개로, 그리고 흩어진 코드를 이름 붙여 묶는 데까지 가는 흐름이다.

이 순서를 건너뛰면 나중에 반드시 되돌아오게 된다. 함수를 먼저 배운 사람이 함수를 왜 쓰는지 모르는 경우가 흔한데, 같은 코드를 세 번 복사해 본 경험이 없기 때문이다. 여섯 번째 과제를 다섯 번째 다음에 둔 것은 그래서다. 리스트를 다루다 보면 비슷한 코드가 반복되고, 그 반복이 불편해진 다음에 함수를 만나야 이유가 함께 들어온다.

불편을 먼저 겪고 도구를 나중에 만나는 순서는 이후 학습에서도 계속 쓰인다. 클래스도, 테스트도, 버전 관리도 마찬가지다. 필요를 느끼기 전에 배우면 문법만 남고, 필요를 느낀 뒤에 배우면 도구가 된다.

이 계획을 그대로 따르면 안 되는 경우

이 7일은 목적이 정해지지 않은 입문자를 위한 기본값이다. 만들고 싶은 것이 이미 분명한 사람에게는 오히려 돌아가는 길이다. 웹 화면을 만들고 싶어서 시작한 사람이 콘솔 계산기를 이레 동안 만들면, 배우는 것은 있어도 하고 싶었던 것과 멀어져서 흥미가 먼저 식는다. 그런 경우에는 같은 개념을 자기 분야의 재료로 바꿔서 하는 편이 낫다. 조건문 연습을 버튼 클릭 처리로, 반복문 연습을 목록 그리기로 바꾸는 식이다.

반대로 이 목록을 완벽하게 소화해야 다음으로 넘어갈 수 있다고 생각하는 것도 곤란하다. 이레 안에 일곱 개를 다 못 해도 상관없다. 다섯 개를 하고 이틀을 쉬었어도, 여드레째에 다시 파일을 열었다면 이 계획은 성공한 것이다. 목표는 일곱 개의 완성이 아니라 여덟째 날이 있는 것이다.

피해야 할 것

첫 주에 강의 열 개를 결제하거나 두꺼운 책 두 권을 사는 것입니다. 자료가 늘면 선택지가 늘고, 선택지가 늘면 시작이 늦어집니다. 하나만 고르고 나머지는 나중에 보십시오.

처음 일주일의 목표는 많이 아는 사람이 아니라 매일 다시 켤 수 있는 사람이 되는 것이다.

첫걸음

더 볼 것

하루 분량을 어떻게 배치할지는 45분 학습 리듬 만들기에 따로 적어 두었습니다. 과제에 쓸 예제가 필요하다면 파이썬 학습 허브나 파이썬 기초 가이드에서 짧은 것부터 골라 쓰면 됩니다.

이 글의 포인트

  • 첫 주에는 어려운 이론보다 학습 리듬이 더 중요하다.
  • 매일 작은 입력-처리-출력 예제를 손으로 다시 쳐 보는 편이 오래 간다.
  • 과제를 끝낸 뒤 일부러 깨뜨려 보면 배우는 양이 늘어난다.
  • 새로운 것보다 이미 배운 것을 혼자 복원해 보는 시간이 필요하다.
  • 목표가 분명하다면 같은 개념을 자기 분야 재료로 바꿔도 된다.

Next Read

처음 배우는 언어, 무엇을 기준으로 고를까

언어 선택은 취향 테스트가 아니라 목적 정리에서 출발한다. 처음 한 개를 고를 때 놓치기 쉬운 기준을 정리했다.