월간 지앤선

인터뷰 및 편집 : 아델라 월간지앤선 편집장

 

2020년 월간지앤선 1월호 인터뷰이로 이종립님을 선정했습니다. 이종립님은 현재 마켓컬리에서 근무하고 있는 백엔드 자바 개발자입니다. 종립님이라면 새해에 새로운 다짐을 하는데 많은 영감을 줄 것 같아 첫 번째 릴레이 인터뷰 주자로 선정했습니다. 그럼, 매일 읽고 쓰고 생각하는 이종립님을 한 번 만나볼까요?

 

 

인터뷰를 계속 방해하던 귀여운 강아지를 쓰다듬으시던 종립님

 


 

Q. 안녕하세요, ‘이종립’ 라고 하면 ‘꾸준함’이 가장 먼저 떠오릅니다.  

안녕하세요. 해야 하는 일을 하지 않는 게 오히려 이상하게 느껴지긴 합니다. 할 일을 하지 않으면 마음이 불편하고 초조하더라고요. 예를 들어 밥을 안 먹으면 배가 아프다거나, 힘들다거나, 다른 때보다 화를 잘 내게 되듯이요. 그래선지 놀 때도 잠깐 놀아요.

 

트렐로로 매일 하는 일을 관리합니다. 제일 먼저 일을 쪼갭니다. 기본적으로 등록하는 건 3시간 만에 끝낼 수 있는 걸 쌓아놓고 퀘스트를 깨듯 합니다. 특별한 점이 있다면, 해야 할 일과 하고 싶은 일이 생각날 때마다 트렐로에 써놓는 점입니다. 예를 들어서 ‘방 청소를 한다’와 같이요. 흡사 함수 콜 스택을 응용하는 것 같더라고요. (웃음) 함수 호출하면 pop 하기, 해야 하는 일이 생각나면 다시 스택에 쌓는 식으로요. 이렇게 하면 잡다한 일을 하다가 삼천포로 빠지는 일을 줄여줍니다. 하려던 일은 A인데 B를 하고 C를 하다가 A를 잊는 일이 사라진달까요.

 

원래는 떡메모지 5개를 준비해서, 해야 할 일을 한 켜씩 적어두었습니다. 이를테면,  ‘방 청소를 한다.’ 위에 ‘친구에게 전화한다’를 올려뒀죠. 그 위에 또 다른 할 일을 적고 일을 합니다. 혹여나 다른 길로 새더라도 원래 하던 일로 돌아가기 쉽습니다.

 

이걸 트렐로로 응용했습니다. 하루에도 수십 번씩 보곤 합니다. 등록한 지 오래된 일은 트렐로 보드에서 어두워지는데요, 그 설정으로 미루고 있는 것과 하기 싫은 것을 기준으로 티켓을 쪼갤 수 있습니다. 아니면 반복해서 하는 일을 따로 정리해둘 수도 있고요.

 

티켓 이름은 명령형이에요. “빨래해라.” “화장실 타일을 닦아라” “점심을 먹어라” 같이요. 게임 퀘스트를 깨는 느낌이에요.

 

그런데도 깜박하는 일이 있긴 합니다. 어쩔 수 없죠.

 


 

Q. 사람들이 종립님은 진짜 '기계인간' 같다고 한 이유를 알 것 같습니다.

기계인간은 운동할 때 얻은 별명입니다. 딱히 운동을 잘해서 얻은 건 아니었고, (웃음) 항상 아침에 잘 일어나기 때문이었습니다. 크리스마스, 신년, 구정에도 똑같이 같은 시간에 잘 일어났습니다.

 

우선 아침에 일어나면 장점이 있습니다. 아침에 일어나면 회사 가기 전 2시간 정도 일을 할 수 있거나, 2시간 더 잘 수 있습니다. 조삼모사가 아니냐고 할 수 있지만, 선택이 가능한 건 무언가 임박했을 때 빛을 발한다고 생각합니다. 그 2시간 동안 운동을 한다거나, 책을 읽을 수 읽을 수 있거든요.

 

Q. 운동선수를 하셨다고요. 엔지니어의 길로 들어서기 전에는 어떤 삶을 사셨나요?

운동선수만 한 것은 아니었습니다. 제16회 서울특별시 협회장배 우슈대회의 팔괘장 노필장 종목에서 금메달도 땄지만, 우슈 선수를 했었습니다. 짧게 보험 영업을 했었고, 수학 학원강사로 일하기도 했어요. 처음에는 대학 등록금을 받기 위해서 알바를 찾다가 원장선생님 권유로 가르치는 일을 시작했습니다. 학생들과 관계가 좋았다고 기억합니다.

 

