brunch

You can make anything
by writing

C.S.Lewis

by 쿠우보이 Nov 04. 2016

나누고 대화하기

배우기 위한 가장 좋은 방법

무언가를 '배우기' 위한 방법은 여러 가지가 있다. 그리고 각자가 경험에 의해 가장 성향에 맞는 방법을 채택해 적용하기 마련이다. 나는 기본적으로 자리에 앉아서 누군가의 강의(lecture)를 통해 배우기보다는, 직접 해 보면서 배우는 게 많이 남는다고 생각해 왔다. 


진부한 이야기지만 우리는 '사회적 동물'이다. 즉, 우리는 태어나서 죽기까지, 여러 다양한 사람들과 어울려 살아가게 되며, 삶의 한 부분인 '배움' 역시, 득도를 하러 산에 들어가지 않는 이상 누군가와 함께 어울려 배우게 된다. 

제다이 루크스카이워커도 마스터 요다에게 가르침을 받는다

직접 해 보는 방법보다 더 좋은 방법은 누군가를 돕거나, 가르치는 일련의 과정인 것 같다. 대학생 시절, 학비를 벌기 위해 나는 학원 강사 아르바이트를 했다. 초/중/고등학생들에게 수학 및 물리를 가르쳤는데, 중고등학교 시절, 또는 대학교 시절 배웠던 내용보다, 내가 수업을 준비하고 수업에서 나누는 동안 더 확실히 개념을 이해했던 기억이 난다. 머리가 나빠서 그런지, 대학시절 배웠던 여러 역학 이론 및 공식들 역시 이후에 대학생 과외 수업을 준비하면서 왜 그런 공식들이 나오게 되고 써야 했는지 알게 되었다. 


여기엔 명확한 이유가 있다. 나 스스로의 학습을 위해선, 즉 나 자신의 이해도에 있어서는 한없이 너그러워지는 우리의 성향 때문인 것 같다. 반대로, 누군가에게 이 내용을 소개해주고 설명해 주기 위해서는 기준이 상당히 스스로 높이게 된다. 이해를 시키기 위해선, 나 자신이 완벽히 이해해야 하는 이유와 같다. 돌팔이가 아니라면 무언가를 누군가에게 소개하고 전달하려 했을 때, one-way 대화 방식이 아닌 질의가 왔다 갔다 하는 two-way 커뮤니케이션이 될 것이라는 것이 쉽게 예상이 된다. 


국내 유일의 코딩 부트캠프인 '코드 스테이츠'의 pre-course 과정 마무리 일정에 접어들었다. 기본적인 javascript 의 기본들을 배우며, 기초적인 동작원리 등을 배우게 되고, 무엇보다 스스로 학습해 나가는 연습이 큰 수확이었던 것 같다. 부트캠프의 한 과정 중, 'pair programming'이라는 과제가 있었는데, 같은 수강생들끼리 1대 1로 매칭을 해서 특정 과제를 함께 바닥부터 코드를 짜 보는 방식이다. 

출처: imgur.com (좌측)                                                                 slideshare Aliaksandr Kazlou (우측)


보통 한 명은 '네비게이터'라고 부르고 다른 한 명은 컴퓨터 앞에 앉아 코드를 짜는 '드라이버'라고 부른다. 즉, 네비게이터는 이렇게 저렇게 방향을 제시하고 드라이버는 제시받은 방향을 코드로 직접 구현을 해 본다. 일종의 롤플레잉 게임이라고 보면 좋다. 네비게이터는 문제에 대한 해결책을 큰 그림으로 제시할 수 있어야 한다. 도착지까지의 경로는 여러 가지일 수 있다. 쉽지만 멀리 돌아가는 길, 어렵지만 신박하게 짧게 가는 길, 등 여러 가지의 각자의 논리로 드라이버에게 주문할 수 있다. 드라이버는 네비게이터의 주문을 바로바로 순발력 있게, 그러나 정확하게 선택한 언어로 올바른 프로그래밍 문법 안에서 구현할 수 있어야 한다. 


때로는 네비게이터의 주문에 반론할 수 있고 다른 제안을 할 수도 있다. 이렇게 자연스레 두 명의 프로그래머는 더 좋은 코드 작성을 위한 토론을 벌이게 된다. 이 토론을 통해, 한 사람이 생각해내고 구현할 수 있는 코드보다 더 유연한, 더 넓은 test case를 cover 하는 좋은 코드가 작성된다. 내가 생각하지 않는 예외상황에 대해서 더 많은 의견을 주고받음으로써 software 의 robustness가 강해진다. 


실제로 프로그래밍을 업으로 하게 된다면, 이렇게 pair programming을 하게 된다는데, 진짜 그럴지는 잘 모르겠다. 하지만 꼭 이러한 pair programming의 형식이 아니더라도, 어쨌거나 누군가가 작성하 코드를 가지고 여러 개발자들과, 운영자들과 나누고 대화하게 되는 것은 SW quality로, 결국 제품과 서비스의 quality로 이어질 것으로 예상한다. 


블로그에 무언가를 나누고 설명하는 것 역시 이러한 이유가 크다. 내가 누군가에게 공개적으로, 어떤 개념을 설명하기 위해서는 조사 및 사전 스터디가 필수적이다. '책'을 집필하기 위해 동종 분야의 책을 넓은 범위로 최소 100권 이상을 읽어야 한다는 말이 있다. 역시 같은 맥락이라 생각된다. 


개인적으로 앞으로 욕심이 많다. 코딩도 더 재밌게 배우고 싶고, 좋은 프로그래머가 되고 싶은, 좋은 블로거가 되고 싶은, 그리고 언젠가 책을 내고 싶고, 강의를 하고 싶다. 단계적으로, 한 걸음씩 포기하지 않고 꾸준히 공부하고 소개하고 나누고 대화할 때, 시너지 효과가 있을 것이랑 기대된다. 

매거진의 이전글 질문하는 방법이
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari