포트폴리오가 아니라 작업 일지

Paul Evans

한 신입 개발자 지망생이 면접장에서 서류 봉투를 꺼내는 순간이 떠오른다. 다른 지원자들은 번들번들하게 인쇄된 프로젝트 결과물 화면을 몇 장씩 들고 왔지만, 그는 두툼한 A4 용지 묶음을 제출했다. 겉표지에는 프로젝트 이름과 기간만 적혀 있었다. 면접관이 고개를 갸웃하며 첫 장을 넘겼다. 그 종이에는 완성된 화면이 아니라, 깨진 레이아웃의 스크린샷과 그 옆에 빨간 펜으로 “왜 이렇게 됐지?”라고 적힌 메모가 붙어 있었다. 그날 면접 분위기는 예상 밖으로 따뜻했다. 면접관은 결과물이 아니라 그가 문제를 쪼개고, 헤매고, 다시 쌓아 올린 흔적에 집중했다.

이 에피소드가 주는 교훈은 명확하다. 채용 담당자와 면접관은 완벽한 결과물보다 그 결과물이 만들어지기까지의 사고 과정을 더 궁금해한다는 사실이다. 완성된 포트폴리오는 지원자가 만든 최종 산출물의 모습만 보여준다. 그러나 작업 일지는 지원자가 어떻게 문제를 정의하고, 어떤 순간에 막혔고, 그 막힌 지점을 어떤 근거로 우회하거나 돌파했는지를 고스란히 드러낸다. 이 글에서는 개발자 커리어를 준비하는 사람이 왜 결과물 중심의 포트폴리오 대신 작업 일지를 중심으로 이력 관리를 해야 하는지, 그리고 이를 어떻게 단계별로 실행할 수 있는지 살펴본다.

첫 번째 단계는 프로젝트를 선정할 때부터 완성된 결과물이 아니라 과정을 기록할 마음가짐을 정하는 것이다. 초보 개발자를 위한 첫 프로젝트는 대개 계산기나 할 일 목록 같은 단순한 주제에서 출발한다. 문제는 그런 단순한 프로젝트는 결과물이 짧게 끝나고 기록할 과정이 빈약하다는 점이다. 따라서 첫 프로젝트를 고를 때는 “이 기능을 어떻게 구현할지 모르겠다”는 지점이 최소 세 군데 이상 존재하는 주제를 선택하는 것이 좋다. 예를 들어 회원 가입 기능을 넣되 이메일 인증을 직접 구현해 보는 식이다. 이때 비밀번호 암호화를 어떤 방식으로 적용했고, 그 선택을 위해 어떤 공식 문서를 참고했는지가 작업 일지의 첫 번째 챕터가 된다. 이렇게 선정한 프로젝트는 결과물이 화려하지 않아도 기록할 거리가 풍부해진다.

두 번째 단계는 개발 일지를 작성하는 구체적인 형식을 정하는 것이다. 흔히 하는 실수는 일기를 쓰듯 감정을 적는 것이다. 하지만 작업 일지는 감정 보고서가 아니다. 날짜별로 세 가지 항목을 기록하는 것을 권장한다. 첫째, 그날 구현하려던 기능. 둘째, 실제로 시도한 코드 또는 설계 방식과 그것이 실패한 지점. 셋째, 실패 이후 어떤 자료를 찾아보고 어떤 가설을 세워 다시 시도했는지의 흐름이다. 이 세 항목은 결과물 중심 포트폴리오에서는 결코 드러나지 않는 부분이다. 예를 들어 목록을 불러오는 API 호출이 계속 오류를 반환했을 때, 콘솔 로그를 찍어본 기록과 HTTP 상태 코드별로 처리 방식을 분기한 과정을 시간순으로 적어 두면, 면접관은 지원자가 디버깅을 논리적으로 수행하는 인물인지 파악할 수 있다. 이 과정은 사실상 개발자 면접 대비 전략의 핵심이기도 하다. 면접에서 “이 프로젝트에서 가장 어려웠던 점”이라는 질문은 사실 “당신이 막힘을 어떻게 대처하는가”를 묻는 것이기 때문이다.

세 번째 단계는 실패한 시도를 기록할 때 두려움을 버리는 것이다. 많은 사람이 실패 기록을 남기면 자신의 결점이 드러날까 봐 걱정한다. 그러나 관찰자 시점에서 보면 오히려 반대다. 실패를 구체적으로 기록한 사람은 자신이 어떤 상황에서도 멈추지 않고 다음 단계를 탐색하는 유형임을 증명한다. 예를 들어 외부 결제 연동을 시도했지만 테스트 환경에서 계속 오류가 나서 결국 다른 방식으로 우회했다는 기록이 있다고 가정해 보자. 이 기록은 지원자가 외부 서비스의 문서를 읽고, 오류 메시지를 해석하고, 제한된 환경 안에서 대안을 선택할 줄 아는 사람이라는 것을 보여준다. 이는 어떤 완성된 프로젝트보다도 강력한 신뢰의 증거가 된다. 작업 일지를 작성할 때는 실패한 순간의 코드와 에러 메시지를 그대로 붙여넣고, 왜 그 오류가 발생했다고 추정했는지를 한 문장으로라도 적어야 한다. 이 기록이 나중에 이력서의 프로젝트 소개란을 채우는 원자료가 된다.

