양산 D-7, 잠을 잘 수 없다
- 02 Dec, 2025
양산 D-7, 잠을 잘 수 없다
알람이 울린다. 5시 30분.
어제는 3시간 잤다. 그 전날은 2시간. 통패턴이다. 일주일 수면 시간을 계산하지 않는 게 정신 건강에 좋다.
침대에 누웠는데 눈이 감기지 않는다. 천장을 본다. 까만 천장. 거기에 코드가 보인다.
if (sensor_value > THRESHOLD)
{
// 여기 로직이 맞나?
}
맞다. 틀렸다. 아니, 모르겠다. 일단 일어난다.

D-7이라는 숫자
양산까지 일주일. 정확히는 7일. 168시간. 10,080분.
더는 세지 않는다. 세면 더 짧아 보인다.
오늘 아침 회의. HW팀 리더가 물었다.
“펌웨어 테스트 상태는?”
나: “90% 정도요.”
HW팀 리더: “90%면 앞으로 7일 동안 마무리 되겠네요?”
아. 이미 계산이 되어 있었구나.
남은 10%는 뭘까.
아무도 모른다. 나도 모른다. 그래서 무섭다.
엣지 케이스의 악몽
어제 테스트 케이스 리스트를 다시 봤다. 문서는 총 47페이지. 펌웨어팀이 만든 게 아니라 QA팀이 만들었다. 아, QA팀은 테스트만 한다. 우리는 이 테스트를 통과하려고 코드를 짠다.
47페이지를 다 읽으면서 생각했다.
‘혹시 우리가 놓친 조건이 있나?’
예를 들면.
- 온도 0도에서 켜졌을 때는 어떻게 되나?
- 전원을 뺐다가 5초 안에 다시 꽂으면?
- 시리얼 통신하는 도중에 전원 끊으면?
- 펌웨어 업데이트 중에 전원 끊으면?
이런 것들. 생각하면 끝이 없다.
한 가지 놓친 게 있으면 리콜이다.
리콜 비용. CEO한테서 들은 소문은 ‘최소 3억’. 최악은 ‘10억 이상’. 우리 팀 연봉 다 더해도 그 정도다. 나 혼자면 20년을 일해도 못 버는 돈이다.
그럼 그만큼의 책임이 내 어깨에 있다는 뜻이다.
어제 저녁 10시. 새로운 엣지 케이스를 발견했다.
극저온에서 배터리가 들어갔을 때, 부트 시퀀스에서 전압 체크하는 타이밍이 밀릴 수 있다는 걸 알았다. 딱 1ms 차이. 1ms가 뭐 하는 건가 싶겠지만, 그 1ms 때문에 다른 인터럽트가 선점되고, 그럼 UART 버퍼가 터질 수 있다. 터지면 모니터링 명령이 날아가고, 장비가 시작되지 않는다.
회로도를 다시 봤다. 콘덴서 용량이…
아니다. 그건 HW팀 문제다.
그럼 우리가 할 수 있는 건?
타이머 할당을 바꾸거나, 인터럽트 우선순위를 조정하거나, 또는…
밤 12시. 코드를 고쳤다. 테스트를 돌렸다. 통과. 다시 돌렸다. 통과. 5번 더. 다 통과.
그런데 혹시 다른 케이스에서 망가진 건 아닐까?
회귀 테스트. 모든 테스트를 다시 돌린다. 3시간 30분. 다 통과. 아침 3시 30분.
잠에 든다.

양산 후 되돌릴 수 없다
웹개발자 친구 있다. SI 회사 다닌다.
“버그 있으면 그냥 배포 다시 하면 돼. 새 버전 올리고. 끝.”
나: ”…”
“너는 왜 그렇게 신경 써?”
펌웨어는 롤백이 없다.
물론 기술적으로 불가능한 건 아니다. 펌웨어 업데이트 메커니즘이 있고, 장비를 수거해서 새 버전을 올리고 반송할 수 있다. 비용만 우리 회사에서 감당하면.
하지만 고객입장에서는?
“이 제품 버그 있어서 교환해야 해요.”
신뢰도가 떨어진다.
두 번 이상 리콜되면 우리 제품은 끝이다. 시장에서.
그래서 처음부터 완벽해야 한다.
완벽이라는 건 뭘까. 혼자서 생각하면 미친다.
여자친구가 있을 때. 그때도 이랬다. 야근 때문에 헤어졌다는 게 공식 이유지만, 사실은 이것 때문이었다. 내 정신이 여기 없었다. 펌웨어에. 양산에. 리콜의 악몽에.
“넌 왜 항상 일에만 생각해?”
“양산까지만. 양산 나가면…”
양산이 나갔다.
그 다음 날부터 다음 프로젝트의 양산이 시작됐다.
지금 여기
회사 카페. 아침 8시.
검은색 커피. 세 잔째.
옆 테이블 신입. 인턴. 밝다. 웃는다. 최고 7시간을 자는 거 같다.
나를 봤을 때 이런 생각이 있겠지.
‘저 사람 왜 저렇게 피곤해 보이지?’
답을 줄 수 없다. 말로는 불가능하다.
침대에 누워도 잠이 오지 않는다. 눈을 감고 기다린다. 5분. 10분. 20분.
그럼 차라리 일한다.
집에 가는 길. 9시 40분. 퇴근이 이른 날이다.
내일 테스트 결과를 생각한다.
실패하는 건 아닐까. 지금까지 다 했는데 갑자기?
그럼 HW팀 보고를 어떻게 하지. 우리가 못 찾은 버그가 있었다고?
아, 그리고 스펙 문서. 다시 읽어야 한다. 혹시 우리가 놓친 요구사항이…
이미 3번 읽었는데. 4번째 읽을까.

D-6
회사 도착. 9시 15분.
테스트 결과 확인.
모두 통과.
다시 확인.
모두 통과.
한 번 더.
모두 통과.
그런데 이게 이상하다. 이렇게 잘 될 리가 없다.
“혹시 테스트 자체에 문제는 없나?”
팀원이랑 테스트 코드를 다시 본다. 1시간. 이상 없다.
그럼 정말 다 잘 된 건가.
아니다. 뭔가 놓친 게 있다. 분명히.
야근할까. 아니다. 일단 오늘은 자자.
한 번 자본다. 제대로.
침대에 든다. 8시간을 자자고 다짐한다.
5시간을 잤다. 깼다. 또 코드가 생각난다.
포기한다.
회사로 간다.
그냥 이런 거다
이게 펌웨어 개발자의 삶이다.
양산까지 이런 거다.
웹개발자처럼 칼퇴할 수 없다. 배포 버튼 누르고 집 가면 끝. 문제 생기면 롤백. 대면 해결.
우리는 다르다.
보드에 코드가 올라가면 끝.
그 다음부턴 고객 손에.
고객이 전원을 켜면 우리 코드가 돈다.
온도 영하 20도인 한겨울에도. 습도 95%인 욕실에서도. 시골 할머니 손에서도.
모든 상황을 예상할 수 없다.
그래서 잠을 못 자는 거다.
D-7이라는 숫자는 사실 숫자가 아니라 카운트다운이다.
남은 시간. 소진되어 가는 기회. 돌이킬 수 없는 경계선.
그 선을 넘는 순간, 우리 펌웨어는 세상으로 나간다.
그리고 나는 계속 그걸 생각한다.
밤마다.
천장을 보면서.
내일도 버틴다. 그 다음날도. D-6일 때도 D-1일 때도. 그리고 양산 나간 후에도.
