Disqus for rellat

릴랏 멘토링 가이드 7: 성공하는 사람의 습관



드디어 가르침을 제대로 실천하는 사람이 나타났다

네, 드디어 나타났어요. 그분의 이름은 이원재님이에요.


자, 여기서 잠깐, 제가 쓰는 이 글은 이원재님이 대단한 사람이라고 치켜 세우려고 쓰는 것이 아니에요. 이원재님이 원래부터 잘난 사람, 천재거나 수재가 아니에요. 그런데 이원재님이 하다 보니까 잘한 것이 있었거든요. 그걸 분석해서 다른 사람들에게 공유하려고 쓰는 글이에요. 그래서 이 글을 읽으면서 "와, 부럽다. 나는 저렇게 못하겠지."하는 생각보다는 "와, 저렇게 할 수 있구나. 보니까 쉬운데? 나도 해봐야지."이렇게 생각해 보세요.



이원재님의 작은 성공

백문이 불여일견이죠. 이원재님의 폴더에 들어가서 일지와 일기를 읽어 보아요. 이원재님의 글을 읽어 보면 대강 이런 식으로 스토리가 되어 있었어요.


  1. 나는 대학교 컴공과 3학년이다. 이기준님이 멘토링을 해주신다고 하네? 그래, 이번에 릴랏 멘토링 열심히 해봐야지.
  2. 이기준님의 글을 읽어 보고 모임에 나가서 강의를 들어 보니 자기 입장에서 무슨 프로그램을 만들지 생각을 해보라고 했다. 그래서 나는 "오디오 입출력을 제어하는 프로그램"을 만들어 보기로 생각했다.
  3. 그런데 "오디오 입출력을 제어하는 프로그램"을 기획하다 보니 모르는게 너무 많았다.
    1. 그래서 알아 보다가 흐지부지 되어서 포기함.
    2. 그리고 또 학교 수업도 들어야 되고..
    3. 뭐 이런 저런 다른 과제도 해야 되고..
    4. 그렇게 시간이 한 달 두 달 가버림
  4. 그러다가 무슨 프로그래밍 대회에 참가를 하게 되었다.
    1. 이틀 동안 캠프 형식으로 참가를 해서 프로그래밍 과제를 푸는 것이었다.
    2. 여기서 나의 능력이 그다지 특별하지 않다는 것을 뼈저리게 느꼈다.
    3. 내가 컴공과 3학년이고, 자바 공부한지도 몇 년 되고 해서 프로그래밍에 대해서 어느 정도는 안다고 생각했는데 실전에 나가서 프로그램을 만들어 보라고 했을 때 멘붕이 오는 것을 느꼈다.
    4. 이기준님 글을 보면 남들을 의식하면서 사는 사람은 진정한 실력을 쌓기가 어렵다고 했다. 지금 내 모습이 그런 상황인 것 같다.
  5. 그래서 지금까지 해왔던 생각을 내려 놓고 이기준님이 얘기하신 대로 더 작은 규모의 프로그램, 작은 게임을 만들어 보기로 했다.
    1. 작은 프로그램을 여러 개 만들어서 실력을 쌓아 나가기로 했다.
    2. 괜히 폼잡고 내 실력이 어느 정도 되는 것처럼 생각하지 말고 그런 생각을 다 버리고 쉬운 오픈소스 코드를 분석하고 포팅하기로 했다.
  6. 그렇게 해서 시작한 것이 테트리스였다.
    1. 공개되어 있는 테트리스 오픈소스 중에 내 입장에서 좀 더 쉽게 쓰여졌다고 판단된 것을 골라서 분석하기 시작했다.
    2. 그 소스가 자바스크립트로 되어 있었다. 나는 자바스크립트를 접하는 것이 처음이었다. 그러나 거기에 대해서 걱정하지 않고 그냥 소스를 작은 단위로 분할해서 거기에 나오는 명령어와 함수를 구글에서 검색해서 정리했다.
    3. 이기준님이 가르쳐 주신 대로 모르는 것이 나오면 "왜 그럴까, 어떻게 그럴까"하는 방식으로 자기 스스로 질문하고 대답해 보았다.
  7. 테트리스 소스를 분석하고 포팅을 하고 있었는데 이기준 이기환님이 읽어 보고 피드백을 해주셨다. 점점 속도가 붙었다.
  8. 테트리스 싱글 플레이 포팅을 끝내고 그것을 리팩토링해서 개선했다.
    1. 다인용 게임으로 개조해 보았다.
    2. 서버를 개발해서 붙여 보았다.
  9. 비주얼드 분석과 포팅을 시작했다.
  10. 블랙잭 분석과 포팅을 시작했다.
  11. 이기준 이기환님이 개발하신 릴랏 코딩 협업 프로그램 소스를 분석하기 시작했다.
  12. 이제는 무슨 프로그램을 봐도 분석하고 포팅하고 개선할 수 있겠다는 생각이 든다. 자신감이 생겼다.
    1. 아무리 어렵고 복잡한 프로그램도 이 방법을 실천하면 분석이 가능하고 개선이 가능하다는 것을 알게되었다.
    2. 새로운 언어를 만나도 걱정하고 주눅들지 않고 바로 도전할 수 있게 되었다.
      1. 예전에는 "내가 자바를 오래 배웠으니까 자바로 하자."같은 식으로 자꾸 안전빵으로 생각을 하려고 했었다.
      2. 새로운 언어나 기술을 배우는 것을 자꾸 미루고 겁을 냈다.
        1. 그러면서 동시에 "이러면 안되는데, 뒤쳐질지도 모르는데." 하는 불안감이 들었다.
  13. 무엇보다 내가 내 손으로 작동하는 프로그램을 만들어 낸다는 것이 즐겁다. 내가 살면서 이렇게 즐거웠던 적이 있었나 싶다.
  14. 이기준님이 지금처럼 계속 공부를 해나가면 나중에 나를 고용해 주시기로 했다. 지금처럼 배워 나가면 나중에는 큰 일을 할 수 있을 것 같은 생각이 든다.


왜, 어떻게 이원재님은 성공할 수 있었을까?

그 이유는 이래요.


  1. 이원재님은 자신을 관찰하는 시간을 가져 보았다.
  2. 그렇게 해서 자신이 가지고 있었던 과거 사고방식의 문제점을 깨달았다.
  3. 과거의 사고방식을 버리고 새로운 사고방식을 실천했다.
    1. 오픈소스를 분석하고 포팅했다.
      1. 리팩토링을 했다.
      2. 기능을 추가하고 개선했다.
    2. 배우는 과정을 과제 일지에 기록했다.
      1. 왜, 어떻게를 사용해서 자기 스스로 질문하고 대답을 했다.
        1. 그 내용 위주로 기록을 했다.
  4. 이 과정에서 과거에 자신이 생각하고 행동했던 것과 지금 생각하고 행동하는 것이 뭐가 다른지를 관찰해서 깨달은 것을 기록했다.
  5. 위의 과정을 계속 반복했다.


잘 안되는 경우는 왜, 어떻게 잘 안되었을까?

제가 릴랏 멘토링을 5월달부터 했는데요. 시도한 사람은 많았어요. 그런데 이원재님처럼 성공한 사람은 없었죠. 그 이유는 무엇이었을까요? 이원재님의 성공 이유를 역으로 뒤집어 보면 바로 알 수 있어요.


  1. 자기 관찰을 하지 않았다.
  2. 오픈소스 분석, 포팅, 리팩토링을 하지 않았다.
  3. 자문자답으로 사고력을 개발하는 일을 하지 않았다.


"내 속엔 내가 너무도 많아.."

사람들은 생각이 자꾸 바뀌어요. 자기가 하고 싶다고 하는 일도 꾸준히 하지를 못해요. 그러면서 맹목적으로 무슨 교육 코스, 무슨 책을 보면서 시간을 너무 오래 흘려 보내요. 사람들은 자기 스스로 발목 잡는 생각, 자기 스스로 태클 거는 생각을 해요. 쓸데 없는 걱정을 해요. 그렇게 딴 짓 하다가 시간이 흘러가 버려요.


  1. 쓸데없는 잡생각
  2. 지금 하는 일에 아무런 도움이 안되는 걱정
  3. 욕구와 감정의 출렁임


이러는 이유는 내 속에 내가 너무 많아서 그래요. 내 속에 내가 너무 많다는 말은 "가시나무 새"라는 노래 있잖아요. 거기 나온 노랫말인데요.


내 속엔 내가 너무도 많아


바람만 불면, 외롭고 또 괴로워


외부에서 바람만 불면, 쉽게 말해서 외부에서 각종 유혹이 들어오거나 누가 부추기면 흔들리고 멘붕이 오는 거죠.


내가 나를 발목잡네, 내가 나에게 태클을 거네

그러다 보면 특이한 생각을 하는데요. 저는 거기에 이름을 붙였어요. "내가 나를 발목잡는 생각, 내가 나에게 태클거는 생각"이라구요.


  1. 내가 지금 이걸 굳이 할 필요가 있을까?
  2. 지금 시작하기에는 너무 늦은게 아닐까?
  3. 내가 이걸 한다고 해서 누가 알아주기나 할까?
  4. 내가 이걸 한다고 해서 성공할 수 있을까?
  5. 내 친구 누구는 뭘 한다던데
  6. 요즘에 뭐가 잘나간다던데
  7. 엄마(아빠)가 뭐라고 하던데


잉? 이게 뭐지?


그럼 어떡하죠?

어떡하긴요. 알아차렸으면 이제 그만 해야죠. 알아차리고 안 하면 되요. 눈 감고 못 알아차리니까 계속 하는 거거든요. 못 본척 하고 자신을 속이니까 계속 같은 실수를 반복하는 거에요.


실수하는 자신을 미워할 필요는 없어요. 알아차린 때부터 그냥 안 하면 되요. 자기 스스로 발목잡는 생각, 자기 스스로 태클거는 생각을 안 하면 되요. 쉬운 거에요.


제가 쓴 글 계획한 대로 인생을 살아가려면을 보세요. 거기에 제가 이렇게 설명해 놓았어요.
"아이고, 이런, 쓸데없는 생각을 해버렸네. 님아, 내리세요."


아니, 왜 작은 게임 오픈소스 분석과 포팅을 안 할까?

제가 꾸준히 글을 쓰고 강의를 하면서 이걸 해보라고 강조했었는데요. 사람들이 이걸 안 하더라구요. 이걸 실제로 한 사람이 이원재님이었던 거죠. 아니, 그 쉬운걸 왜 안 할까요? 이게 너무 쉬워서 우습게 보였던 걸까요?


왜곡과 필터링

