Humans of42_logo

코딩이 싫지는 않았어요

jaham의 이야기

2024-05-26

Photo of jaham

미국에서 태어나서 4살, 5살 때 한국으로 왔어요. 그래서 영어도 잘 기억이 안 나요. 미국에서 남은 건 국적뿐이에요. (웃음) 한국에서 초중고를 졸업하고 대학교는 안 갔어요. 지방대라도 갈 수 있었겠지만, 그러고 싶지 않았어요. 중학생 때까지만 해도 대학에 당연히 가는 거라고 생각했는데, 점점 "공부해서 뭐하나"라는 생각이 들기 시작했어요. 의미가 없다고 생각했던 것 같아요. 한 번 정하면 죽어도 안 하는 성격이라, 마음속으로 공부를 해야 하는 이유가 납득이 안 됐던 것 같아요.

그냥 놀았어요. 잘 노는 것도 아니고 시간 죽이고 있었던 거죠. 예를 들면 집에서 게임을 한다든지요. 재미있어서 한 게 아니라 시간을 보내기 위해서요. 고등학생 때는 진짜 게임을 미친 듯이 했어요. 20대 때도 계속 했고, 군대에서도 공익이라서 엄청 했어요. 42 다닐 때는 클러스터에 오래 있다 보니 조금 줄었지만, 밤에 돌아가면 계속 했어요. 이때 잠이 적어졌어요. 게임을 하던 관성이 있는데 42에 들어오면서 할 일이 많아지니 자연스럽게 잠을 줄인 거죠. 사실 취직한 지금도 게임으로 시간을 많이 보냅니다. 어제도 했어요. (웃음)

게임이 주는 재미도 있지만, 비어있는 시간을 가만히 놔두지 못하는 성격이에요. 어릴 때부터 항상 생각을 집중시킬 게 필요했어요. 여기 오기 전까진 그게 게임이었던 거죠.

Photo of jaham

원래 개발을 해야겠다는 생각은 없었어요. 주방 알바도 했었고, 사진 찍는 것도 좋아해서 사진 찍는 일도 했었어요. 포토샵도 배워봤고요. 그런데 그런 방향으로 동기부여가 잘 안 됐던 것 같아요. 개발 자체는 개발하는 친구들 덕분에 알게 됐어요. 고등학생 때 만난 게임 친구들인데 그 친구들이 저에게 개발을 권유했어요. 생활코딩의 웹페이지 만드는 강좌가 첫 번째 개발이었던 것 같아요. 그땐 일회성으로 끝났지만, 몇 달 있다가 자바스크립트를 좀 봤어요. 이것도 같은 친구가 알려줬어요.

군대 딱 끝나는 시점에 그 친구가 42를 알려줬어요. 원래는 부트캠프를 가볼까 생각했었는데, 42는 수백만 원 내고 가는 게 아니라 그냥 가도 되는 게 좋았어요. 피신이라는 게 있다는 걸 듣고, '그래 뭐 한 달 그렇게 열심히 해보고 안 되면은 때려치우는 게 맞다' 라고 생각했어요. 이때 만약에 안 됐으면 개발을 안 했을 거 같아요.

GNL(get_next_line)라는 과제는 힘들었지만 재밌었어요. GNL에서 보너스가 계속 0점으로 채점되는 일이 있었어요. 만점을 받기 위해 여러 번 시도했죠. 점차 버그라는 생각이 들었고, 이를 증명하고자 해외에서 125점을 맞은 사람에게 허락을 구하고 코드를 가져와서 테스트를 해봤어요. 그래도 만점이 나오지 않아서, 버그임을 확신했고 보컬에게 연락했어요. 결국 버그로 밝혀졌고, 고쳐졌어요. 그런 과정이 재밌었어요.

미니쉘은 블랙홀이 14일 남은 분과 팀을 했어요. 그분이 코딩을 잘 못하고, 버그도 많고, 연락도 잘 안됐어요. 계속 연락을 시도했더니 코드를 가져오셨어요. 근데 본인이 짠 코드가 아닌 것 같았죠. 그런 순간이 쉽지 않았죠. 저는 여기서 묶여있기 싫었는데, minishell을 세 달 정도 했거든요. 답답했죠. 협업이란 게 쉽지 않다고 느꼈어요. 그렇지만 코딩이 힘든 건 아니었어요. 본 과정 끝내고도 그랬던 것 같아요. 모르는 게 너무 많다는 사실이 힘들지만, 어쩌겠어요. 그거 배워야지.

Photo of jaham

42 stat 홈페이지 (이 이미지는 개인 정보 보호를 위해 블러 처리되었습니다.)

42 stat(이하 스탯)은 평가나 과제 기록 같은 42에서의 활동을 한 번에 볼 수 있는 종합 통계 사이트에요. 본 과정 끝나고 스탯 같은 걸 만들어야겠다고 생각했어요. GNL 관련 정보를 찾을 때도 인트라를 많이 뒤졌어요. 그때 스탯 같은 게 있었으면 엄청 편했겠죠. 사실 본과정에 들어왔을 때 부터 42에서 이런 서비스를 제공해줘야 한다고 생각했어요. 왜 없는지 의문이었죠. 그래서 이너서클을 깬 뒤에 직접 만들기 시작했어요. 처음에는 1~2개월 정도의 작은 프로젝트였지만, 팀원도 생기고 점점 커졌어요. 백엔드를 해본 적이 없었기 때문에 모르는게 많았는데, 기술 스택 등 모든 결정을 내려야 하다보니 되게 어려웠죠. 백엔드와 프론트엔드 모두 신경을 많이 쓰다보니 결국 23년 8월에 출시하게 됐어요. 처음 예상보다 반년 정도 늦어졌죠.

백엔드에서 42API에 의존적이라는 게 큰 문제였어요. API 요청 횟수 제한도 있고, 느리고, 버그도 많았어요. 구조적으로도, 관계형DB에 넣으려면 스키마를 특정해야 하는데, 인트라는 여러 테이블에서 뽑은 데이터를 다 합쳐서 주거든요. 모든 스키마를 추론해내는건 거의 불가능했어요. 그래서 NoSQL인 mongoDB를 썼죠. DB 최적화와 관련해서도 많은 문제가 있었어요. 예를 들어, DB에서 데이터를 다 긁어와야 했는데, 교육생의 평균 진도나 레벨 분포 같은 것을 계산할 때 원하는 만큼 성능이 안나왔어요. 캐싱이 필요했죠. 처음엔 레디스를 썼는데, 레디스를 사용하기 위해 json을 문자열로 변환하는 과정이 너무 느렸어요. 결국 메모리에 데이터를 직접 올려 원하는 성능을 얻었습니다.

42를 하면서 팀플이든, 커뮤니티든 힘든 점은 많았지만, 코딩하고 개발하는게 힘들지는 않았던 것 같아요. 계속해서 좋은 팀원들과 함께 기술적으로 완성도 높은 프로젝트를 만들고 싶어요. 개인적으로는 TODO리스트 같은 작은 프로젝트부터 시작하려고 합니다.

Q. 앞으로도 코딩을 계속 하실 계획인가요?

아직도 확신은 없지만 일단 가는 거죠.

interviewer

hdoo

photographer

hdoo

editor

jiwahn