프로그래밍 오리엔테이션

적정수준의 공부

오늘 안타까운 메일을 한통 받았습니다. 프로그래밍을 오랫동안 공부했고 알고리즘, 데이터스트럭쳐, 컴퓨터 구조와 같은 것을 정말 열심히 공부했는데 프로그래밍을 할 줄 모른다고요. 프로그래밍적 사고를 못하기 때문이라며 이 공부를 그만두는 것을 심각하게 고민하고 있다고 하셨습니다. 이런 고민에 대해서 저도 정답을 알고 있는 것은 아닙니다. 저 역시도 제가 프로그래밍을 잘한다고 생각하지는 않거든요. 조심스럽게 저의 생각을 적어봅니다.

공부라는 것은 적정수준이 중요한 것 같습니다. 언어에 비유를 해볼께요. 아이들은 언어를 배울 때 힘들어하지 않습니다. 왜냐하면 아이들은 사고 체계 자체가 아직은 고차원적이지 않기 때문에 언어를 복잡한 형태로 사용할 필요가 없거든요. 그래서 명사나 동사와 같은 단어들로 말을 하다가 어느시점에서 명사와 동사를 조합해서 좀 더 많은 의미들을 만들어내기 시작합니다. 이런 과정을 반복하면서 좀 더 복잡한 언어의 체계를 자연스럽게 받아들입니다.

우리가 영어를 배울 때를 생각해봐도 좋을 것 같습니다. 문장을 사용하는 이유는 무엇일까요? 단어들을 조합해서 훨씬 더 많은 의미를 만들 수 있기 때문이겠죠. 명사 10개 동사 10개를 주어+동사의 구조에 따라서 조합하면 100개의 의미를 만들 수 있습니다. 이것을 주어+동사+목적어의 틀에 따라서 조합한다면 20개의 단어로 1000개의 의미를 만들 수 있습니다. 주어+동사+목적어+전치사+명사의 구조를 사용한다면 만들어 낼 수 있는 의미의 가능성은 가히 폭발적이라고 할 수 있습니다. 우리가 1000개의 단어를 조합해서 주어+동사+목적어의 구조로 말을 한다면 우리가 하는 대부분의 말들이 인류 역사상 누구도 해본적이 없는 말일 가능성이 큼니다. 즉 주어+동사+목적어로도 우리는 충분히 많은 의미를 만들어 낼 수 있습니다. 하지만, 제가 학교 때는 이 기본적인 도구의 잠재력을 충분히 사용하기도 전에 관계대명사, 동명사와 같은 것을 배우죠. 이것은 우리 머리를 너무 복잡하게 하는 것 같습니다. 즉 간단한 표현을 할 때도 너무 많은 결합방법들이 떠오르기 때문에 아무것도 할 수 없게 됩니다.

프로그래밍도 사정은 비슷한 것 같아요. 데이터스트럭쳐, 알고리즘, 디자인 패턴... 이런 것들은 정말 소중한 선배 개발자들의 성취입니다. 그런데 이러한 학문적인 성취들은 아래와 같은 상황들을 해결하기 위해서 고안된 것들이 아닙니다.

  • 100건 정도 되는 데이터의 처리
  • 20줄 짜리 규모의 코드
  • 혼자서하는 개발
  • 한달짜리 프로젝트

롯데월드타워 같은 초고층 빌딩을 짓는 것과 1층짜리 단독주택을 짓는 것은 본질적으로는 같은 일입니다. 하지만 현실적으로는 완전히 다른 공학적인 고려가 들어가게 됩니다. 규모가 달라지면 그 규모를 지탱하기 위해서 막대한 체계들이 필요해집니다. 1층 건물도 지어본 적이 없는데 초고층 빌딩을 지을 수는 없는 것이겠죠. 동시에 1층 건물을 짓는데 초고층 건물을 짓는데 필요한 체계들을 사용하는 것은 과한 것이겠죠.

특히나 좋은 코드에 대한 이해가 높아질수록 자신이 만든 코드에 대한 만족도는 떨어지게 됩니다. 그래서 더 많은 공부를 하지만 자기 코드에 대한 만족도는 오히려 더 떨어지는 악순환에 빠지게 되죠. 이것이 반복되면 아는 것은 많은데 할 수 있는 것은 별로 없다는 자괴감을 갖게 됩니다. 적당한 자괴감은 자기 발전의 약이 됩니다. 하지만 과한 자괴감은 자신감을 괴사시킵니다.

