올 해의 휴가도, 쉴 휴에 집 가, 진정한 휴가였다.
폭염에 어디 놀러 가겠다는 계획은 처음부터 없었고, 아킬레스건염으로 다리가 부어서 어딜 다닐 형편이 안되었다.
휴가기간 중 1일, 3일부터 5일까지, 그리고 마지막 날인 8일. 그리고 오늘(9일) 총 여섯 번 정형외과에 갔다. 허리주사 3회, 발목주사 3회, 그리고 갈 때마다 냉각치료와 체외충격파 치료, 물리치료를 한 세트로 받았다. 허리주사는 엄청 아빴다. "조금 아프실 거예요"라는 말이 얼마나 광범위한 표현인지 매번 새로 배운다.
병원에서 돌아오면 발을 올려놓고 앉아 있는 것 말고는 할 게 없었다. 그래서 노트북을 열었다. 결과적으로 이번 휴가는 '몸은 쉬고 머리는 일한' 기간이 되어버렸는데, 나쁘지 않았다. 평소에 업무시간 전후로 짬을 내서 만들던 것들을, 처음으로 끊기지 않고 끝까지 밀어붙일 수 있었다.
[첫날의 삽질: 클로드가 매번 사라진다]
휴가 초반, 재부팅할 때마다 클로드 데스크톱을 다시 설치하고 있다는 걸 깨달았다. 알고 보니 계속 다운로드 폴더의 설치 파일을 실행하고 있었던 것. 제대로 설치해두고 시작 메뉴에 고정하니 해결됐다. 몇 주를 그러고 있었나 싶어서 좀 허탈했다.
내친김에 "바이브 코딩을 주로 하는 사람은 클로드를 어떻게 써야 잘 쓰는 건가"를 정리했다. 결론은 세 가지였다.
- clasp로 GAS 프로젝트를 로컬에 내려받고 Claude Code와 붙이면 복붙 왕복이 사라진다
- 앱마다 프로젝트를 따로 만들고 지식 영역에 전체 코드와 규칙을 넣어둔다
- CLAUDE.md에 코딩 컨벤션을 박아두면 매번 설명할 필요가 없다. 한 파일이 2,000~3,000줄을 넘어가면 전체 재작성 방식은 한계가 온다는 것도 확인했다. 내가 만든 것들 중 이미 그 선을 넘은 게 여럿이다.
[만들고, 고치고, 배포판까지]
휴가 내내 붙잡고 있던 건 결국 하나의 흐름이었다. 업무용으로 만들었던 앱들을, 다른 기관도 쓸 수 있는 형태로 정리하는 일.
1. 사진 관리 웹앱
파일명 자동 생성 규칙, 태그 검색, 대표사진 별표, EXIF 촬영일 추출, 초상권 동의 관리까지 붙였다. 가장 크게 손본 건 업로드 성능이다. 50장 올리는 데 20~30분 걸리던 걸, 시트 접근을 앞뒤로 몰아넣고 파일 전송만 병렬로 돌리는 구조로 바꿔서 5~7분까지 줄였다. 이미지 압축은 일부러 넣지 않았다. 소식지 인쇄와 영상 편집에 쓸 사진이라 원본 해상도가 필요하다.
2. 현장실습 관리시스템
실습 서식 11종을 스키마 기반 렌더러로 구현했다. 실습생 프로파일부터 실습계약서, 실습일지, 기관분석보고서, 중간·종결평가서까지. 배포용으로 기관 정보를 config.js 하나로 몰아넣고, 설정이 제대로 됐는지 스스로 점검하는 setup.html도 만들었다. Firestore 규칙에서 이메일 대소문자 때문에 권한 오류가 나던 것도 이때 잡았다.
3. 통합결재시스템
이번 휴가에서 가장 아찔했던 순간. Firestore 보안 규칙에 심각한 구멍이 있었다. 여러 match 블록이 같은 경로를 덮을 때 OR로 동작한다는 걸 놓쳐서, 승인된 사용자면 누구나 스스로를 관리자로 올릴 수 있는 상태였다. 세 개 프로젝트의 규칙을 전부 다시 썼다. 읽기 최적화도 함께 진행해서, 전체 컬렉션을 훑던 화면 일곱 개를 기간·연도 범위 쿼리로 바꿨다.
휴가 중에 이걸 발견한 게 다행이라고 해야 할지, 휴가 중에도 이런 걸 보고 있는 게 문제라고 해야 할지 모르겠다.
4. 그 외에 손댄 것들
- 관사연 회계시스템: GAS에서 Firebase로 이관. 4단계 예산 체계(관/항/목/세목), 추경 지원, 원천징수 관리 탭까지
- 공정채용 시스템: 블라인드 평가, 일괄 채점표, 심사위원 캔버스 서명, 감사 로그
- 신입직원 온보딩: 선배 꿀팁 게시판, 주제 태그 사전, 홈 화면을 '집계 대시보드'에서 '내 여정 인포그래픽'으로 전환
- 후원품 관리: 입고-배부 연동, 환가액 자동 계산, 사진 포함 외부 공유용 보고서
- 인트라넷: 공통 과업 대리 체크, 채팅 파일 첨부, JSON 편집기 안전장치(백업·이력·오류 위치 표시)
- 법인 ESG 성과관리: 지표별 입력 주기 대응, 달성률 산식 수정, 엑셀 일괄 등록
- 차량관리: 계기판 기준 주행거리 산출, 외관점검 사진, 차량 등록·폐차 관리
- 상장발급대장 / 영수증 발급 / 직원 내부교육: 각각 배포 패키지와 설치 가이드까지
적어놓고 보니 좀 많다.
[도구를 만드는 도구]
휴가 후반부에는 방향이 살짝 틀어졌다. 앱을 만드는 대신, 앱 만드는 일 자체를 정리하는 것에 시간을 썼다.
30개가 넘는 앱을 굴리다 보니 문제가 명확해졌다. 로그인이나 CRUD 같은 코드를 매번 새로 쓰고 있고, 배포와 버전 관리가 머릿속에만 있고, 어떤 앱이 지금 어떤 상태인지 나조차 헷갈린다.
그래서 '바이브코딩 개발허브'를 만들었다. 프로젝트 목록과 상태, 변경 이력 타임라인, 재사용 모듈 라이브러리(시트 CRUD, LockService 충돌 방지, 승인 기반 접근제어, 초성 검색 등 8개), 앱 이름과 필드만 넣으면 ES5 GAS 뼈대를 뽑아주는 스캐폴드 생성기, 11항목 배포 체크리스트. 온전히 나만 쓰는 도구다.
웹앱 공유 자료실도 이번에 형태를 갖췄다. 'VibeCoding Web App for Social Work Practice'라는 이름으로, 그동안 만든 것들을 승인제로 공유하는 페이지다. 다른 실무자가 자기 앱을 등록할 수 있는 경로도 열어뒀다. 피드백과 별점, 업데이트 알림, 다운로드 통계까지.
[그리고 게임 하나 - 바이브코딩 가능성 테스트]
7일 밤에는 유튜브를 보다가 게임을 만들었다. 브라우저에서 도는 1인칭 슈팅 게임. 레이캐스팅 엔진을 Canvas API로 직접 짜고, 총소리는 Web Audio 오실레이터로 합성했다. 외부 라이브러리 하나 없이 HTML 한 파일.
그동안 업무용 앱만 만들었는데, 이런 경험도 필요하다.
[해보고 싶은 것]
재물조사 이야기가 마지막에 나왔다. 매년 목록 대조하고, 라벨 뽑아서 수천 개 비품에 붙이는 일. 영구 QR 라벨을 한 번 붙여두고 모바일로 스캔하는 방식으로 바꾸면 어떨까 하는 구상까지 해뒀다. 스캔하면 시각과 조사자가 자동으로 기록되고, 조사됨/미조사/위치변경/신규발견이 자동 분류되는 구조.
비용도 계산해봤는데, 3만 개 자산 전수조사 한 번에 Firestore 비용이 0.04달러 정도다. 문제는 건수가 아니라 '한 번에 몇 건을 읽느냐'라는 것. 페이지 로드할 때 전체 컬렉션을 통째로 불러오는 짓만 안 하면 된다.
마무리
휴가가 끝났다. 발목은 아직 완전하지 않고, 다음 주에도 병원에 가야 한다. 체외충격파는 여전히 안 반갑다.
그래도 여드레 동안 뭔가를 끊기지 않고 끝까지 밀어붙여본 건 오랜만이었다. 평소에는 회의와 결재 사이 30분씩 쪼개서 만드는 것들이라, 늘 절반쯤에서 멈춰 있곤 했다. 이번엔 배포판과 설치 가이드까지 갔다.
물론 이게 '잘 쉰 것'인지는 모르겠다.
'사회복지 Vision > 사회복지관의 사회복지사 Worker' 카테고리의 다른 글
| 1년간의 바이브코딩 경험이 내게 준 것 (0) | 2026.08.07 |
|---|---|
| 사회복지사가 직접 만든 웹앱, 이제 나눕니다 (0) | 2026.08.04 |
| 사회복지사로서 살아간다는 것 (0) | 2024.08.14 |
| 업무용 메신저 슬랙과 카카오톡의 장단점 (6) | 2024.03.07 |
| 차량일지 자동화 (0) | 2024.02.27 |