테스트를 잘 쓰는 사람은 결국 어디로든 옮겨갈 수 있다

min dulle

Hatched by min dulle

Jun 18, 2026

7 min read

68%

0

보이지 않는 이력서는 코드가 아니라 습관이다

좋은 개발자는 무엇으로 증명될까? 화면에 보이는 기능일까, 화려한 기술 스택일까, 아니면 인터뷰 때 말로 풀어내는 문제 해결 능력일까. 실제로는 더 지루해 보이는 한 가지가 사람의 경력을 오래 지탱한다. 바로 반복해서 재현 가능한 신뢰다.

이 신뢰는 두 곳에서 가장 선명하게 드러난다. 하나는 코드를 바꾸고도 두려워하지 않게 해주는 테스트이고, 다른 하나는 낯선 조직과 환경으로 옮겨가도 다시 실력을 증명하게 해주는 이직이다. 겉으로 보면 전혀 다른 주제처럼 보이지만, 둘은 사실 같은 질문을 향하고 있다.

나는 무엇을 얼마나 잘 만들 수 있는가가 아니라, 어떤 조건이 바뀌어도 내 실력을 어떻게 재현할 수 있는가를 묻는 문제다.

이 관점에서 보면 테스트는 단순히 버그를 잡는 도구가 아니다. 그리고 경력직 이직도 단순히 더 좋은 연봉을 찾는 이벤트가 아니다. 둘 다 개발자가 자신의 가치를 우연이 아니라 구조로 바꾸는 과정이다.


테스트는 코드의 안전장치가 아니라, 이직 가능한 실력의 증명서다

테스트를 처음 접할 때 많은 사람은 이렇게 생각한다. “기능만 잘 되면 되지, 굳이 테스트까지 써야 하나?” 그런데 테스트의 진짜 역할은 기능 검증만이 아니다. 테스트는 내가 만든 지식을 미래의 나와 타인에게 넘기는 방식이다.

예를 들어, 결제 로직을 만든다고 하자. 오늘은 할인 쿠폰, 내일은 포인트, 모레는 부분 취소가 추가될 수 있다. 테스트가 없다면 개발자는 매번 머릿속에서 추론해야 한다. “이 코드가 여기서 깨지지 않을까?” 반면 잘 정리된 테스트가 있으면 질문이 바뀐다. “이 변화가 어떤 규칙을 건드리는가?”

이 차이는 매우 크다. 전자는 기억에 의존하고, 후자는 시스템에 의존한다. 기억은 퇴근하면 흐려지지만 시스템은 남는다. 그래서 테스트가 잘 된 코드는 단지 안전한 코드가 아니라, 변경 가능한 코드다. 그리고 변경 가능성은 곧 고용 가능성과 직결된다.

경력직 채용에서 조직이 보고 싶어 하는 것도 비슷하다. 단순히 “코드를 많이 써봤다”가 아니라, “변화가 많은 환경에서 안정적으로 가치를 낼 수 있다”는 신호다. 테스트 습관은 바로 그 신호를 가장 조용하지만 강하게 보내는 장치다. 다른 말로 하면, 테스트는 당신의 경력이 흔들릴 때 버팀목이 되는 보이지 않는 자산이다.

테스트가 보여주는 진짜 능력

테스트를 잘 짠다는 것은 단순한 문법 숙련이 아니다. 아래 세 가지 능력을 압축해서 보여준다.

  1. 경계를 나누는 능력

    • 무엇이 입력이고, 무엇이 출력이며, 무엇이 부수효과인지 구분한다.
    • 이 능력은 복잡한 시스템을 모듈로 쪼개는 힘과 같다.
  2. 가정을 드러내는 능력

    • “이 값은 항상 양수일 것이다” 같은 숨은 전제를 코드 밖으로 끌어낸다.
    • 경력직 면접에서 좋은 개발자는 늘 가정을 먼저 묻는다.
  3. 실패를 다루는 능력

    • 테스트는 성공보다 실패를 잘 다루는 도구다.
    • 결국 실무는 정답보다 예외 처리가 더 중요할 때가 많다.

즉, 테스트는 단지 품질 관리가 아니라 사고방식의 기록이다. 그리고 사고방식은 이직할 때 가장 복제하기 어려운 자산이다. 기술은 배울 수 있어도, 문제를 다루는 습관은 한 번에 옮겨지지 않는다.


이직은 커리어의 이동이 아니라, 검증 방식의 이동이다

많은 개발자가 이직을 “더 좋은 조건을 찾는 과정”으로만 이해한다. 물론 연봉, 복지, 원격 근무, 성장 환경은 중요하다. 하지만 경력직 이직의 핵심은 조금 다르다. 이직은 사실 내 실력을 어떤 방식으로 다시 입증할 것인가에 관한 문제다.

특히 해외, 예를 들어 캐나다 같은 새로운 시장으로 옮겨갈 때 이 질문은 더 날카로워진다. 이전 회사의 명성, 국내 네트워크, 익숙한 기술 선호도가 사라진다. 남는 것은 비교적 적은 정보다. 이력서, 포트폴리오, 인터뷰에서의 답변, 그리고 문제를 푸는 태도다. 즉, 당신은 이전보다 더 압축된 방식으로 자신을 증명해야 한다.

이 상황에서 많은 사람이 착각하는 것이 있다. “경력이 쌓이면 자동으로 통한다”는 믿음이다. 하지만 경력은 자동으로 통하지 않는다. 경력은 오히려 해석되어야 한다. 같은 7년 차라도 어떤 사람은 기능을 구현해온 사람으로 보이고, 어떤 사람은 불확실한 문제를 끝내 결과로 만든 사람으로 보인다. 차이는 경력이 아니라 서사와 구조다.

이직은 그 구조를 새로 정리하는 작업이다. 내가 어떤 종류의 문제를 잘 풀어왔는지, 어떤 조건에서 성과를 냈는지, 어떤 실패를 겪고 무엇을 바꿨는지, 그 모든 것을 상대가 이해할 수 있는 언어로 번역해야 한다. 이 과정은 테스트와 닮았다. 테스트가 코드의 가정을 드러내듯, 이력서는 경력의 가정을 드러낸다.

좋은 이직 준비란 스펙을 더하는 일이 아니라, 내가 가진 경험을 재현 가능한 형태로 압축하는 일이다.

이 점에서 테스트 습관은 이직 준비의 은밀한 훈련이 된다. 테스트를 잘 쓰는 사람은 자연스럽게 질문을 구조화한다. 무엇이 핵심인지, 무엇이 예외인지, 어떤 조건이 바뀌면 결과가 달라지는지 보는 눈이 생긴다. 이 눈은 면접에서도 강력하다. 대답을 잘하는 사람보다, 문제를 정확히 재정의하는 사람이 더 높은 평가를 받는다.


두 문제를 연결하는 핵심은 재현성이다

테스트와 이직이 만나는 지점은 결국 하나다. 재현성.

테스트는 코드가 오늘만 맞는 것이 아니라 내일도 맞는지 재현한다. 이직은 내 경력이 특정 회사 안에서만 유효한 것이 아니라 다른 환경에서도 재현되는지 시험한다. 이 둘을 함께 보면 개발자의 성장은 단순한 축적이 아니라 이동 가능한 신뢰를 만드는 과정이라는 사실이 보인다.

이 관점을 이해하면 커리어 전략도 달라진다. 많은 사람은 “더 많이 해본 것”을 쌓으려 한다. 하지만 더 중요한 것은 “옮겨가도 유지되는 것”을 쌓는 일이다. 여기서 옮겨가도 유지되는 것이란 다음과 같은 것들이다.

  • 새로운 코드베이스에서도 빠르게 구조를 읽는 능력
  • 낯선 팀에서도 암묵지를 질문으로 바꾸는 능력
  • 개인의 기억이 아닌 문서와 테스트로 지식을 남기는 습관
  • 기능 추가보다 실패 가능성을 먼저 보는 태도

이 네 가지는 모두 테스트 문화와 이직 역량을 동시에 강화한다. 즉, 테스트는 단지 품질에 좋은 것이 아니라 커리어 이동성에도 좋다. 반대로 이직을 잘 준비하는 사람은 자신의 실력을 포장하는 데 그치지 않고, 그것을 다른 환경에서도 통할 만큼 구조화한다. 이 둘은 서로를 비추는 거울이다.

한 번 더 깊게 보면, 둘 다 불안을 다루는 방식이다

테스트를 쓰지 않는 이유 중 하나는 귀찮음이다. 그러나 더 깊은 이유는 불안이다. 테스트를 작성하는 순간, 우리는 내가 만든 코드의 취약점을 정면으로 봐야 한다. 이직도 마찬가지다. 다른 시장에 나서는 순간, 기존의 안정적인 정체성이 흔들린다.

그래서 많은 개발자는 두 가지를 피한다. 테스트를 미루고, 이직을 미룬다. 하지만 둘 다 미루면 더 큰 대가를 치른다. 코드베이스는 무서운 속도로 복잡해지고, 경력은 특정 조직에 과도하게 묶인다. 결국 변화에 적응하는 능력 자체가 약해진다.

여기서 중요한 통찰이 나온다. 불안을 줄이는 가장 좋은 방법은 불안을 제거하는 것이 아니라, 불안을 다룰 수 있는 구조를 만드는 것이다. 테스트는 코드의 불안을 구조화하고, 이직 준비는 경력의 불안을 구조화한다. 그래서 둘은 같은 철학을 공유한다.


실무와 커리어를 동시에 바꾸는 작은 설계도

이제 가장 중요한 질문은 이것이다. 이 통찰을 오늘부터 어떻게 쓰는가? 거창한 전환이 필요하진 않다. 오히려 작은 습관 몇 개가 핵심이다.