사고의 필터링이 있어요. 왜곡의 색안경이 있어요. 이것 때문에 사람은 무슨 말을 들으면 자기가 가진 내면의 사고방식으로 걸러 버려요. 왜곡해 버려요. 그래서 사람은 대개 자기가 보고 싶은 것만 보고, 자기 사고방식에서 받아들일 수 있는 부분만 걸러내서 받아 들여요. 이것을 빗대어서 "사람은 자기가 아는 만큼만 보인다."는 말이 있죠. 그러면 아무리 좋은 것을 배워도 자고 일어나면 뇌가 초기화 되어 버려요. 다시 자기가 예전에 하던 버릇대로 생각하고 행동하는 거죠.


그래서 자신의 과거 사고방식을 관찰해서 알아내는 것이 매우 중요해요. 프로그래밍이라면 겸허하게 자기 실력을 인정해야 해요. 예를 들어서 4시간 내에 작업의 전체 아웃라인을 만들어 내지 못하면 그 일은 백지 상태에서는 시작하지 못하는 거에요. 그렇게 할 실력이 안되는 거죠. 그러면 어떡할까요? 참고할 오픈소스를 검색해서 찾아 내고 그걸 분석하고 포팅해 보면 되요.


분석은 어떻게 해야 할까요? 코드를 작게 쪼개서 관련된 내용을 하나씩 구글 검색해서 일지에 정리하구요. 자기 스스로 질문을 하고 대답을 하면서 코드의 정보 처리 과정을 탐구하면 되요. 이원재님은 그렇게 했죠.


이원재님은 그렇게 해서 제가 가르쳐 준 것을 다 실천했어요. 이원재님은 이걸 깨우치기 전까지는 능력이 별볼일 없었어요. 본인이 무슨 경진대회 캠프에 가서 그걸 뼈저리게 느꼈다고 했어요. 다른 사람들이 코딩을 해나가는 것을 보면서 자신의 한계를 느꼈다고 했어요. 그리고 지금까지 대충 아는 척 하면서 살아온 자신을 반성하게 되었다고 했어요.


그러고 나서 어떻게 되었나요? 이원재님은 그전까지 자기 마음 속에 맴돌던 부정적인 생각, 발목 잡는 생각, 태클 거는 생각을 내려 놓고 제가 가르쳐준 것을 왜곡없이 있는 그대로 실천했어요. 그렇게 해서 이전에는 경험한 적이 없는 놀라운 깨우침을 경험하게 되었어요.


이원재님 특별 대우

왜, 잘하니까요. 잘 실천하니까요. 이런 사람은 특별 대우를 해주고 싶어요. 그래서 제가 이원재님에게 이런 계획을 제시했어요. 앞으로 이원재님이 계속 이 방향으로 실력을 개발하면 이원재님을 고용하기로요. 제가 이원재님에게 이런 제안을 했어요.


  1. 평생 직장
    1. 정년 퇴직 없이 평생 코딩을 하게 해드리겠다.
  2. 억대 연봉
    1. 사업이 제대로 잘 되는 것을 전제로 해서 그러면 급여를 찔끔찔끔 주지 않고 억대로 드리겠다.
  3. 건물주
    1. 그렇게 해서 장기적으로 월세 들어오는 빌딩을 가진 건물주로 만들어 드리겠다.
    2. 그래서 평생 먹고 살 걱정을 안 해도 된다.


그랬더니 이원재님이 좋아하더라구요. 제가 이런 제안을 해드린 이유는 먹고 살 것이 걱정되어서 도중에 포기하지 말라고 그런 거에요.


이기환님의 생각

아래는 이원재님이 2017년 5월 18일에 제시한 프로젝트를 정의한 내용이다.


윈도우 환경의 노트북에서 이어폰 분리시 소리를 음소거 하며 현재까지의 음량을 저장하고 이어폰을 다시 연결하면 원래의 음량으로 전환 해 준다.


  1. 윈도우 백그라운드로 돌아가는 프로그램이다.
  2. 사운드 카드 또는 윈도우 자체의 시그널을 받아서 후 처리를 해 주어야 한다.
    1. 사운드 카드를 건드려야 하는건지 윈도우 자체의 시그널만 받아야 하는지 모르겠다
    2. 윈도우에서 이어폰을 연결하면 사운드 카드의 드라이버가 연결 여부를 알람으로 띄운다.
  3. 후처리
    1. 단자 분리
      1. 현재 음량을 저장 하고 음소거 한다.
      2. 음소거가 되어 있는 상태라면  default로 음량을 저장 해 둔다. 또는 그냥 음량을 0으로 둔다.
      3. 단자 분리 후 음소거를 풀고 음량을 조절 하면, 아무것도 하지 않는다.
    2. 단자 연결
음소거를 풀고 이전의 음량으로 소리를 회복 시켜 준다.




나는 해당 주제를 리서치하면서 이런 판단을 했다.
  1. 윈도우 API와 하드웨어 드라이버의 기능지원이 있어야 한다. 즉, 내가 통제할 수 있는 부분 보다 환경이 제공하는 기능에 의존하는 비중이 더 크다.
  2. 다른 방법은 커멘드 라인 툴로 시스템 설정에 직접 접근하는 방식이 있는데 이것은 실제로 성공한 사례를 찾기 어려웠고 1번과 마찬가지로 내가 통제할 수 있는 부분이 적다.
  3. 하드웨어 드라이버 마다 다르게 동작할 확률이 높아서 범용 소프트웨어를 만들려고 한다면 해야할 작업범위가 많다.


아래는 내가 해당 주제를 리서치하고 피드백을 한 내용이다.