보험이라고 하면 생소해 보일 수도 있지만, 개발자라면 보험에 대해서 잘 알 수 있다고 생각합니다. 저도 길게 하지 않았어요. 3개월 만에 그만두었거든요.

 

이전에는 오랫동안 한 가지 일을 해본 적이 없었습니다. negative형 인간으로 오래 살아왔기 때문입니다. positive 형 인간은 “앞으로 나는 뭘 하겠어!”라는 모토로 움직인다면, negative 형 인간은 “나는 이런 걸 하기 싫어!” 하고 그만둔 뒤 다른 걸 찾는 사람이라고 생각해요. 저는 집에 먼지가 있는 걸 보기 싫기 때문에 청소하는데, 어떤 새로운 자극을 주는 컨텐츠를 즐기기보다는 집에서 생활하는 동안 마주쳤던 불편함을 고치거나 버리는 걸 좋아합니다. 인생에도 적용되는 것 같아요. 계속 일을 그만두고 직업을 바꾸다 보니 개발자가 되어 2012년부터 만족스럽게 일하고 있습니다. 비록 다른 사람보다는 늦게 시작했지만요.

 

Q. 그럼 많고 많은 직업 중에 프로그래머가 된 계기는 무엇인가요?

개발자는 확실히 다른 직업이긴 합니다. 1980년대의 애플 캐치프레이즈 중 하나가 “컴퓨터는 지성의 자전거다.”입니다. 걷거나 뛰는 것으로 얻을 수 없던 재미나 속도를 자전거로 얻는 것 같달까요. 혼자 열심히 생각하는 것만으로는 느낄 수 없는 것을 컴퓨터의 도움으로 얻을 수 있게 되는 것 같습니다.

 

그래서 컴퓨터가 특별하게 느껴집니다. 처음 보는 어떤 걸 하다가도 '컴퓨터로 뭔가를 할 수 있지 않을까?'라는 생각을 하게 되어요. 더 나아가 문제를 하나 푸는 것에서 끝내지 않고, N개의 문제를 푸는 방법을 생각하게 됩니다. 문제 하나 해결했으면 됐지 왜 더 고민하냐? 고 할 수 있겠지만, 이건 컴퓨터를 잘 다루기 위해 고민하는 사람의 특징인 것 같습니다.

 

예를 들어, 이메일이 10개였다면 하나하나 처리했을 수도 있겠지만, 10만 개나 100만 개가 된다면 어떻게 해야 할까 상상해보는 거죠. 보통은 3번째부터 추상화합니다. 두 번까지는 그대로 하는데 세 번이 넘어가면? 그때부터 N 번이 될 수 있다고 믿기 시작하는 거죠.

 


 

Q. 종립님께 좋은 영향을 준 엔지니어가 계셨나요?

저는 절박하게 공부한 편이라, 특별히 참고할만한 인물은 없었습니다. 굳이 롤모델을 찾자면 베어 그리스에요. (웃음) 진짜입니다. 취직할 때 영향을 많이 받았어요. 티비에 보던 베어 그리스가 사람이 살아남기 힘든 곳에서 자신을 믿고 한 걸음 한 걸음 나아가는 모습이 인상 깊더라고요. 개발을 처음 시작했을 때는 아는 사람이 별로 없었고, 물어볼 만한 사람이 없었습니다. 미안했거든요. 한편으로는 제가 무시당할까 걱정해서, 남들은 알 것 같은데 나는 모르는 것을 찾아 공부했습니다.

대신 영향을 많이 준 사람이 있습니다. 바로 제 아내입니다. 그는 저와 성향이 반대입니다. 저는 모든 걸 계획하려고 하고 집 안에 있는 것을 좋아하지만, 아내는 저보다는 여행을 좋아하고 계획 없이 무언가 즐겁게 하는 걸 좋아합니다. 만일 제가 아내를 만나지 못했더라면 지난날의 저와 변함없이 살았을지도 모르겠지만, 다행히 적절히 새로운 모습을 보며 조화롭게 섞어서 살아가게 되었어요. 그러다 보니 세상을 다른 관점으로 바라보게 되더군요. 그전에는 달리기만 하고 옆은 보지 못한 느낌이었습니다. 

 

Q. 같이 일하고 싶은 프로그래머는 누군가요?

신뢰하면서 잘 지낼 수 있는 사람이었으면 좋겠습니다. 조금 더 구체적으로는 코드리뷰를 잘하는 분이면 좋겠네요. 코드리뷰 잘하는 사람이라고 하면, 리뷰 코멘트가 달렸을 때 마음이 편해지는 사람 같습니다. 안타깝게도 부족하나마 제가 자청해서 코드리뷰를 해 드리는 경우가 더 많았던 것 같아요. (웃음) 제가 가장 신경 썼던 건 코드리뷰 받는 사람의 마음이 다치지 않게 하는 일이었습니다.

 

