프로그래머가 수학을 못하면

세줄요약

  1. 수학 못하는데 프로그래밍을 잘 하는 프로그래머는 없음.
  2. 수학이란 수학 과목의 점수가 아니라 수학적/논리적 사고방식을 뜻함. (수학적)
  3. 논리적 사고방식이 없는 프로그래머는 잘 할수가 없음.

유튜브로 보기

본문

'저는 게임 개발자 게임 프로그래머가 되고 싶은데 수학을 못해요. 수학을 못해도 프로그래머가 될 수 있나요?' 이 질문을 하시는 분들이 많아요. 일단 간단하게 답부터 드리면 수학을 못하면 저는 프로그래머를 못 한다고 봐요. 이 이야기 듣고 벌써부터 좌절하시는 분들이 계실 것 같은데, 사실 어떤 의미에서 그냥 '프로그래머 지망생들이 수학의 개념을 잘못 잡고 있는 게 아닌가?'라는 생각이 사실 제일 먼저 들어요.

수학이라는 단어를 들었을 때 '복잡한 공식 외워서 어떤 문제가 나올 때 적용할 공식에 그냥 숫자만 맞춰 넣어서 답을 맞히는 게 수학이다' 이런 식으로 생각을 하시는 분들이 더 많은 것 같아요. 그런 식으로 생각하는 게 틀렸다고 할 수 없는 게 훌륭한 선생님들도 만큼이나 덜 훌륭하신 선생님들도 많거든요. 수학 가르치시는 분이 누구냐에 따라서 학생들이 이런 식의 생각을 가질 수도 있겠구나 싶어요.

근데 제가 생각하는 수학은 이런 게 아니에요. 사실 수학은 논리와 되게 비슷해요. 어떤 전제와 가정이 있고 거기에 매개변수를 두었을 때 결과가 논리적으로 나온다. 이 논리의 개념이 가장 중요한 게 수학이거든요. 수학을 논리라고 가정한다면 "전 논리가 없는데 프로그래밍을 할 수 있을까요?" 이런 질문이거든요. 프로그래밍을 할 수는 있지만 훌륭한 프로그래머는 절대 못 된다고 봐요. 아니면 준수한 프로그래머도 아니거나 논리 없이 프로그래밍이 가능하다? 저는 그거는 믿지 않아요. 그래서 저한테 '수학을 못하는데 프로그래밍을 할 수 있나요?'라고 물어보시는 분들 중에는 과연 그 질문이 '제가 암기력이 딸려서 수학공식을 못 외우는데 과연 프로그래머를 할 수 있을까요?' 이 질문이라면 프로그래머를 할 수 있어요. 근데 질문이 그게 아니라 '저는 논리력이 정말 없는데 프로그래밍을 할 수 있을까요?'라고 하시면 프로그래밍을 혼자 취미로는 하실 수 있는데, 본인이 뭔가 생각해 낸 거를 실제 프로그램으로 만들어 낼 수 있을 정도의 프로그래밍을 하는 건 불가능하다고 봐요.

만약 '암기력이 안 좋아서 수학에서 막힌다' 그러면 문제를 어떻게 풀까?라는 게 중요한 건데 저도 추론이나 논리력은 강하지만 암기력은 사실 약한 사람이거든요. 저는 중학교 때 수학을 평균 50~60점 정도 받은 기억이 나는데, 삼각법을 너무 힘들어했어요. 왜냐하면 그때 선생님이 삼각법을 가르쳐 주실 때 이해하기 쉽게 가르쳐 주신 게 아니라 주입식으로 가르쳐 주셨기 때문에 제 머리에는 도무지 안 들어왔던 거 같아요. 고등학교 진학해서 1학년 때 내용들도 대부분 삼각법의 기초한 내용이었거든요? 그때까지도 수학은 되게 못했어요. 고2 올라갔을 때 담임 선생님과 진로상담을 하는데 '너 어디 가고 싶어?' 그러시길래 저는 아무 생각 없이 연세대라고 그랬거든요. 선생님이 '니 성적으로는 죽어도 못 간다. 수학하고 영어 둘 다 못하니까' 고 그러시면서 둘 중 하나라도 높여보라고 그러셨어요. 그래서 영어는 제가 정말 싫어했기 때문에 수학을 높여보자는 생각으로 태어나서 처음으로 학원을 다니게 되었는데 거기서 수학이 단순 암기가 아니라 이해하는 거구나… 라는걸 배웠어요.

