돌아가기만 하면 끝이라고 생각하는 개발자에게
by 그릿 | GROWTH_ESSAY | 2026-10-17
#백엔드 #성장 #사유"테스트 돌려봤더니 정상 작동합니다."
멘토링을 진행하면서 1, 2년 차 주니어들에게 가장 자주 듣는 말 중 하나입니다. Postman에서 200 OK 응답이 떨어지고, 화면에 원하는 결과가 뜨면 개발이 끝났다고 믿습니다. 과연 그럴까요?
정상 작동은 개발의 끝이 아니라 출발점입니다
200명이 넘는 멘티들을 만나며 과제 코드를 열어보면 한 가지 공통된 장면이 있습니다. 기능은 동작합니다. 결제도 되고 주문도 들어갑니다.
하지만 "만약 주문 버튼을 1초에 열 번 누르면 데이터베이스에 주문이 몇 개 쌓일까요?"라고 묻는 순간 표정이 굳어집니다. "그건 사용자가 비정상적으로 누른 거 아닌가요?"라고 되묻는 분도 계셨습니다.
실무 환경은 사용자가 개발자의 의도대로만 움직여주는 온실이 아닙니다. 네트워크는 끊기고, 사용자는 버튼을 연타하며, 데이터베이스 커넥션은 언제든 마릅니다. 동작하는 것만 확인하고 끝내는 개발자는 버그가 터졌을 때 "로컬에서는 잘 됐는데요"라는 말밖에 하지 못합니다.
면접관이 진짜 확인하고 싶은 한 가지
신입이나 주니어 면접에서 면접관이 포트폴리오를 보며 가장 먼저 던지는 질문은 기술 스택이 아닙니다. "이 API에서 결제는 성공했는데 주문 테이블 저장이 실패하면 어떻게 처리하셨나요?" 바로 트랜잭션의 경계, 롤백 정책, 동시성 제어에 대한 고민입니다.
실제로 멘토링 3주 차에 커머스 프로젝트를 들고 온 1년 차 백엔드 개발자가 있었습니다. 코드는 깔끔했습니다. 프레임워크 최신 기능을 쓰고 디자인 패턴도 적절히 녹였습니다. 하지만 재고 차감 로직에 락(Lock)이나 정합성 방어 코드가 단 한 줄도 없었습니다. "기능 테스트할 때는 재고가 잘 줄어들었습니다"라고 답하더군요.
돌아가는 코드는 누구나 짭니다. 요즘은 AI에게 프롬프트 한 줄만 던져도 만들어줍니다. 면접관이 찾는 사람은 프레임워크 사용법을 외운 사람이 아닙니다. 실패하는 상황을 먼저 상상하고 방어벽을 세울 줄 아는 사람입니다.
코드를 덮기 전에 던져야 하는 세 가지 질문
기능 구현을 마쳤을 때 에디터를 바로 닫지 마세요. 딱 세 가지만 스스로에게 질문해 보시기 바랍니다.
첫째, 중간에 예외가 발생했을 때 데이터가 반만 저장된 채 방치되지 않는가.
둘째, 같은 요청이 동시에 쏟아졌을 때 데이터 정합성이 깨지지 않는가.
셋째, 외부 API나 데이터베이스 응답이 지연될 때 시스템 전체가 멈추지 않는가.
이 질문들에 명확한 근거를 대지 못한다면 아직 그 기능은 완성된 것이 아닙니다. 개발자의 실력은 성공 케이스를 얼마나 빨리 만드느냐에서 나오지 않습니다. 예외와 실패의 경로를 얼마나 집요하게 추적하느냐에서 갈립니다.
지금 짠 코드를 다시 열어보세요. 그 안에는 성공만 있습니까, 아니면 실패에 대한 사유가 담겨 있습니까.