최근 시작한 외주 이야기. 이 일은 오픈소스 프로젝트에 필요 없는 기능 뜯어내고 K 스타일로 새로 꾸미는 그런 작업이다. 그 오픈소스는 백엔드가 Go 4만, 프론트 리액트 코드가 4만 줄인 스타 수 10k 정도의 프로젝트이고 라이센스는 MIT다.
다국어 지원을 한다고 주장하고 있지만 까보면 i18next.t()로 묶어놨을 뿐, 다국어 키 관리를 안 해서 t('관리자에게 연락하여 시스템 설정에서 공지를 등록해 주세요') 이런 코드가 많은데 이게 다 중국어다. locales 디렉토리 보면 zh.json은 비어있고, en.json에 자연어 키를 써서 채워둔 그런 패턴. 소스코드 주석도 중국어고, 백엔드 로그도 다 중국어로 남기고 있다. 코드 딱 보면 뭐 하는 건지 추측은 되는데 막 한자로 危险操作! 이런 거 써 있으면 좀 무섭지 않겠는가. (危险操作는 Dangerous operation이다)
이대로는 코드베이스 파악이고 뭐고 어렵겠다 싶어서 Claude Code한테 8만 라인 전부 다 뒤져서 중국어를 싹 다 한국어로 번역하고, t()로 묶어둔 거 있으면 그것도 다 풀어버리고 i18next 의존성도 없애라고 했다.
그렇게 클코는 2시간 동안 혼자 열일하다가 토큰 다 썼다고 배째고 쉬러갔다. 2시간이나 했으니까 꽤 많이 했을 거라 생각했는데, 확인해보니 누락된 작업이 많아서 실망스러웠다. 예를 들어 40KB 파일에 중국어 50줄이 있는데 달랑 20줄만 바꿔놓고 나머지 30개는 건드리지도 않고 아무 말도 안 하는 식이다. 술 먹고 작업하는 개발자를 보는 것 같았다. 레딧을 뒤져보니 나와 비슷한 경험을 한 사람들이 많이 보였다. 코드 수정 작업 요청 시 계획은 잘 만드는데, 수정하는 액션 쪽에서 실수가 많고 느리다는 것. (String to replace not found 관련 오류. 문자열 치환시 sed 쓰라고 가이드하는 것도 방법이다)
그래서 파이썬 스크립트를 하나 만들었다. 코드 내에 중국어('\u4e00' <= char <= '\u9fff')를 찾아서 1) 파일 경로와 2) 해당 파일 내 중국어가 포함된 줄 번호와 텍스트를 표시하는 간단한 스크립트다. 이 스크립트 주면서 "야, 너 뻘짓하지 말고 이 스크립트 계속 돌려서 여기서 표시한 파일 속 중국어만 번역해라. 이 스크립트가 더 이상 중국어 없다고 할 때까지 계속해" 하니까 30분만에 훨씬 더 많은 일을 해냈다. 이 파이썬 스크립트도 Claude Code로 만들긴 했다.
그다음에는 i18next.t() 이슈. t() 해체 작업을 시켰는데 클코가 grep이나 rg 돌리면서 자꾸 t(로 검색을 해서 쓸데없는 매치를 확인하느라 토큰을 낭비하고 있었다. 그래서 word boundary 쓰도록 \bt( 이 정규식을 쓰라고 알려줬더니 작업 속도가 빨라졌다.
이런 일괄 작업을 시킬 때는 기계 친구들이 잘 못하는 일을 파악해서 관련 프로그램을 만들어주고 그거 쓰라고 가이드하면 생산성이 많이 올라간다. AI가 뭘 잘 못하면 옆에서 사람이 도와주면 될 일이다.
Continue Reading
Discover more thoughts and insights
어차피 나갈 건데- 하니까 일이 잘된다
월요일에 회사에서 잠시 빡친 뒤 마음이 아주 편안해졌다. 아무런 기대도 안 하고 건조한 자세를 유지하며 해야 할 말 다 하는 그런 거다. 어찌 보면 곧 다신 안 보게 될지도 모르는데 인간으로서의 개개인은 싫은
짱돌과 맨발로 일하던 습관
일에 대한 짤막한 고민 하나. 짱돌 하나 들고 맨발로 질주하며 때려잡는 식으로 일하던 습관을 버리기가 쉽지 않다. 기본적으로 웬만한 회사 문화에서는 짱돌에 맨발은 허용되지 않는다. 다 갖춰입고 정리된 무기를
알랭 드 보통 - '왜 나는 너를 사랑하는가' 中
최근 누적된 육체의 피로로 정서까지 오염되가고 있습니다. 회복 시도 3일째인데, 완쾌되려면 1주일은 족히 더 쉬어야 할 것 같네요. 알랭 드 보통의 '왜 나는 너를 사랑하는가' 를 읽다가, 문득 블로그에