이기환 피드백: 참고로 우분투 리눅스에서는 오디오 출력 장치 라인에 따라 볼륨 컨트롤 설정을 별도로 가지고 있어서 말씀하신 것 처럼 노트북 스피커 상태일 때 음소거를 한번 해놓으면 이어폰을 연결했을 때 정상 볼륨이 되고 이어폰을 제거하면 음소거로 돌아갑니다.
Linux ALSA mixer 사용법 내용을 보시면 사운드카드 이벤트를 처리하는 것을 볼수 있습니다.


구글에서 아래 키워드를 조합해서 검색했습니다.
alsamixer alternative windows
windows volume control api detect headphone


Automatically change system volume when audio device plugged in? Superuser. 같은 문제를 겪는 사람들이 있네요. Windows 내장 UI로 설정하는 방법이 있는데 설치한 사운드 드라이버에 따라 오디오 장치 감지가 다르게 작동한다고 합니다.
또 다른 방법으로는 외부 프로그램을 이용하는 방법이 있습니다.
참고 Change the audio device which the keyboard volume keys control Superuser. nircmd 라는 툴을 사용해 터미널 커맨드로 system volume에 직접 접근한다. 백그라운드 프로그램에서 exec 할수 있겠네요.
Nircmd 메뉴얼 showsounddevices 부분을 참고하세요.


위 프로젝트는 내 입장에서 볼 때는 달성하고자 하는 목표가 처음부터 불투명하기 때문에 만약 실제 작업에 들어가면 온갖 어려움에 부딪쳐 고생할 것이 예상되었다.


이원재님은 이후 위 프로젝트를 중단하고 2017년 7월 7일부터 '작은 오픈소스 게임: 테트리스 온라인'를 시작했다. 일지에는 어떤 판단을 했는지 설명이 안되어 있는데 내가 이원재님에게 들은 바로는 "내가 초반에 자신에 대한 기대심을 너무 높게 잡은 것을 알게 되었다. 내가 지금 할 수 있다고 판단되는 쉬운 것부터 도전해야 겠다."라고 생각했다고 한다. 그게 깨달음이다.


이원재님이 지금까지 한 정보처리를 정리해 보자.
  1. 이 서비스와 유사한 서비스와 앱을 검색해서 알아보고 정리한다.
  2. 깃헙에서 자바스크립트로 만든 테트리스 코드를 발견했다. 코드 링크
  3. 코드를 분석했다. 해당 코드는 html dom를 javascript로 만드는 방식이라 그래픽을 개선하는 것이 제한적이었다. 그러나 테트리스라는 게임의 로직을 파악하는데는 많은 도움이 되었다.
  4. 코드를 개선했다. 기존 게임 코드가 전역 함수로 설정되어 있는 것을 오브젝트 방식으로 개선했다.
  5. 기존 게임 코드가 html dom manipulation 방식으로 되어 있는 것을 p5.js 라이브러리를 사용해서 HTML5 canvas 방식으로 고쳤다.
  6. 기존 게임은 테트리스 블럭의 색깔이 단일 회색이였는데 각 블럭마다 색깔을 다르게 만들었다.
  7. Node.js websocket 기술을 리서치하고 샘플을 분석했다.
  8. 온라인 버전을 만들 때 구현할 내용을 정의했다.
  9. 게임 서버를 구현했다.


예전에 2011년 경 인디 개발자가 개발하여 유저 1만명 정도로 히트시킨 게임이 있었다.
플래시 도타 나무 위키
플래시프렌트 - 운영평전 해당 개발자가 남긴 기록
플래시도타(Flash Dota) 2016 : 금광산편 유튜브 게임 플레이 동영상


이렇게 누구나 아마추어에서 시작해서 프로가 될 수 있다. 나는 이 사람이 플래시도타를 만든 경험을 개선해서 메이저 시장에 도전할 수 있다고 생각한다. 이 개발자가 메이저 시장에서 성공하지 못한 이유는 본인이 계속 개선하고 실천하는 것을 멈추었기 때문이다. 이렇게 자신이 실천할 수 있는 작은 프로젝트 부터 시작해서 꾸준히 개선하면 된다. 성공과 실패는 작은 차이에서 비롯한다. 이원재님은 작은 프로젝트를 직접 실천하는 것을 성공적으로 경험하였고 이 과정을 지속하면 계속 성공할 확률을 높여나갈 것이다.


일지를 잘 적는 방법

내가 사람들 쓴 일지를 읽는데 보면 나중에 자기가 다시 읽어도 이해가 안 될 것 같이 쓰는 경우가 있다.
내가 그 분야를 잘 알면 그 사람이 일지를 대충 써도 과정이 파악이 되는데 내가 그 분야를 모르거나 접해본지 너무 오래된 경우 피드백하기가 어렵다. 그렇다고 그 사람이 했던 과정을 내가 유추하여 재구성하는 것은 시간이 너무 오래 걸리기 때문에 그 사람을 내 옆에 앉혀 놓고 보여주지 않는 이상 설명하기가 힘들다.


일지를 어떻게 더 잘 쓸 수 있는가?
리서치 한 줄을 하더라고 그것을 왜 하는지 알수 있게 명시한다. 알고자 하는 정보의 방향이나 얻을 것이라고 기대하는 효과를 미리 정한다.
나는 리서치를 할 때 알고자 하는 방향이 뚜렷한 편이다. 선택할 수 있는 옵션을 알아내고 그 중에 가장 효과가 크면서 현재 내 수준에서 실천이 가능한 방법을 찾는 것이다.


일이 막혀서 잘 진행이 안되는 경우

일지를 보다보면 사람들이 어떤 문제에 막혀 풀지 못하고 시간을 보내는 경우가 있는데 꼭 그렇게 할 필요없다.
일이 잘 풀리지 않을 때 붙잡지 말고 빠르게 현재 상황에서 선택할 수 있는 옵션을 만들어 내는 것이 좋다.