네 번째 단계는 작업 일지를 주기적으로 재구성하는 것이다. 프로젝트가 끝난 뒤에는 쌓인 날짜별 기록을 구조화된 하나의 문서로 편집할 필요가 있다. 이때 단순히 시간순으로 나열하는 것은 피하는 것이 좋다. 대신 “구현 단계, 실패와 해결 단계, 개선 단계”로 나누어 내용을 재배치한다. 예를 들어 처음 계획했던 데이터베이스 스키마와 실제 운영하면서 수정한 스키마의 차이점을 비교하는 챕터를 만드는 식이다. 이렇게 재구성된 작업 일지는 면접관이 읽기에도 부담이 적고, 지원자 스스로도 자신이 어떤 결정을 내렸는지 한눈에 파악할 수 있다. 이 문서는 마치 개발자의 생각을 보여주는 설계도와 같다. 완성된 화면 스크린샷을 여기저기 붙여 놓기보다, 과정을 설명하는 텍스트와 코드 조각이 더 진정성 있게 읽힌다.

다섯 번째 단계는 작업 일지를 면접에서 적극적으로 활용하는 전략을 세우는 것이다. 면접장에 갈 때는 작업 일지를 출력해서 가거나 노트북으로 보여줄 준비를 해야 한다. 면접관이 특정 기능을 어떻게 구현했는지 질문하면, 결과물 화면을 보여주는 대신 작업 일지의 해당 페이지를 펼쳐서 당시의 문제 상황과 해결 과정을 설명하는 것이 유리하다. 특히 프로그래밍 언어 선택 요령과 관련해서도 작업 일지가 도움이 된다. 예를 들어 한 프로젝트에서 자바스크립트를 먼저 시도했다가 타입 오류가 너무 자주 발생해서 타입스크립트로 전환한 기록이 있다면, 면접관은 지원자가 언어의 특성을 이해하고 상황에 맞게 도구를 선택하는 안목을 갖췄다고 판단한다. 이는 단순히 “저는 자바스크립트를 잘 다룹니다”라고 말하는 것보다 훨씬 설득력 있다. 또한 IT 자격증 준비 과정도 작업 일지에 포함시킬 수 있다. 자격증 공부를 하며 풀었던 문제 중 특히 오답이 많았던 부분을 기록하고, 그 개념을 실제 프로젝트 코드에 어떻게 적용했는지 연결 지어 적어 두면 개발자 커리어 전체의 맥락이 하나로 이어진다.

여섯 번째 단계는 작업 일지가 단순히 면접용 자료에 그치지 않고 평생의 기술 기록으로 발전시키는 것이다. 개발자 커리어를 오래 끌고 가려면 자신이 과거에 어떤 실수를 했고 어떻게 극복했는지의 축적이 중요하다. 몇 년 뒤에 같은 문제가 다시 발생했을 때, 작업 일지의 과거 기록은 가장 빠른 참고 자료가 된다. 이는 구직 활동에만 유용한 것이 아니라 현업에서의 문제 해결 속도에도 크게 기여한다. 초보 개발자 시절에 작성한 일지의 코드 조각을 그대로 재사용하는 경우도 생긴다. 이렇게 되면 작업 일지는 이력서의 한 부분이 아니라 개발자라는 직업을 수행하는 핵심 도구가 된다.

생각해 보면 이것은 당연한 이치다. 채용 공고에서 요구하는 경력은 곧 “문제를 해결해 본 경험”을 의미한다. 문제를 해결해 본 경험은 결과물에 남지 않는다. 오직 그 과정을 기록한 사람만이 자신의 경험을 언어로 재현할 수 있다. 깔끔한 포트폴리오는 많은 지원자가 만들어 낼 수 있지만, 형편없던 첫 시도부터 꼼꼼한 수정 과정을 고스란히 담은 작업 일지는 흔치 않다. 면접관은 바로 그 흔치 않은 자료에서 지원자의 진짜 역량을 읽어낸다.

이제 실행할 일은 명확하다. 다음 프로젝트를 시작할 때 완성된 결과물을 예쁘게 캡처하는 데 시간을 쓰는 대신, 오늘 시도한 코드가 왜 오류를 냈는지 한 줄 기록하는 데 시간을 투자하라. 실패한 시도가 쌓일수록 작업 일지는 두꺼워지고, 그 두께가 곧 구직 시장에서의 경쟁력이 된다. 완벽한 결과물을 지금 보여주지 못해도 괜찮다. 당신이 어떻게 생각하고 움직이는지 보여주는 작업 일지가 더 솔직하고 강력한 증거가 되어 줄 것이다. 그렇게 쌓인 기록은 면접관의 신뢰를 얻는 동시에, 개발자로서 성장하는 나침반이 되어 준다. 지금 이 순간부터 작업 일지를 펼쳐라. 완성된 결과물이 나오기 전까지의 모든 과정이야말로 당신의 진짜 커리어다.