한편 코드리뷰를 잘 받으려면 커밋을 원자적으로 해야 하고 커밋 메세지를 잘 써야 합니다. 커밋 메세지는 다른 사람에게 설명하기 위한 것이기 때문입니다. 커밋을 합치는 등 커밋을 재료로 여러가지 작업을 한다고 하더라도, 커밋 자체가 사라지는 건 아니기 때문에 충분히 의미가 있다고 생각합니다.

 

‘commit -m’으로 메세지를 작성하는 것보다 에디터에서 조금 더 상세하게 작성하는 것을 추천합니다. git에 대한 애착의 정도에 따라 commit 단위나 메시지가 깔끔한 정도가 다른 것 같습니다. 머지 전에 커밋을 잘 쌓더라도 적당한 커밋수로 합쳐놓는다는 등의 예시가 있겠네요. rebase도 터미널에서 interaction 모드로 하길 추천합니다.

 


 

Q. 종립님만의 ‘Git 레시피’가 있나요?

‘. git’을 쓰는 건 역사를 기록하는 것이라고 여깁니다. 프로젝트의 사관 같달까요. git 사용 방법도 참 다양해요. 회사에서 project repository 용으로 사용하는 것 외에도 히스토리를 관리해야 할 때는 .git을 활용합니다. 제 로컬 컴퓨터의 모든 주요 디렉토리에는 .git 디렉토리가 있습니다. 예를 들어 사진 디렉토리라면 히스토리별로 어느 사진이 언제 어떻게 저장되는지 확인할 수 있기 때문입니다. 예를 들면 친구 자녀의 돌잔치나, 생일, 기념일, 회사에 입사한 지 얼마나 됐는지 등을 기록하고 확인할 수 있습니다.

 

디렉토리 하나를 여러 용도로 사용할 수 있습니다. 디렉토리를 하나 만들고 photo 브랜치로 체크아웃하고 사진을 넣고 커밋하는 방식이 그 예겠네요. 용도별로 다양한 브랜치를 만들어 관리하면, 하나의 디렉토리를 여러 개의 서랍이 있는 것처럼 여러 용도로 사용할 수 있습니다.

 

최근에는 /downloads 디렉토리를 .git으로 관리해볼까 했으나 하진 않았습니다. 몇백 메가나 기가가 될 테고, 다운로드 디렉토리는 일종의 큐이기 때문에 어차피 비워야 해서 적합하지 않은 것 같아서요. 그래도 /document 디렉토리 같은 건 'git'으로 관리하는 편이 좋다고 여깁니다. 터미널에서 브랜치를 바꿔 특정 주제의 파일을 열어볼 수 있도록 하는 게 좋았습니다. 

 

작업 특성상 없어지면 안 되는 디렉토리에서는 git init을 꼭 합니다. 파일에 대한 설명을 달기가 쉽지 않기 때문에 태그나 설명을 git history로 관리합니다. 때에 따라 README 파일을 만들기도 합니다.

 

보통은 회사 일을 하다 작성하게 되는 이런저런 양식 문서를 /downloads 디렉토리에 옮겨놓지만, 저는 다른 데로 옮겨놔서 git으로 관리합니다. 로컬에서만 사용하는 게 목적이라 별도의 remote repository를 만들거나 push는 하지 않고요. 

 

깃을 사용해 간단한 게임 규칙도 만든 적이 있습니다. 전 회사에서 1년 차 동료들에게 git을 알려주며 플레이했던 게임이었는데요.  아스키 아트로 도시를 꾸미는 일종의 심시티였습니다. 커밋 메세지를 제대로 적지 않으면 머지를 안 해주는 등으로 재미있게 놀기도 했었어요.

 

이런 식으로 git의 용도와 사용 방법은 참 생각하기 나름 같네요.

 

Q. 올해로 7년 차 개발자라고요. 감회가 어떠신가요?

아직도 어떤 날은 자신감이 바닥까지 떨어져서 모르는 걸 아는 거로 만들기 위해서 노력합니다. 신입 때와 비교해 차이점이 있다면 방심하지 않는다는 것 정도가 있겠네요. 잘난 척 하다가 당한 적이 있어서요. (웃음) 전문가로서의 소프트웨어 개발자를 지향하기 때문에 정확하게 아는 게 중요하다고 생각합니다. 어떤 문제를 너무 쉽게 생각하지 않는 것도 중요하다고 생각합니다. 성의 있게 듣고, 진지하게 듣는 것을 포함해서요. 최대한 열심히 그 문제를 해결하고 싶더라고요.

 