내가 실제로 겪었던 일을 예로 들어 본다.
내가 코딩을 하다가 갑자기 특정 부분이 작동하지 않는 일이 생겼다.
나는 실제로 작동하는 코드를 수집해서 만들었고 코드 구조에 문제가 없었기 때문에 오류의 이유를 알아낼 수 없었다.
이 때 내면에서 으스스한 기분이 들면서 혼란속에 빠지고 어디를 고칠지 감도 안오는 상황에서 코드를 노려보고 있으면 시간이 순식간에 지나가 버린다.


나는 일단 내가 수집한 코드가 실제로 작동을 하는지 파트별로 떼어서 테스트 해보았다. 다 잘 작동했다.
그 다음 내가 만든 구조가 잘못되었는지 확인하려고 함수 내용을 주석처리하고 구조만 실행해 보고 결과를 로그로 알 수 있는 뼈대 상태를 만들어서 테스트했다. 잘 작동했다.


그 다음 주석처리한 함수를 순차적으로 주석 해제 하면서 테스트 해보았다. 문제되는 부분을 발견했다.
알고보니 내가 작업 중 소스 코드를 워드 프로세서에 붙여넣었다가 다시 복사해서 사용한 적이 있는데 이 과정에서 아스키 따옴표가 유니코드 따옴표로 자동 변형되면서 그것을 코드에디터에 붙여넣으니 오류가 발생한 것이다.
어이가 없지만 사실 업계에서 일어나는 대부분의 실수는 이렇게 별거 아닌데서 일어나는 경우가 많다.


위의 예에서 다른 상황을 만들어 보자. 수집한 코드를 파트별로 때서 테스트 해보았는데 잘 안되는 경우도 있다. 이 때 나라면 내 개발 환경 설정이 해당 샘플과 다른 부분이 있는지 알아본다. 만약 개발 환경 설정에서 고칠 점이 없거나 현재 내 상황에서 고칠 수 없는 옵션이라면 해당 코드를 사용하는 것을 중단하고 대체할 수 있는 것을 찾는다. 옵션을 고치는데 너무 많은 시간과 노력이 든다거나, 해당 옵션을 고치면 더 중요한 다른 파트의 코드가 작동하지 않게 되는 경우에도 해당 코드 사용을 중단한다.


결론은 어떤 문제가 잘 안 풀려서 일이 진행이 안되는 것이 아니라 내가 옵션을 만들고 선택하는 행위를 하지 않아서 일이 진행이 안되는 것이다. 어떤 사람은 위와 같은 오류 추적 과정을 겪고나면 "진이 빠진다. 짜증난다. 다시는 이런 일 하고 싶지 않다."같은 생각을 하는 경우가 있는데, 사실 프로그래밍을 지속하려면 위의 추적과정이 익숙하고 즐거워서 잘 할 수 있다. 그래야 빠르게 현재 상황에 맞는 옵션을 만들어 낼수가 있고 문제를 해결할 수 있다.


비유하자면 불교 철학에서 "불립문자(不立文字)"라는 말처럼 언어는 한계가 있다. 이 관점에서 보면 프로그래밍이란 코딩 언어를 사용해서 정보처리 하면서 언어의 한계가 생기는 부분을 계속해서 땜질하는(예외처리하는) 행위라고 볼 수 있다. 덧붙이자면 불립문자를 깨닫는 것이 돈오돈수(頓悟頓修)이고 현실에서 끊임없이 개선해나가는 과정이 돈오점수(頓悟漸修)이다.


이원재님 인터뷰

Q. 테트리스를 해보고, 비주얼드를 해보고, 블랙잭을 하고, 이제 더 많은 다양한 프로젝트를 해보고 있는데 행복하고 즐거우세요?
네 행복하죠. ㅎㅎ 일단 같이 재미있어 하는 일을 진행해서 행복하죠. 그리고 얘기해 보면 되게 배려를 많이 해주시면서 말씀하셔서 좋아요. ㅎㅎ 상대방에 대한 존중과 배려가 있어서 뭔가 안정감 있고 내가 좀 더 잘해야겠다 라는 마음이 생기는 것 같아요. 앞으로 더 같이 만나고 얘기하고 일을 진행해보면 행복한 점이 더 많이 생길 것 같아요. 그리고 앞으로 이렇게 실천하고 따라오는 사람이 많아지면 더 재미있어질 것 같아요.


참고로 이원재님은 서울 모 대학 컴공과 3학년이다




Q. 제가 가르치는 것이 이원재님이 지금까지 겪었던 다른 교육과 무엇이 어떻게 달랐어요?
이기준님이 가르쳐 주신 방식들은 스스로를 생각해 보고 스스로 어떤 문제를 해결해 나갈 수 있게 해주시는 것 같아요 질문을 통해서 자신이 했던 것을 생각해 보고 되짚어 보고 방향을 잃지 않도록 잡아 주시는 느낌을 받았어요. 그리고 지금까지 했던 프로그래밍 교육 방식들은 항상 처음부터 설계를 해 나가고 중간에 망하면 망한대로 덕지덕지 붙여서 고쳐서 만들어 내고, 만들면서 이게 맞나? 이거 이렇게 하는건가? 하는 의문이 들어도 피드백을 받지도 못하고 다 만들고 나서도 내가 어떤 생각의 과정을 통해서 만들었다 라는 것 보다 그냥 이것저것 붙여가며 만들었다 라는 느낌만 받고 끝났거든요. 근데 이기준님 이기환님과 같이 개발하고 다른 소스를 분석 해보고 피드백 받고 완성 해보고 그 과정들을 되짚어보는 과정을 통해서 작은 프로젝트 하나하나가 제 실력으로 쌓이는 느낌을 받아서 너무 좋아요.


