
얼마 전 코딩을 시작한 친구가 책은 한 권 끝냈는데 혼자서는 뭘 만들어야 할지 모르겠다고 했다. 문법을 읽을 때는 고개가 끄덕여지는데, 빈 화면 앞에 앉으면 손이 멈춘다는 이야기였다. 처음 배우는 사람에게 꽤 익숙한 순간이다. 이럴 때는 공부 시간을 무작정 늘리기보다, 배운 내용을 작은 결과물로 바꾸는 순서를 잡는 편이 낫다.
먼저 만들고 싶은 것을 아주 작게 고르기
코딩을 배우는 목적이 막연하면 무엇부터 공부할지도 흐려진다. 그래서 첫 목표는 거창한 앱보다 생활 속 작은 불편 하나가 좋다. 예를 들어 매달 쓰는 돈을 항목별로 더하거나, 읽은 책 목록에서 아직 읽지 않은 책만 골라 보여주는 식이다. 결과가 화면에 보이거나 숫자로 확인되면 다음 단계로 넘어가기도 쉽다.
처음부터 로그인, 디자인, 데이터 저장까지 넣을 필요는 없다. 가계부라면 ‘금액 세 개를 입력하면 합계를 보여준다’ 정도로 시작해도 충분하다. 작동하는 첫 버전을 만든 뒤 항목 이름 붙이기, 합계와 평균 함께 보여주기처럼 기능을 하나씩 더하면 된다. 한 번에 해결할 문제가 작아야 어디에서 막혔는지도 보인다.
언어는 하나를 골라 손으로 익히기
처음 검색을 해보면 어떤 언어가 더 좋다는 이야기가 끝없이 나온다. 하지만 입문 단계에서는 언어를 계속 바꾸는 것보다 하나로 입력, 조건, 반복, 함수의 감각을 익히는 일이 더 중요하다. 웹 화면을 직접 만들어 보고 싶다면 자바스크립트가 자연스러운 선택이고, 간단한 계산이나 파일 작업에 관심이 있다면 파이썬으로 시작할 수 있다. 관심 있는 결과물에 맞춰 하나를 고르면 된다.
강의를 볼 때도 영상만 끝까지 이어 보는 것보다 예제를 직접 고쳐 보는 시간이 필요하다. 숫자 10을 20으로 바꾸면 결과가 어떻게 달라지는지, 조건을 하나 더 넣으면 어느 부분이 실행되는지 확인해 보는 식이다. 화면의 코드를 그대로 따라 친 다음에는 예제를 닫고 기억나는 만큼 다시 만들어 보면 이해하지 못한 부분이 금방 드러난다.
하루 30분을 실제로 쓰는 순서
공부 시간이 짧아도 할 일을 나누면 진도가 남는다. 30분이라면 앞의 5분은 어제 만든 코드를 실행하고, 다음 15분은 기능 하나를 추가하는 데 쓴다. 마지막 10분에는 오류를 고치거나 새로 알게 된 내용을 두세 줄로 적는다. 매일 꼭 30분을 채워야 한다는 뜻은 아니다. 앉자마자 무엇을 할지 결정하느라 시간을 다 보내지 않도록 만든 예시다.
- 오늘 할 일은 ‘가계부 만들기’ 대신 ‘금액 두 개의 합계를 출력하기’처럼 적는다.
- 막히면 오류 메시지와 바로 전에 바꾼 코드를 함께 확인한다.
- 해결한 뒤에는 왜 고쳐졌는지 한 문장으로 남긴다.
특히 오류 기록은 생각보다 쓸모가 크다. 처음에는 괄호 하나, 이름 철자 하나 때문에 프로그램이 멈추기도 한다. 같은 실수를 다시 만났을 때 이전 기록을 보면 검색부터 다시 시작하지 않아도 된다. 오류가 났다는 사실보다 어디를 확인해 해결했는지가 다음 공부의 재료가 된다.
막혔을 때는 문제를 더 작게 나누기
코드가 작동하지 않으면 ‘전체가 안 된다’고 느끼기 쉽다. 그럴 때는 입력한 값이 제대로 들어왔는지, 계산 결과가 예상과 같은지, 화면에 보여주는 부분에서 멈추는지 차례로 확인하면 범위를 좁힐 수 있다. 예를 들어 합계가 이상하다면 먼저 입력값 두 개를 각각 출력해 본다. 숫자라고 생각한 값이 문자로 들어와 있을 수도 있다.
다른 사람이 만든 답을 참고할 때는 복사한 코드가 왜 작동하는지 확인하는 과정이 중요하다. 한 줄씩 지우거나 값을 바꿔 보면서 어떤 역할을 하는지 살피면 다음에는 비슷한 문제를 스스로 풀 가능성이 커진다. 그래도 해결이 안 되면 기대한 결과, 실제 결과, 시도한 방법을 적어 질문하면 상대도 상황을 파악하기 쉽다.
첫 결과물이 작아 보여도 괜찮다. 내가 입력한 값이 예상대로 처리되고, 어제 못 찾던 오류를 오늘 고쳤다면 이미 코딩으로 문제를 다뤄 본 셈이다. 그런 경험이 몇 번 쌓이면 다음에 만들고 싶은 것도 조금씩 선명해진다.
