Humans of42_logo

시큐어 코딩을 할 줄 아는 개발자가 되고 싶어요

jaeskim의 이야기

2021-05-25

Photo of jaeskim

본과정 시작하고 1주일 후부터 badge42 를 만들기 시작했어요. 인트라에 들어가서 신기해서 이것저것 둘러보다가 42API가 공개돼있는 걸 발견했어요. 깃허브 뱃지, solved.ac 뱃지 등등 여러 뱃지가 있는 것처럼, 42 사람이란 걸 증명할 수 있는 뱃지를 만들 수 없을까 생각했죠. 맨 처음에 만들었을 때는 간단하게 사용자 이름만 뜨는 형식이었어요. 그리곤 주변 동료들에게 소개했는데 이거 정말 괜찮은 것 같다고 반응해줘서, 과제를 하면서 조금씩 조금씩 기능을 더해갔어요. 레벨과 블랙홀만 보여주는 초기 모델에 코알라시옹 컬러, 로고, 백그라운드 등등 여러 가지 적용해보며 개발했어요.

깃허브 스타가 일주일에 한두 개는 꼭 늘어나고 있더라고요. 지금은 120여개에요. 많이 뿌듯합니다. 해외 카뎃이 badge42를 사용하는 건 생각도 못 하고 있었는데, 어느 날부터인가 42도쿄, 42파리를 비롯한 여러 캠퍼스 학생들이 스타를 눌러줬어요. 중간중간 버그에 대한 이슈를 보내주기도 하고요. 기여한 사람들을 보여주고 싶어서 README.md에서 컨트리뷰터를 보여줄 수 있도록 반영했어요. 가장 기억에 남는 기여자는요, 대부분의 기여가 버그에 대한 것이었는데 아예 기능에 대해 건의를 해준 해외 카뎃이 있어요. 프라이버시 이슈가 있으니까 이메일을 숨기는 옵션을 추가해줬으면 좋겠다고 제안해줬죠. 이슈가 달린 지 한 시간 만에 바로 수정해서 배포했어요.

고등학교 3학년 때 보안 공부를 시작했어요. 원래는 일반고를 다니고 있었는데 컴퓨터 공부를 제대로 해봐야겠다 싶더라고요. ‘직업반'이라는 제도로 다른 학교에서 보안 수업을 들었어요. 수능을 준비하는 것보다 직접 배워보는 게 맞겠다 싶어서 열심히 공부했던 것 같아요. 보안 관련 일을 하려면 개발자보다 훨씬 많은 것을 알고 있어야 해요. 문제점을 보려면 소스 코드를 봐야 하는데, 언어가 php, 자바스크립트, 파이썬 등등 다양하고 프레임워크마다 취약점이 달라요. 네트워크 지식도 있어야 하고요. 이 모든 걸 알고 있기엔 제 능력이 부족하다고 생각하기도 했고, 웹 보안 공부하면서 배운 웹개발이 너무 재밌어서 요즘은 웹개발에 중심을 두고 있어요. 보안 이슈에 대해 빠르게 대응하고 시큐어 코딩을 할 줄 아는 개발자가 되고 싶어요.

시큐어 코딩을 한다는 건 사소한 에러도 예상하고 코딩을 하는 겁니다. malloc 하면서 널 가드를 하는 것처럼요. 42 과제를 평가할 때 예측하지 못하게 프로그램이 작동하는 경우는 없어야 한다고 하잖아요. 보안에서도 예측하지 못한 오류로 문제가 생겨선 안 돼요. 문제를 사전에 인지하고 방어하는 게 중요하다고 생각합니다. 클라이언트가 정상적인 걸 요청했다고 무조건적으로 간주했을 때 문제 되는 게 많더라고요. 보안 알고 있으면 매우 좋습니다. 개발하던 분들이 보안에 대해 잠깐만 들어도 많이 배우고 간다고 하더라고요.

Photo of jaeskim