Q. 저와 이기환님이 가르친 것들이 이원재님에게 실질적으로 도움이 되었어요? 만약 되었다면 어떻게 도움이 되었어요?
저 혼자 했다면 아마 테트리스 오픈소스를 따라만 해보고 어떤 다른 라이브러리를 사용해서 응용을 해본다던가 하는 생각은 못했을 것 같아요. p5.js를 붙여보면서 앞에 시각적인 부분을 바꿔보니까 소스도 더 이해가 가고 재미가 붙었거든요. 그리고 서버 부분도 혼자 어떤 코드를 찾아서 보려고 했어도 뭐가 괜찮은 코드인지, 내 현재 수준에 해석 할만한 코드인지 찾느라 시간을 쏟다가 또 흐지부지 시간이 흘러 갔을 것 같아요. 그런데 이렇게 피드백 해주시고 질문 드리면 답변주시고 하는 부분에서 재미를 느끼고 또 봐주시고 있다고 생각하니까 더 하게되는 것도 있었어요. 그리고 혼자 했다면 내가 테트리스를 개발하고 서버를 개발하는 과정에서 어떤걸 느꼈고 어떤점이 발전하고 있는지에 대한 생각을 되짚어 보는 시간이 없었을 꺼에요. 근데 이기준님과 얘기를 나누면서, 느낀점을 얘기하면서 머릿속으로 아 맞아 내가 이 부분에서 재미를 느꼈고 이런 생각을 하면서 만들었었고 하는 생각들이 정리가 되었어요 그리고 그렇게 되짚어간 부분이 다음 프로젝트에도 또 적용이 되고 제 것으로 소화해 가고 있는 것 같아요. 그리고 이 과정이 재미있구요 ㅎㅎ


Q. 릴랏 멘토링 하기 전과 후에 이원재님의 인생에 달라진 것이 있나요? 만약 달라졌다면 어떻게 달라졌어요?
괜히 쓸데없이 하는 걱정이 없어졌어요. 항상 진로에 대한 고민이나 뭘해야 하지? 뭐가 좋지? -> 저걸 해봐야 하나? -> 아 뭔가 잘모르겠는데? -> 흠...
이런 쓸데없는 생각들로 가득차서 괜히 아무것도 안하고 시간을 보내고 걱정은 커지고 그랬었는데 릴랏 멘토링을 하고 나서는 그냥 지금 해야 할 것에 충실하고 내가 해야할 일에 대한 생각에 집중하니까 쓸데없는 생각이 안 들고 마음이 편해졌어요. 지난 학기때는 부정적인 생각들로 에너지를 소비하고 스트레스 받고 그랬었거든요 학교를 다닐꺼면 그냥 학교에서 하는 것에 충실 하고, 남는 시간에 복습을 하던지 다른 공부를 하던지 하면 되는데 복습을 하면서도 "아, 다른 애들은 뭔가 하고 있는데 나도 뭘 해야 하나 그럼 뭘하지?" 같은 쓸데없는 걱정, 그런게 1도 없어졌어요. 그냥 지금은 다른 사람 신경 쓰지 않고 내가 하고 싶고 재미있는걸 하면 된다는 생각으로 바뀐것 같아요


예전에는 이랬는데


지금은 이런 느낌?


오 맞아요 ㅋㅋㅋㅋ 그림이 적절해요ㅋㅋㅋ


Q. 앞으로 더 많이 배우고 개발한 프로그램들을 사업화해서 제가 이원재님을 고용해서 같이 일하기로 했는데요. 여기에 대해서 이용을 당한다거나 착취(?)를 당할지도 모른다는 걱정되는 느낌은 들지 않으세요?
처음에 부모님에게 앞으로 계획을 말씀 드렸을때 가장 처음 하시는 말씀이 그 말이었어요. 근데 제가 멘토링을 시작하고 알려주신 방법대로 개발해 나가고 피드백을 주시고 제가 긍정적인 생각의 순환을 하게되고 하는 일련의 과정들을 잘 도와주시고 여러가지 글도 보면서 저는 그럴 꺼란 생각은 안 들었거든요 그리고 제가 사회생활을 안 해봐서 모르는 것일 수도 있지만 사회생활을 하면서 제일 힘든점이 사람 문제라고 하는데 두 분과 같이 개발을 하면 되게 배울게 많고 많이 성장할 수 있고 또 빨리 커서 제 역할을 하고 싶다는 생각이 들었거든요. 걱정보다는 이런 생각들이 더 커요ㅎㅎ 그리고 그런 걱정들 때문에 지금 배울 수 있고 도전 할 수 있는 것들을 못 해보면 손해 잖아요.


긍정적인 사고방식의 순환


Q. 이번에 학교를 휴학하고 우리 하는 일에 집중해 보기로 했는데요. 한국 사람들은 27살 정도까지 졸업을 하고 30전까지 취직하고 35전까지 결혼을 하고 40까지 집을 사고 뭐 이런식으로 생각을 하거든요. 이원재님은 이제 이런 생각이나 걱정을 하나도 안 하는 건가요? 왜냐하면 자기가 하고 싶은 일을 찾았고 점점 능력을 개발하고 있으니까?
네, 이제 그런 데드라인을 두는 생각은 안하고 있어요. 제가 하고 싶은 일을 찾았고 좋은 분들과 같이 할 수 있으니까요!ㅎㅎ


