2-1. 코딩세계야 덤벼ㄹ..붕어빵이 뭘 어쨌다고?

Part 2. 헬로 월드..?

by 미르

개강 첫날, 오리엔테이션 자료를 받아 들고 나는 잠시 긴 침묵과 인내의 시간을 견뎌야 했다.

왜냐하면 그냥 빨리 정복해버리고 싶고, 금방 해낼 수 있을 것만 같았기 때문이다!!


그렇지만 더닝 크루거 효과겠지.

*Dunning–Kruger effect:
능력이 부족한 사람은 자신의 능력을 과대평가하고, 능력이 뛰어난 사람은 자신의 능력을 과소평가하는 현상.


이 느낌이 더닝 크루거 효과였다는 것을 인지하는 데에는 긴 시간이 걸리지 않았다.

6개월 동안의 로드맵은 다음과 같다.

* 데이터 분석 코스: 파이썬(Python) → 기초 수학과 통계 → 파이썬 활용 데이터 시각화 → SQL & Database (여기까진 그래도 엑셀의 연장선이겠지?라고 순진하게 생각해 버리는 실수를 저지르고 만다.)
* 인공지능 코스: 머신러닝 기초 → 기초 의학용어 → 딥러닝 기초 → 의료 이미지 분석(Computer Vision) → 진료 기록 요약(NLP) (의학용어 빼고는 전부 예전에 SF 영화에서만 봤던 단어들이다.)
* 웹 개발 코스: 웹서비스 구조 이해 → HTML/CSS/JS → FastAPI 활용 AI 모델 서빙 → Docker 활용 배포 (분명 헬스케어 수업인데 왜 웹사이트까지 만드는 거지?라는 의문을 떨칠 수가 없었다.)


Day 1~2: 폭풍전야의 평화 (변수와 자료구조)


첫 주는 프로그래밍의 기본 언어인 '파이썬(Python)'을 배우는 시간이었다. 1일 차(변수와 데이터 타입)와 2일 차(자료구조)까지는 솔직히 '할 만하다'는 착각에 빠졌다.

변수(Variable): 데이터를 담는 그릇. a = 10이라고 쓰면, 'a'라는 상자에 숫자 10을 넣는다는 뜻이다. 직관적이다.

자료구조(List, Tuple, Dictionary, Set): 데이터를 정리하는 방식. 리스트: 순서대로 줄 세우기 [1, 2, 3] 딕셔너리: 이름표 붙이기 {'name': 'Mir', 'age': 'secret'}


"어라? 코딩 별거 아니네? 영어 단어 외우듯이 규칙만 알면 되는 거 아냐?"

print('어쩌구저쩌구')

내 명령에 따라 터미널에 자료들이 찍히는 걸 보며 나는 묘한 성취감까지 느꼈다. 내 손끝에서 컴퓨터가 반응한다는 사실이 짜릿했다. 하지만 그것은 컴퓨터가 내어준 아주 잠깐의 곁일 뿐이었다.


Day 3~4: 컴퓨터야, 너 T였구나.. (제어문과 반복문)


3일 차(제어문-if)와 4일 차(반복문-for, while)에 들어서자, 컴퓨터의 본색이 드러났다. 이 녀석은 융통성이라곤 눈곱만큼도 없는 지독한 원칙주의자다.

사람끼리는 "대충 알아들으면 되지"가 통한다. 하지만 컴퓨터는 달랐다.

if문 뒤에 콜론(:) 하나만 빠져도, 들여 쓰기(Indent)가 스페이스바 한 칸만 어긋나도 컴퓨터는 가차 없이 빨간색 에러 메시지(SyntaxError)를 뱉어냈다.


"아니, 들여 쓰기 한 칸 틀린 건 문맥상 알아서 넘어가 주면 안 돼?"


for i in range(10):


이 간단한 한 줄을 이해하기 위해 4일의 시간을 소모했다. '0부터 시작해서 9까지'라는 컴퓨터식 카운팅부터가 낯설었다. 우리는 숫자를 1부터 세는데, 왜 너는 0부터 세는 거니. 그게 좋니..?


반복문을 돌리다가 무한 루프(Infinite Loop)에 빠져 커서가 멈췄을 때의 그 공포란. 컴퓨터가 고장 난 줄 알고 식은땀을 흘리며 강제 종료를 눌렀다.


Day 5: 수학 익힘책의 악몽 (함수 def)