그래도 결혼을 하고 나서 예전에 막연하게 초조했던 감정은 많이 사라졌습니다. 마음을 잘 이해하는 사람과 같이 있어서인 것 같아요. 

 

Q. 저도 부족함을 깨닫고 열심히 공부하다 보면 DFS(너비 우선 탐색)로 공부할 때가 있어 학습 속도가 더뎠던 경험이 있습니다.

컴퓨터로부터 공부법에 대한 힌트를 얻으셨으면 좋겠습니다.

 

우리가 랜덤으로 1~25까지 이뤄진 숫자 퍼즐을 정렬하는 방법은 많아 봐야 손가락 안에 들어갈 것입니다. 풀려고 하는 문제가 정해졌기 때문이죠. 대신 컴퓨터는 풀려고 하는 문제를 접목할 수 있는 장점이 있습니다. 컴퓨터는 general machine이기 때문입니다. 손톱만 자를 수 있는 손톱깎이와 달리 칼은 두부도 자를 수 있고 끈도 풀 수 있고 구멍을 낼 수도 있다는 점에서 칼은 컴퓨터와 닮았다고 볼 수 있겠네요. 칼의 모양을 이해하고 다양하게 응용해보면 목표를 놓치지 않을 수 있지 않을까요. 오늘은 칼로 셔츠에 구멍을 내고 내일은 양말에 구멍을 내는 식으로요.

 

그리고 가장 중요한 건, 시간의 한정을 깨달아야 합니다. 일단 저는 블로그에 읽었던 책을 추려서 이를 기록해놓습니다. 작년 초에 ‘평생 읽을 수 있는 책의 수는 어차피 N 권으로 고정될 것이다. 10년간 300권밖에 읽을 수 없다면, 어떤 책을 고르느냐가 중요하다. 그러므로 중요한 책을 골라야 한다.’고 판단했기 때문입니다. 

 

공부도 마찬가지입니다. 중요한 공부를 해야 하는데, 덜 중요한 공부를 하느라 시간을 고갈시키면 안 됩니다. 처음부터 중요한 공부를 채워가는 것이 중요하겠네요. 그러나 처음부터 다 파악하고 계획하는 건 어렵기 때문에 잘게 잘라서 하는 방법을 추천합니다. 그리고 공부한 건 반드시 기록하고요. 블로그를 보면서 잊어버린 것도 다시 떠올릴 수 있도록 기록해 두면 좋습니다.

 


 

Q. 스스로 자신을 어떤 프로그래머라고 정의할 수 있을까요?

글쎄요. 어떤 프로그래머라는 생각보다는 어떤 사람인지가 더 중요한 것 같지만, 그 질문에 직접적으로 답하기는 어렵네요. 저는 부끄러운 면이 있고, 불안하기도 하고, 초조한 면도 있는 그저 평범한 사람이라고 여깁니다. 프로그래밍을 잘하려고 하지만, 이미 엄청나게 잘하는 사람이 워낙 많아서 그런 생각이 드는 것일 수도 있어요. 이 와중에 나의 장점이 뭘까 고민을 많이 합니다.

 

사람들처럼 똑같이 결승 골을 향해 가다가, 문득 제가 그동안 준비한 건 달리기를 위한 것이 아니었다는 걸 느꼈습니다. 전공이 다르고, 늦게 시작했고... 목적이 있는 것 자체가 일종의 성공이라 생각합니다. 앞서 말했듯, 저는 네거티브 인간이라 싫은 걸 없애다 보면 더 좋은 게 뭔지 희미하게 보이는 것 같습니다. 어렸을 때부터 학자나 작가가 되고 싶다고 생각했는데, 코딩하다 보면 이것도 작가의 일이라고 생각하게 되었어요. 프로그래머의 일은 결국 글을 쓰는 일이고, 그 글로 누군가를 더 나은 방향으로 설득하거나, 좋은 가치를 전달해줄 수 있다는 것을 깨닫고 나서 보람과 행복을 느끼게 되었습니다.

 

 

🏃🏻 이종립님의 이력사항

 

🔗 (주)마켓컬리 | 서버 개발 | 2019-11~ 현재

 

🔗 (주)아티프렌즈 | 블록체인/서버 API 개발 | 2018-08 ~ 2019-06

 

🔗 (주)우아한형제들 | 백엔드/프론트엔드 개발 | 2016-04 ~ 2018-08

 

🔗 (주)휘스코앤드비즈파크 | 백엔드/프론트엔드 개발 | 2012-10 ~ 2016-03