Q. 앞으로 이원재님은 어떻게 살고 싶으세요?
프로그래밍 고수가 되고 싶어요. 제가 살면서 평소에 이렇게 계속 붙잡고 재미있게 할 수 있는 것을 찾은게 처음이라서 그냥 잘하고 싶다 고수가 되고싶다 라는 마음이 생긴거 같아요 좋아하는걸 잘하면 더 좋잖아요. ㅎㅎ
고수가 된 다음은 일단 고수가 되는 방법을 알고 싶어 하는 다른 사람에게 알려줄 것 같아요. 음 그때가서 또 다른 뜻깊은 일이 있다면 그것도 하게 될 것 같아요.


저도 약간 거꾸로 여쭤봐도 될까요? 저하고 같이 일하기로 했는데 제가 생각보다 못 쫓아오거나 기준님이 생각했던 사람과 다른 사람이거나 막 꾀부리는? 사람이면 어떻게 하지 라는 걱정은 안 하셨나요?


A. 저하고 이기환님은 사람의 실천을 중요하게 생각해요. 지금 우리가 대화를 하고 있는데 이 대화에서 나온 말은 전부가 아니고 일부일 뿐이구요. 이 대화에서 나온 사고방식을 실제 현실에서 하나씩 실천하느냐 마느냐로 사람을 평가하거든요.


쉬운 개념이에요. 사람도 수준, 퀄리티가 다 다르거든요. 그런데 그 사람이 똑똑하던지 아니던지 그 사람이 생각하고 말하고 하는 것을 얼마나 최선을 다해서 실천하느냐로 기준을 삼아서 평가를 할 수 있어요.


님이 친구를 평가할 때도 이렇게 할 수 있어요. 말만 앞세우거나, 허세가 심하거나, 거짓말을 하거나(특히 돈 문제) 그러면 친구로 사귀기 싫잖아요.


네, 맞아요 말만 앞세우면 친구로 사귀기 싫어요


이렇게 우리에게는 평가 기준이 있는데 이원재님은 현재 합격선을 넘었고 계속 수준을 높여가고 있는 중이에요. 잘하고 있다는 말이죠. 제가 가르친 부분을 왜곡하지 않고 거의 다 실천하더라구요. 물론 앞으로 더 잘할 수 있죠. 그러나 대부분은 사람들은 더 잘하냐 못하냐 문제가 아니라 왜곡을 하거나 필터링을 하거나 해서 실천을 안 하거든요.


1) 배운 것을 있는 그대로 실천한다 / 왜곡하고 필터링하고 안 한다
이 선을 기점으로 합격이냐 불합격이냐가 갈림


2) 1번을 준수하는 선에서 더 잘한다 / 덜 잘한다
이건 그냥 상대적인 차이일 뿐이다.


저는 7월 2째주에 이원재님이 처음 테트리스 코드 분석한 내용 적었을 때 합격이라고 생각했구요. 이기환님은 우연히 들어맞았을 수도 있으니 좀 더 지켜보면서 다른 작업 하는 것도 보자고 했었어요. 그런데 지금은 이기환님도 합격이라고 생각해요.


어제 이원재님이 자기 여자 친구와 대화한 것을 예로 들어서 모방과 창조에 대해서 적어 보았잖아요. 제가 가르친 것을 그렇게 받아들이면서 제가 가르치려고 한 사고방식을 이해하는 거죠. 그래서 이원재님은 합격선을 넘었고, 앞으로 그 수준을 높여나가기만 하면 되구요.


이제 다른 각도에서 질문을 해볼게요. 만약 이원재님이 제가 가르친 것을 다 실천하고 열심히 했는데 예를 들어서 사업이 크게 성공하지 못했어요. 결과적으로요. 이원재님이 개발한 것이 크게 성공하지 못했어요. 작게 성공하거나 아니면 돈을 못 벌었어요. 그러면 어떻게 될까요?


우리는 그런 결과로는 사람을 평가 안 해요. 시장에서 성공하느냐 마느냐 하는 부분은 시장의 고객들이 판단하는 거지 우리가 고객에게 강요할 수 없는 부분이잖아요.


그러나 우리는 우리가 하는 게임에 최선을 다할 수 있죠. 그런데 우리가 최선을 다 했는데 결과적으로 성공하지 못했다? 그러면 또 바로 다음 기회에 도전하면 되요.


이원재님은 제가 비지니스 계획 설명하는거 들으면서 "와, 대단하다. 이거면 사업적으로도 성공할 가능성이 있겠다."하는 생각 들었죠? 가능성 있거든요. 걱정할 필요 없어요. 시장 반응이 안 좋으면 또 추적해서 고치고 개선해서 내놓으면 되요. 제가 "자라"라는 옷 브랜드가 트렌드를 예측하지 않고 추적해서 대응한다고 얘기한거 기억나죠?


그래서 이원재님이 한 질문, "제가 잘못해서 실망을 안겨 드리면 어떡하나요?"에 대한 대답은


1) 이미 이원재님은 합격선을 넘어갔기 때문에 실망을 줄 일이 없다.


2) 사업을 할 때 결과적으로 잘 안되어도 이원재님이 잘못한 것이 아니다. 트렌드를 추적하고 피드백해서 성공하게 만들면 된다.


이렇게 대답할 수 있는 거죠.


마치며