예를 들면 코사인이라는 함수가 있잖아요? '삼각형에서 코사인이 뭐냐?' 물어보면 저는 전혀 몰라요. 코사인의 첫 이니셜이 C잖아요? 그러면 C에 삼각형을 맞춰보는 거예요. 코사인은 빗변과 밑변으로 이루어 거다라는걸 아시면은 언제나 빗변이 분모가 되기 때문에 그 반대로 사인은 빗변하고 높이 그거 두 개만 하면 되는거고…이런식으로 저는 이해려고 노력을 했어요. 하나만 외워두면 나머지는 도출이 가능하니까.

수학을 공부하실 때는 모든 공식을 전부 다 외우려고 하지 말고 정말 가장 핵심이 되는 공식만 외워서 거기에서 나머지 공식들을 도출해 내는 방법으로만 하면 암기력이 좋지않아도 수학은 잘할 수 있어요. 수학에서 정말 암기해야 될 것은 굉장히 적어요. 저는 어떤 공식이 나올 때 마다 과연 이 공식이 어디에서 도출이 되었는지를 보고 그러면은 '가장 핵심이 되는 최소한의 공식만 외우면 되겠구나' 라는 걸 깨달아서 저는 그 공식들만 외우는 걸 주력으로 했고, 그것마저도 안 외워지면 그림을 그리거나 앞글자만 따서 외우거나 하는 식으로 공부를 했던 것 같아요.

제가 이걸 깨달은 다음 그 이후로는 수학의 정석에 있는 문제를 다 풀 수 있을 때까지 반복적으로 학습한 것 밖에 없어요. 문제를 계속 풀다보면 같은 문제라도 필요한 공식이 뭔지 알았지만 그 공식을 기억을 못하면 제가 기억하고있는 핵심 공식에서 필요한 공식을 도출해내서 문제를 풀었던거죠. 그래서 실제 고2 때부터는 수학은 다 맞추거나 틀려도 1문제 정도였고요. 졸업할 때 까지 수학의 정석에 나오는 문제를 모두 풀 수 있는 정도 였어요.

제가 법대를 갈 당시에는 수능 시험 외에도 대학 본고사가 존재했는데 수능도 수능이지만 본고사에서 수학 점수를 잘 받아서 저는 보통 '수학점수 하나만으로 법대 들어갔다' 라는식으로 얘기를 해요.

결과적으로 드리고 싶은 말은

  1. 수학 못하면 프로그래밍 못한다.
  2. 수학을 못한다고 주장하실 때 내가 암기력이 모자르다고 주장을 하시는건지, 논리력이 모자르다고 주장하시는 건지 확실하게 했으면 좋겠어요.

논리력이 부족하시면 죄송한 말씀이지만 프로그래밍은 포기하시는게 좋을거 같구요 프로그래밍 쪽은 정말 암기력이 필요없는 부분이라고 봐도 암기력이 안좋으신거면 크게 문제는 없어요.

그 외

다시 수학공부를 하려면 POCU 아카데미의 'COMP1000: 소프트웨어 공학용 수학이 좋습니다.

img

제대로 대우받는 개발자 | 부족한 컴공지식 배우기 | MIT급 컴공인강

최저임금으로 고통받는 일회성 프로그래머는 그만! POCU 아카데미가 올해 연봉협상을 책임지겠습니다!