5일 차, 함수(Function). 수학 시간에 배웠던 y=f(x)가 돌아왔다.

'수학에 나오는 함수라면 이미 익숙하지. 난 수능수학 (가)형 풀던 사람이야.'


def


라는 명령어로 기능을 정의한다. 여기까지는 오케이. 그런데 '매개변수(Parameter)'와 '인자(Argument)'가 등장하고, '리턴값(Return)'이 뭐..? 로 시작하면서 뇌가 10분간 정지했다.

'이거.. 학창시절 미분적분 할 때 나오는 그 함수랑 느낌이 완전 다르네..?'


"입력값이 들어가서 가공되어 결과값이 나온다." 라는 말은 쉽다. 하지만 내가 짠 함수는 값을 넣었는데 아무것도 안 뱉어내거나(None), 엉뚱한 값을 뱉어냈다. 아니 엉뚱한 값을 뱉어내기라도 하면 어디에서 틀렸는 지 감이라도 오는데, 영문도 모른 채 에러가 나는 경우가 더 많다.


지역 변수와 전역 변수가 어쩌니, 엄마 변수와 아들 변수? 강사님이 이 설명을 하실 때 넋 놓고 있다가 나중엔 할아버지와 증조할아버지와 증손주까지 나왔다.


함수 안에서 만든 변수는 밖에서 못 쓴단다. 왜? 내 컴퓨터인데 내 마음대로 못 써? 역시 파이썬의 세계는 너무나 엄격하고 융통성 없다.


Day 6: 붕어빵의 저주 (객체지향 프로그래밍)


그리고 대망의 6일 차, 객체지향 프로그래밍(OOP). 일주일의 하이라이트이고 가장 중요하다고 한다.

강사님은 그 유명한 '붕어빵 틀(Class)'과 '붕어빵(Object)' 비유를 들고 설명하신다.

Class: 붕어빵 틀 (설계도)

Object: 팥 붕어빵, 슈크림 붕어빵 (실체)


머리로는 당연히 안다. 그런데 코드로 옮기려니


self


라는 녀석이 나를 괴롭혔다.


"여기서 self는 누구를 가리키나요?"
"인스턴스 자기 자신이요."
"그러니까 그 자기 자신이 틀인가요, 빵인가요, 아니면 팥인가요?"


클래스 안에 함수를 넣고, 상속(Inheritance)을 받고.. 현실 세계를 코드로 옮겨온다는데, 내 눈에는 슬슬 그냥 복잡한 영어 알파벳 나열로만 보이기 시작했다.


일주일 차 생존 보고: 겸손해진 자아


부트캠프 첫 주가 끝났다. 6일 전, "할 만한데?, 빨리 더 해버리고 싶다"라고 생각했던 나의 오만함은 산산이 조각났다.


나는 그동안 정답이 있는 공부에 익숙했다. 혹은 고시공부처럼 두꺼운 책 펼치고 가운뎃손가락 물집 잡힐 때까지 펜 잡고 여기저기 필기하고, 다 외워버리거나 적당히 이해하고 여러 번 읽고 문제 풀면 점수가 적당히 잘 나오는 시험들.

하지만 코딩은 달랐다. 정답이 아니라 '과정'을 설계하는 일이다. 논리적으로 빈틈이 없어야만 비로소 움직이는 이 정직하고 냉정한 세계.


내 머릿속엔 파이썬 문법의 파편들이 둥둥 떠다닌다. 리스트니 딕셔너리니 하는 것들이 뒤섞여 있다.

벌써부터 머리가 지끈거리지만, 그래도 딱 하나 좋은 점은 있다.


이제 에러가 나도 당황하지 않고 침착하게 구글 검색창을 켠다는 것. 비록 내가 짠 코드는 엉망이지만, 적어도 컴퓨터와 대화하는 법을 '가나다라'부터 배우기 시작했다는 것.

일주일 버텼으면, 6개월도 버틸 수 있지 않을까? 일단 오늘까진 머릿속으로 실리콘밸리를 떠올려도 합법이다. 아직 더닝 크루거 효과의 '우메함의 봉우리' 단계이기 때문이다.


> 코드실행_성공_횟수 = n

> 엉덩이_통증_정도 = m

> if 코드실행_성공_횟수 ≥ 엉덩이_통증_정도:

> print("수고했어, 나 자신.")

> else:

> print("공부 더 해라. 유튜브 끄렴.")

이전 03화1-3. 국평오의 도전장: 내가 개발자가 될 상인가