제가 처음에 시작하면서 쓴 것처럼 이번 글은 이원재님을 막 대단한 사람인 것처럼 포장해서 띄우려고 쓴 것이 아니에요. 이원재님는 천재나 수재가 아니었어요. 다른 사람들과 똑같은 평범한 25살 대학교 3학년 학생이었어요. 깨달음을 얻기 전에 이원재님은 그다지 똑똑하지 않았어요. 다른 사람들처럼 쓸데없는 걱정하고 시간을 허비했어요. 이런 이원재님이 크게 달라진 것은 자신의 과거 사고방식의 문제점을 깨닫고 그것을 버리고 새로운 사고방식을 받아들이고 실천했기 때문이에요. 이원재님의 글을 읽어 보면 그 과정이 적혀 있어요.




누구나 다 이원재님처럼 할 수 있어요. 알면서 못 본 척하고, 자기도 모르게 필터링하고 왜곡하고, 결국 최종적으로는 실천 안 하기 때문에 못하는 거에요. 이것은 종이 한 장 차이에요. 저는 다른 사람들도 이걸 깨달았으면 좋겠어요.


릴랏 멘토링 시리즈


후원 안내

글이 마음에 들고 저희를 후원하고 싶으시다면 아래 모네로 마이닝을 해주세요. 밑에 링크한 주소로 들어가서 START MINING 버튼을 누르면 님들의 컴퓨터가 일을 해서 저희에게 가상화폐 후원을 해줍니다. 하루종일 하면 백원 정도로요. 참고로 SPEED를 100%로 하지 말고 한 80%로 내리면 컴퓨터가 버벅거리지 않아서 좋습니다.

저는 후원을 받아서 제 개인 용도로 사용하지 않습니다. 저는 개인적으로는 이미 부족함 없이 잘살고 있습니다. 저는 앞으로 부모 없는 아동과 청소년을 돌보는 그룹홈(보육원)을 만들어서 후원할 생각입니다. 그리고 저는 컴퓨터 프로그래머인데 릴랏이라는 무료 코딩 교육 활동을 2016년부터 하고 있습니다. 후원해주신 것은 여기에 전부 사용할 것입니다.


이미 가상화폐를 갖고 계신 분은 저희에게 송금을 해서 후원을 해주실 수 있습니다.

Bitcoin: 1Jocrm8iKUtw4h19JttGLjj9ouQnDHrmpB
Monero: 45sQXZzqtFAKgJJgtQh3MuGYwUHHTb5bEZzvfdw3QhvSKpb1KMJmgnSQCVkWGcmL1PVzqVfV4bZH5D2C5uRfeWHLUf5pMkw

그외 기타 다른 방식으로 후원을 해주실 분은 저에게 메세지를 주십시오. 감사합니다.

Facebook Comments

Disqus Comments

글쓴이 소개

안녕하세요. 제 이름은 이기준이에요. 저는 Deduction Theory, LLC라는 소프트웨어 회사에서 CEO로 일하고 있어요.
저는 최근 오픈소스 공개 스터디 릴랏 프로젝트의 내용을 번역해 주실 자원봉사자를 모집하고 있어요. 제 생각에는 이 프로젝트가 전세계에 사는 어린이, 학생, 어른에게 도움이 될 거에요. 특히 저소득층에게요. 이 프로젝트는 무료에요. 사람들에게 도움을 주려고 기획했어요. 저는 나중에 저소득 국가에 학교와 고아원을 짓고 사람들에게 이 프로젝트 방식으로 컴퓨터 프로그래밍을 가르쳐 주고 싶어요. 그렇게 해서 나중에 그 사람들이 더 나은 직업을 가질 수 있게 돕고 싶어요.
아래에 링크한 릴랏 소개 페이지를 읽어 본 다음 이것이 도울 만한 가치가 있다고 생각되시면 저에게 말해주세요.
오픈소스 공개 스터디 프로젝트 Rellat을 소개합니다
원문 컨텐츠는 한글로 전부 제가 쓴 것이에요. 우리는 세계 모든 언어로 번역할 계획을 가지고 있어요. 감사합니다.
안녕하세요. 이기준님과 함께 Rellat 프로젝트를 진행하고 있는 이기환입니다.
제가 프로그래밍을 처음 시작한 것은 어린 시절 어도비 플래시 프로그램에서 애니메이션을 만들다가 게임을 만들고 싶어서 액션스크립트를 사용한 것입니다.
연역론의 방법론은 제가 평소에 일을 하는 방법과 같습니다.
저는 사실 500줄 이상 넘어가는 코드를 보면 정신이 없고 잘 기억도 안됩니다. 지금도 간단한 코드 문법이 기억이 안나서 구글을 뒤지는 경우가 허다합니다.
대신 저는 이 코드가 어떤 사고방식을 사용해서 만들어졌는지, 어떤 관계정보를 사용했는지를 추적합니다. 이것이 연역론의 코딩 방법론, 코딩 스타일, 컴퓨팅 세계관입니다.
이 사고방식을 갖추면 더 나은 정보처리 방식이 무엇인지 비교할 수가 있습니다. 이것이 프로그래밍의 본질이고, 가장 중요한 것입니다.
나머지 프로그램의 빈공간은 구글과 스택오버플로우의 힘을 빌려서 채워넣습니다.
저는 여러분도 그렇게 하면 끊임없이 만들어지는 새로운 기술, 수만 줄의 코드 속에서 허우적거리지 않으면서 대규모의 질 높은 정보처리를 더 효과적으로 할 수 있다고 생각합니다.

Popular Posts

Visitor Map

Flag Counter