이런 이유로 제가 주장하는 것은 적정수준의 공부입니다. 장기적으로는 초고층 건물도 지어낼 수 있는 역량을 키워야 합니다. 동시에 단기적으로는 1층 건물을 짓는 것부터 시작하는 것이 어떨까 싶습니다. 제가 생각하는 구체적인 공부 방법으로 글을 마무리하겠습니다.

  1. 프로그램을 만드는데 필요한 최소한의 도구를 익힌다. (문자, 숫자, 변수, 비교, 조건문, 반복문, 함수)
  2. 최소한의 도구로 다양한 문제를 해결해 본다.
  3. 가지고 있는 도구로 문제를 해결하는 것이 점점 어려운 일이 되었을 때 선배 개발자들의 성취를 찾아본다. 이 또한 최소한으로.
  4. 2번과 3번 반복

원문 : 생활코딩 페이스북 페이지

댓글

댓글 본문
  1. hyo236
    저는 정말 공부를 못해서 혼공자를 외워버리는 공부를 했는데 결국 자바를 이해하지 못하는 사람이더군요. 그래서 문제를 많이 접하면서 작은 성취를 경험하며 다시 공부하려고 합니다. 좋은 글 감사합니다
  2. 상선약수
    공부방법:
    1)번이 목표이구요, 만족 합니다. 2)번은... 아직까지는 해결하고 싶은 문제를 아직 찾지 못했습니다.

    제가 60쪼금 넘었는데...조언을 드리면, 목표를 조금만 낮추면(쉽지 않겠지만) 성취감을 가질수 있을것 같은데...안타깞네요. 좀 일찍 알았으면 도울 수 있을것 같은데...
  3. pji219
    공감가는 댓글이네요~ 저도 이런 생각을 했습니다ㅎ
    이고잉님께서는 삶이나 코딩에 대한 통찰력이 대단하신분 같아요:)
    강의에서 들려주시는 이야기를 들으면 놀라는 부분이 참 많고 흥미로운 이야기가 많습니다^^
    대화보기
    • 컴공
      좋은 말씀 감사합니다. 요즘 잘 모르겠어서 이것저것 찾아보다니보니, 자괴감이 들고 제가 부족하다는 생각에 빠져서 힘들었어요.
      적정 수준의 공부 참 중요한 것 같습니다.
      비교하기보다는 내가 가진 것으로 충분하다는 걸 한번 더 깨닫게 됩니다.
      제가 만들고 싶은 것은 대단한 테크닉 없이도 충분히 만들 수 있는 것이었어요.
      코딩의 재미를 다시 느껴보고 싶네요.
    • Horang
      그래서 중간중간 이제 공부를 멈추라고 하신거였군요 ㅎㅎ 잘읽고갑니다
    • 허공
      감사합니다!
    • Cenfun
      마음을 저기에 있는 정작 몸은 요기에 있다는 ...ㅎㅎㅎ. 정말 괴롭죠.
    • 돼지천재
      감사합니다.
    • 지혜
      정말 감사합니다
    • 제로스
      감사합니다 ~~
    • 클로버
      감사합니다. :)
    • seokhee
      핵심은 최소한의 도구로 다양한 문제를 해결해보는 것 같군요.
      부족함이 있을 때 그것을 메꾸기 위해 창의성이 발현되는 것과 같은 맥락인 것 같습니다.
      통찰력에 감탄하고 갑니다^^
    • hanulsso
      생활코딩에서 코딩공부하는 방법에 대한 최고의 답을 얻었습니다.
      나아갈 길이 이제 눈에 보이기 시작했습니다.
      차근히 걸어만 가면 되겠습니다.
      한발한발 나아가도록 하겠습니다.
      감사합니다. !
    • 정말로 옳은 말씀입니다.
      야망은 크지만 능력은 딸리는 법.
      차근차근 쌓아 나가다 보면 큰 건물을 세울 것 입니다.
    • 이주형
      감사합니다~! 저같은 초보에게도 정말 도움이 되는 글인 것 같습니다. 이고잉님께서
      '프로그래밍 오리엔테이션' 이란 대분류 아래 써놓으신 이 글과 동영상들은 따로 모아서
      '코딩하는 철학자(?)' 같은 책으로 내도 될 것 같다는 생각이 들었습니다. 여기 있는 글들을
      하나 하나 읽으면서 여러가지 통찰을 얻게 되는 것 같습니다.
    • JiYoung Choi
      감사합니다.
    • 강경호
      감사합니다
      170303
    • 유진
      충분한 실무 경험과 생활중에 많은 고민을 한 흔적이 묻어있는 공감되는 글이군요!

      흔히 '그 사람 참, 참하더군!'이란 표현을 하지요~

      이 글을 읽고 그런 생각이 들었습니다.

      이 강사님은 ' 참한 사람 같애~'
    • 노노재노재노창
      와 정말 공감되고 좋은 글이예요.
      눈은 높은데 본인 실력이 부족할때가 힘든것 같아요.
      본인이 그분야를 직접하기전에 미리 많이 알고있는것도 꼭 좋은것만은 아닌것같아요.
    • 김코딩
      좋은글들이 많네요 댓글중에도 좋은 공부가 되는 말들이 많습니다.
    • nomad2gleam
      순수학문을 전공한 사람으로서도 상당히 많이 공감이 되는 내용이네요.
      적당한 공부와 충분한 사색이 뒷받침 되지 않은 상태에서 진행하는 무리한 독서는, 사람을 지나치게 관념적이고 비겁한 사람으로 만드는 경향이 있는 듯 합니다.
      가령, 제가 대학생 시절 초등학생 중학생 아이들에게 '너의 가장 소중한 친구가 만약 사형에 처할 범죄를 저질렀는데, 너가 판사라면, 그리고 그를 무죄로 만들어 주는것이 너에게 아무런 피해를 주지 않는 상황이라면 너는 어떻게 할꺼니?'라고 질문하면, 대다수의 아이들은 '즉각' 사형을 시켜야 한다고 대답합니다. 그런데 고등학생 혹은 그 이후의 사람들에게 저러한 질문을 하면, (심지어 사형을 시켜야 한다고 결정을 내리는 아이들 또한 상당한 고민에 빠지게 됩니다.) '상대적으로' 많은 아이들이 사형에 대해 반대의 결정을 내리곤 합니다.
      깊은 우정에 대한 삶의 경험 없이, 옳고 그름, 정의 등을 관념적으로 습득한 아이와 그러한 경험이 있는 아이의 차이라고 생각합니다.
      물론 그렇다고 해서, 사형을 시킨다고 결정하게 되는것이 현실과의 타협이라고도, 혹은 그것이 더 현실을 직시하는 진리라고 말하는건 아닙니다만...
      관념적인 지식과 실질적인 경험의 밸런스에 대해 생각하면 항상 이 이미지가 떠오르더라구요.
    • 폭스킴
      과한 자괴감은 자신감을 괴사~ 공부방법은 반복문을 사용할 것~^^
    • 히스토
      학부생에게 큰 도움이 되는 말입니다.
    • hyuna
      특히나 좋은 코드에 대한 이해가 높아질수록 자신이 만든 코드에 대한 만족도는 떨어지게 됩니다...
      이말이 참 공감가요.
      뒤늦게..프로그래밍의 세계를 알게됐고..너무나 재미있어서 주말에 하루종일 강의 듣고 책보고 하는게 그저 즐겁고, 전반적인 이해력과 사고력에 정말 도움이 된다고 생각하고 있어요.
      그런데 내가 공부한 것들을 일로서 사용할 수 없다면 나는 왜 프로그래밍을 하려고 해야 하는 걸까..
      스스로 아직 그 답은 정하지 못했네요.
      늘 감사합니다.
    • JustStudy
      고맙습니다
    • Metanoia
      Thank you!!!
    • 구름과비
      좋은 글이네요. ^^
    • 또한번 깊은 통찰이 느껴지는 글에 새삼 이고잉님의 연배가 궁금합니다
      (새삼이라곤했지만 '남의 성취를 부러워하는' 습관을 가진 저로서는 사실, 처음부터 궁금했습니다^^)
    • 오빠는다르다
      감사합니다.
    • 검사무운
      잘 봤습니다.
      동영상으로 봤던 내용인데 글로 보니 새롭네요.
      "간단한 표현을 할 때도 너무 많은 결합방법들이 떠오르기 때문에 아무것도 할 수 없게 됩니다."
      중요한 말 같습니다.
    • 정말 좋은글입니다. 힘이되네요
    • 쥬슈야
      공부하는 인류가 잊지 말아야할 즐거운 공부법이라 생각합니다.
      감사합니다.
    • 인문대에이스
      아 정말 저에게 와닿는 이야기 인것 같습니다.
      감사합니다.
    버전 관리
    egoing
    현재 버전
    선택 버전
    graphittie 자세히 보기