들어가면서
오늘 하루를 한 줄로 적으면 이렇다.
“시간을 빌리는 일이 가장 큰 일이었다.”
코드를 짠 시간보다, 사람들에게 “이건 좀 이따가 합시다” 라고 말하기 위해 쓴 시간이 더 길었던 것 같다. 자려고 누우려다가, 그 양해를 구하는 메시지들을 다시 떠올려서 한 번 적어 두기로 했다.
아침 — 작은 토큰이 큰 변경이 되는 순간
오전부터 같은 영역에 두 가지 변경이 동시에 들어왔다.
- 한 가지는 문구(텍스트) 수정
- 다른 한 가지는 폰트 크기 수정
각각만 놓고 보면 작은 작업이다. 그런데 폰트 크기는 그 한 줄로 끝나지 않는다.
- 줄바꿈이 바뀌고,
- 옆 영역과의 간격이 바뀌고,
- 단말이 좁아질 때 개행 위치가 바뀐다.
말하자면 “폰트 한 줄짜리 수정” 처럼 보이지만, 실제로는 레이아웃 토큰을 흔드는 일이다. 토큰 한 칸이 움직이면, 그 칸을 기준으로 잡아 둔 모든 칸이 같이 미끄러진다. 이런 종류의 변경은 작아 보이지만 검증 면적이 가장 큰 변경에 속한다. 코드 diff 의 크기와 검증해야 하는 화면의 수는 비례하지 않는다.
오전에 정기 배포 라인이 있었고, “되는 데까지 같이 태우자” 의 유혹이 있었다. 하지만 짧은 시간 안에 코드 수정 + 디자인 검증 + 단말별 확인까지 다 끝낸다는 건, 솔직히 무리에 가까웠다.
“기분이 나빠서가 아니라, 위험 요소가 있어서 시간 잡고 수정하자고 요청드린 거예요.”
자칫 톤이 차가워 보일까 봐, 메시지에 한 줄 더 붙였다. 시간 분리를 요청하는 일은 의외로 그 자체가 노동이다.
정오 ~ 오후 초 — 머지하고, 점심 먹고, 디버깅
배포 라인은 본 작업만 안전하게 태웠다. main 머지가 들어가자 한숨이 한 번 나왔다.
오후엔 한참 미뤄두었던 이벤트 로그 추가 작업으로 넘어갔다. 노출/클릭 단위로 몇 개를 더 붙여야 했다. 그런데 dev 환경 로그를 들여다보니, 어떤 이벤트의 payload 가 스키마를 통과 못 하고 있었다.
$.some_field is not defined in the schema and
the schema does not allow additional properties
평소엔 별 거 아닌데, 이미 절반쯤 정신이 빠진 오후엔 묘하게 무겁다. “이 필드가 진짜로 불필요한 건지” 를 데이터 쪽에 확인 부탁드리며 다음 단계로 넘어갔다.
이벤트 로그 작업의 절반은 “이게 어떤 화면의 어떤 동작인지 사람의 말로 정리하는 일” 이라는 걸 매번 새삼 느낀다. 코드를 치는 시간보다, 어디서 왜 보내는지 명세를 또박또박 적는 시간이 길다.
오후 중반 — 값이 없을 때의 기본값
서버 응답의 어떤 값이 비어 있을 때, FE 가 화면에 무엇을 보여줄지에 대한 정책이 단단하지 않았다.
- 어떤 화면에서는 비면 0,
- 어떤 화면에서는 비면 특정 기본 숫자,
- 어떤 화면에서는 영역 자체를 숨김.
이게 하나의 영역에서 시작해 다른 영역으로 흘러가다가, 결국 “값이 없을 때 어떻게 할지” 라는 같은 질문에 화면마다 다르게 답하고 있다는 사실이 드러났다.
UI 입장에서는 한 가지가 비면 옆 영역도 어색해진다. 그래서 정리는 두 갈래로 나뉘었다.
- 응답값에 따른 기본값 정책을 한 곳에 적어 둔다.
- 그 기본값에 따라 문구/영역을 숨기거나, 다른 기본 문자로 바꾸는 흐름을 합의한다.
이건 내일로 미뤘다. 오늘 끝낼 만한 결이 아니었다.
저녁 직전 — 짧은 두근
저녁 6시쯤, 평소엔 잘 안 보던 채널의 멘션이 왔다. 보낸 분이 첨부한 페이지 URL을 보고 잠깐 심장이 떨어졌다.
“어… 이거 왜 이렇죠?”
조금 정신을 차리고 나서 보니, 그 페이지는 내가 담당하는 영역이 아니었고, 멘션은 “이 페이지 패딩 좀 같이 봐주실 수 있어요?” 의 의미였다. 의도는 협업 요청이었던 것이다.
“아 놀랐어요… 장애 난 줄 알고요.”
라고 솔직히 적었다. 한 호흡 가다듬고 패딩 정책을 같이 보기로 정리. 이런 종류의 가짜 두근거림이 하루에 한두 번씩 있다. 짧고 강하고, 그리고 몸에 흔적이 남는다.
저녁 — 빈 응답, 그리고 마지막 PR
본 작업으로 돌아오자, 이번엔 “리스트성 응답이 빈 배열로 내려오는 케이스” 가 등장했다. 평소엔 한 개 이상 들어 있을 거라고 가정하던 데이터인데, 그 가정이 깨지면 영역 전체가 자기 이전 상태로 되돌아가야 하는 상황이었다.
“이건 안 된다는 것이죠?”
라는 문장을 쓰면서 잠깐 멍하니 있었다. 정책 합의가 또 한 단계 필요해진 거였다.
그래도 오늘 안에 마무리할 수 있었던 건, 여백/문구 수정 PR 한 건을 깔끔히 올리고 dev 환경에 태운 것. 화살표 간격은 디자인 가이드 최대치 안쪽으로 들어가도록 한 단계 줄여 잡았다. 디자인 리뷰까지 마치고, 배포는 내일이다.
마치며 — 오늘의 한 줄
오늘 가장 잘한 일을 하나 꼽으면, “오전 라인에 같이 태우지 않은 결정” 이었던 것 같다. 잘못된 시간을 빌려 쓰면, 결국 다음 날의 시간을 두 배로 갚게 된다. 그걸 알고 있어서, 오늘은 하루분의 시간만 빌려 썼다.
“기분 나빠서가 아니라 위험 요소가 있어서요 — 시간 잡고 천천히 합시다.”
이 한 마디를 쓸 수 있는 하루는 비교적 좋은 하루다. 내일은 그 빌린 시간을 잘 갚는 날이 되었으면 좋겠다.