첫째, 기능을 만들 때 테스트를 나중으로 미루지 말 것. 테스트는 완료 후 검수 단계가 아니라 설계의 일부다. 특히 복잡한 로직일수록 먼저 입력과 출력, 실패 조건을 적어보면 구조가 보인다. 이것은 단순히 코드 품질만 높이는 게 아니라, 문제를 이해하는 속도를 높인다.

둘째, 업무를 경력 서사로 기록할 것. 오늘 한 일을 “로그인 수정”이라고 적는 대신, “인증 실패 원인을 분리하고 재현 테스트를 추가해 장애 대응 시간을 줄였다”처럼 기록해보자. 이렇게 적는 습관은 이직용 문서뿐 아니라 자기 이해를 바꾼다. 무엇을 했는지가 아니라, 어떤 종류의 문제를 해결했는지가 남는다.

셋째, 면접 준비를 기술 암기보다 구조 설명으로 접근할 것. 테스트를 잘 이해하는 사람은 왜 이 예외를 검증하는지 설명할 수 있다. 이직 인터뷰도 같다. 결과보다 선택의 이유를 설명할 수 있어야 한다. “왜 이 설계를 했는가”, “왜 이 실패를 먼저 다뤘는가”, “왜 이 지표를 개선했는가”가 핵심이다.

넷째, 새 환경을 두려워하지 말고 검증 기회로 볼 것. 다른 회사, 다른 국가, 다른 코드베이스는 당신의 한계를 드러내는 곳이 아니라 실력을 압축해 보여주는 무대다. 익숙함이 줄어든다는 것은 불리함이지만, 동시에 진짜 힘이 드러난다는 뜻이기도 하다.

비유로 보면 더 분명하다

테스트 없는 코드는 지도 없는 도시와 비슷하다. 길이 익숙할 때는 아무 문제 없어 보이지만, 골목 하나만 막혀도 전체가 마비된다. 반대로 테스트가 있는 코드는 여러 갈래 길이 표시된 도시와 같다. 돌아갈 수 있고, 우회할 수 있고, 한 구역이 흔들려도 전체가 무너지지 않는다.

이직도 마찬가지다. 경력이 특정 회사에만 최적화된 사람은 그 회사의 지형이 바뀌면 함께 흔들린다. 반면 자신의 경험을 구조화한 사람은 다른 도시에서도 길을 찾는다. 결국 중요한 것은 어디에 있었느냐가 아니라 어디서도 길을 찾을 수 있는가다.


Key Takeaways

  1. 테스트는 버그 방지 도구를 넘어, 실력을 재현 가능하게 만드는 장치다.

    • 코드가 아니라 사고방식을 남긴다고 생각하면 테스트의 가치가 달라진다.
  2. 경력직 이직은 이력서 경쟁이 아니라, 내 경험을 다른 환경에서도 통하는 언어로 번역하는 작업이다.

    • 무엇을 했는지보다 어떤 문제를 어떻게 구조화했는지가 중요하다.
  3. 테스트 습관과 이직 역량은 같은 능력에서 나온다.

    • 경계를 나누고, 가정을 드러내고, 실패를 다루는 힘이다.
  4. 좋은 개발자는 기억에 의존하지 않고 시스템에 의존한다.

    • 테스트, 문서화, 문제 정의 습관이 모두 커리어 이동성을 높인다.
  5. 불안을 없애려 하지 말고, 불안을 다룰 구조를 만들자.

    • 테스트는 코드의 불안을 줄이고, 이직 준비는 경력의 불안을 줄인다.

결론: 결국 커리어는 장소가 아니라 재현성의 문제다

많은 사람이 개발 경력을 “얼마나 오래 했는가”로 생각한다. 하지만 시간이 쌓인다고 실력이 자동으로 이동하진 않는다. 진짜 중요한 것은 내가 만든 가치가 다른 조건에서도 다시 만들어질 수 있는가다. 이 질문에 답할 수 있는 사람은 테스트를 잘 쓰고, 이직에도 강하다.

그래서 테스트를 쓰는 일은 단지 코드 품질을 높이는 습관이 아니다. 그것은 미래의 나에게 실력을 증명하는 방식이며, 더 큰 환경으로 옮겨갈 수 있게 해주는 훈련이다. 반대로 이직을 준비하는 일은 단지 다음 회사를 찾는 일이 아니다. 그것은 내가 어떤 개발자인지, 어떤 상황에서도 재현 가능한지 검증하는 과정이다.

결국 커리어의 핵심은 소속이 아니라 이동성이고, 이동성의 핵심은 스펙이 아니라 재현성이다. 테스트는 코드의 재현성을 만들고, 이직은 경력의 재현성을 시험한다. 이 둘을 함께 이해하는 순간, 개발자는 단순히 더 많은 일을 하는 사람이 아니라, 어디로 가도 다시 신뢰를 만드는 사람이 된다.

Sources

← Back to Library

Hatch New Ideas with Glasp AI 🐣

Glasp AI allows you to hatch new ideas based on your curated content. Let's curate and create with Glasp AI :)

Start Hatching 🐣