주로 사용하는 언어는 자바스크립트예요. 작년에 코로나 재난문자를 알려주는 사이트를 개발하면서 처음 써보게 됐어요. 당시 42서울 본과정도 지연됐고 대학교도 비대면으로 수업하는 상황이라 할 게 너무 없어서, 자바스크립트, 리액트로 사이트를 한번 만들어봐야겠다 했죠. 마스크맵도 제공하는데, API가 종료돼서 카카오맵만 보여주네요(웃음). 공부하고 다 만들었을 때는 이미 이런 서비스가 많이 나왔고, 주요 포탈도 이를 적용한 상황이었어요. 그래서 지인들에게 ‘이런거 만들어봤다'고 소개하는 정도로 끝났죠. 그때 기술을 미리 알고 있는게 중요하다는 깨달음을 얻었어요. 같은 아이디어를 떠올려도, 먼저 만든 사람이 시장을 선점하게 되잖아요.

지금은 42 과제를 공부하면서, 다양한 프레임워크를 공부해보고 있어요. 요즘은 NestJS라는 백엔드 프레임워크와 서버사이드 렌더링을 할 수 있는 프론트엔드 프레임워크인 Next.js에 관심이 있어요. 프론트에서 싱글페이지 어플리케이션 방식으로 개발하면, 검색 노출도 안되고 관련 파일을 불러오기 전까지 사용자들은 흰 화면만 보게 되거든요. 그래서 처음으로 로딩할 때는 서버사이드 렌더링 기술이 필요하다고 알고 있어요. 개인 공부를 과제와 병행하는 게 생각보다 어려워서, 과제하다가 더 고민해도 오늘은 문제 해결이 안될 것 같을 때나 팀원들과 공부하지 않는 날에 제가 공부하고 싶었던 것에 올인하는 식으로 비중을 조절하고 있어요.

대학은 사실 한 학기 듣고 나서 자퇴했어요. 대학에서 공부하는 것보다 저 혼자 공부하는 게 빠른 것 같더라고요. 작년 1학기에 비대면으로 수업을 들었는데, 이미 알고 있던 내용이기도 하고 수업 자료도 매우 오래돼 보이고(웃음). ‘여기서 계속 공부하는 게 맞나' , ‘몇백만원 학비를 내면서 다니는 게 아깝다' 이런 생각이 자꾸 들었어요. 원격수업은 틀어 놓고 옆에서 따로 개발하고 있으니까 ‘이러느니 그냥 안 듣는 게 낫다' 싶던 참에 피신에 참여해보고 확신했어요. 여기 있는 사람들이랑 공부하는 게 훨씬 더 많이 배우겠다고요. 본과정 합격 발표나자마자 휴학 신청하고, 2~3주 더 고민하고 바로 자퇴를 신청했어요.

부모님은 맨 처음엔 걱정하셨는데, 42서울에서 공부하면서 학점은행제로 학사 학위를 빠르게 따고 더 공부하고 싶으면 학사 편입을 하거나 대학원에 입학하겠다고 말씀드렸어요. 다들 대학에 진학하니까 저도 고민이 아예 없던 건 아니었는데, 주변에서 대학을 자퇴하고도 개발자로 성공한 지인이 있어서 ‘나도 저렇게 성공해보고 싶다'는 마음이 컸죠. 지금은 오히려 대학에 진학한 친구들이 부러워하기도 해요. 친구들은 코로나 때문에 OT, MT가 없어서 아는 사람이 한둘만 있는 상황인데, 저는 사람들이랑 모여서 즐겁게 공부하고 있다고 하니까요.

지금까지는 혼자 공부했던 게 대부분이에요. badge42도 제 머릿속에 들어있던 아이디어를 저 혼자 시간 날 때, 기억나는 대로 구현한 거니까요. 다른 사람이랑 함께 개발한다고 하면 어떻게 진행해야 할지 잘 모르겠어요. 앞으론 다른 사람이랑 개발하는 법을 많이 배우고 싶어요. 깃 플로우라고 하잖아요. 협업할 때 깃도 잘 관리하고 싶고요. 공통과정 열심히 끝내고 42에서 만난 사람들이랑 프로젝트 해보고 싶어요. 지금 만들어 보고 싶은 서비스는 42서울의 여러 커뮤니티를 통합 관리할 수 있는 사이트를 개발해보고 싶네요.

interviewer

yechoi

photographer

jaewpark, jwon