얼마 전 토스 종택님의 목수의 삶이라는 글을 봤다. AI니 바이브 코딩이니 하네스 엔지니어링이니 그래프 엔지니어링이니 하면서 실제 코드를 보지 않는 사람들(나 역시 그런 사람들 중 하나라는 사실을 부정하진 못하겠다)이 너무나도 많아진 현 시점에서 나에게는 너무나도 의미있는 글이었다.
나는 좋은 개발자가 거대한 추상화만 생각하는 사람이라고 생각하지 않는다. 오히려 반대에 가깝다. 높은 곳에 올라갔다가 다시 내려올 수 있어야 한다. 전체 그림을 이야기하면서도 그 그림이 어떤 작은 약속들 위에 서 있는지 알아야 한다. 반대로 작은 코드를 만지면서도 그것이 어떤 전체를 만들고 있는지 잊지 않아야 한다.
(중략)
점을 보면서 선과 면을 보고, 선과 면을 보면서 다시 점으로 내려올 수 있는 사람. 모든 추상화에는 언젠가 누수가 생긴다는 사실을 받아들이면서도, 그렇기 때문에 다시 아래로 내려가 손을 더럽힐 수 있는 사람. 그런 목수의 삶을 살고 싶다. 시대가 많이 흐르더라도 어디에선가는 못과 망치에 대한 고민을 해온 누군가를 필요로 할 것으로 믿는다.
한동안 AI의 등장에 어쩔 줄 몰라 했던 것 같다. 처음에는 이게 되네 하면서 신기해하다가 몇백억 토큰 쓰면서 이제 뭐해먹고 살지 하며 좌절도 했다가 그래도 사람이 나은 부분이 있지 하며 생각도 하다가 .. 뭐 사실 아직도 그렇다.
다만 나에게 있어 한가지 달라진 것은 개발에 대한 열정에 다시 불을 지폈다는 것. 모두가 AI를 사용해서 무언가를 만들 수 있게 되면서 시장에 제품들은 넘쳐나게 되었지만 그 중에서도 양질의 제품은 한정적이라는것. 그리고 그런 양질의 제품을 만드려면 단순히 AI에게 “해줘”하는것이 아니라 내부 설계에 대해서 구현에 대해서 이해하고 알맞은 방향으로 스티어링 해줄 수 있는 사람이 더 중요하고 더 귀해질 것이라는 것. 그런 측면에서 종택님의 “점을 보면서 선과 면을 보고, 선과 면을 보면서 다시 점으로 내려올 수 있는 사람”이라는 문장이 참 아름답다고 느낀다. 나도 그런 사람이 되고싶다.
AI라는 편리함에 취해 한동안 선과 점에는 큰 신경을 쓰지 못했던 것 같다. 그래서 최근에는 최신 AI 기술들을 놓치지 않고 따라가면서도 내가 사용하는 기술들의 실제 의도와 구현 등에 대해서도 더 자세히 들여다보면서 밸런스를 잡아가려는 중이다. 그리고 사실 이렇게 들여다보는 과정 중에서도 AI가 많은 도움을 준다. 코드베이스가 어떻게 구성되어있는지 대략적으로 설명해달라고 한다든가, 이해가 가지 않는 부분이 있으면 해당 부분을 설명해달라고 한다든가 하는것들.
공식문서며 아티클이며 블로그며 돌아다니다가 레스라는 분의 블로그도 발견했다. 우테코를 진행하고 계신 분인 것 같은데 이름이 레스이신것도 그렇고 글에 건축 관련 레퍼런스가 많은 걸 보면 건축학도이셨거나 건축에 종사하다가 개발공부를 하고 계신게 아닌가 싶은데, 생각의 깊이가 깊으시고 글을 참 잘 쓰신다. 중간중간 AI가 작성한 것 같은 문장이 한번씩 보여서 조심스래 추측해보자면, AI의 도움을 받아 초안을 작성하고 여러번 읽으시면서 직접 수정하시는게 아닐까. (사실 내가 이렇게 하고 있어서 이렇지 않을까 추측하는것이다) 어쨌든 AI를 사용하셨다고 해도 대단하고 AI를 사용하지 않으셨다고 해도 대단하다. 나도 저런 필력을 갖고싶다.
처음에는 AI한테 내 말투를 따라서 블로그를 작성하게 시켜봤는데 영 마음에 안들어서 다 내렸다. 한글 학습이 덜된건지 AI가 사용하는 특유의 그 문장들이 있다. 문장을 쓸데없이 짧게 끊어서 쓴다든지 아 뭔가 말로는 표현할 수 없는 그 기계적인 깔끔함과 무뚝뚝함이랄까. 그리고 무엇보다 스토리의 유무도 중요한 것 같다. 내가 옛날에 작성한 블로그들도 지금 보면 단순 학습을 위한 아티클들은 AI가 썼다고 해도 믿을 것 같다. 내가 실제로 어떤 의문점을 가지고 해당 기술을 파고파고 들어갔는지, 혹은 내가 실제로 어떤 문제를 정의하고 어떤 방식으로 해결했는지가 글에 드러나야 사람냄새가 난다고 느끼는 것 같다.
"일상생활의 사소한 불편함을 개선하는 프론트앤드의 매력에 빠져 있습니다." 내 첫 이력서의 첫 소개 문장이자 지금도 아이덴티티로 가져가고 싶은 (남들처럼 기술과 성과가 먼저 드러나도록 바꿔야 하나 싶기도 하지만 ..) 문장이다. 난 무언가 불편하다고 느껴지는것이 발견되면 무조건 개선하려고 한다. 내려놓은 커피와 도시락 챙기는걸 까먹지 않기 위해 도시락보 위에 텀블러와 핸드폰을 놓는다든가, 화장실 문이 자꾸 엘피장과 부딪혀서 의자 아래에 붙이는 소음방지패드를 접합점에 알맞게 잘라 붙인다든가, 회사 싱크대에 핸드워시와 세제가 매번 돌아가서 구분이 안되어서 앞뒤로 이름표를 붙인다든가, 회사 이메일 서명 생성과정과 생일 알림 등을 자동화한다든가.
내가 느끼는 불편함이 아니더라도 다른 사람이 불편함을 이야기하거나 불편할 것 같다고 생각되면 이렇게 하면 어때?하고 실제로 수정해서 제안해본다. 여자친구가 매번 교통카드를 까먹어서 불편해하면 현관에 거치대와 메모를 붙여놓는다든지, 회사 오운완 채널에서 벌금 기록을 수기로 하고 있으면 운동 완료 및 벌금 독촉까지 자동화 한다든지 하는 것들.
그리고 이런 불편함 개선은 제품에서도 계속됐다. 보드 화면에서 대용량 데이터를 불러올 때 느려지는 현상을 최적화한다든지, 탭 전환시에 상태가 사라지는 현상을 Activity로 개선한다든지, 대용량 이미지를 불러올 때 빠른 표시를 위해 점진적 이미지를 적용한다든지. 개발시에는 합성 컴포넌트와 기명 슬롯으로 화면별 UI 구성을 쉽지만 통일성 있게 지원한다든지, 빌드가 오래 걸리는것을 최적화한다든지, 스토리북을 도입해 디자이너와 소통을 원활하게 한다든지, 배포 릴리즈 노트를 자동화해 소통 리소스를 줄인다든지.
이런 노력들이 정말 (내 입으로 말하긴 뭐하지만) 셀 수 없이 많은 것 같다. 회사 내부에서 어드벤트 캘린더 이벤트 사이트로 시작해서 컬쳐제품이 된 똑똑월드도 그렇고, 직접 만들어서 사내에서 사용하고 있는 출근과 스트레칭 알림 앱 등등. 그리고 이렇게 시스템을 구축하고 하나씩 개선해나가면서 제품의 일관성과 구성원의 효율성 증가를 가져오는 부분이 나에게는 아주 매력적이고 재미있는 일인 것 같다. 그리고 이제는 작은 팀에서 벗어나서 더 큰 팀의 효율성을 획기적으로 개선하는 일을 해 보고 싶다. 그리고 이런 시스템에 대한 고민을 나눌 수 있는 동료가 있으면 좋겠다고 생각했다.
얼마 전 당근의 디자인 엔지니어 공고를 보고 가슴이 뛰었다. 정말 모든 부분이 내가 원하던 JD라고 생각했다. 정말 내가 좋아서 해오던 그리고 하고 싶었던 일이라고 생각했다. 관심이 생겨서 당근 디자인시스템 팀을 찾아보니 평소에 아티클을 구독하고 있던 현수님이 소속되어 계시더라.
AI 시대가 되면서 코드를 작성하는 비용이 극단적으로 낮아졌고, 그에 따라 일관적인 코드를 작성하도록 하는 것이 더욱 중요해졌다. 일관적인 결과물을 내기 위해서는 코드 자체가 일관적인 기준을 가지고 설계될 필요가 있다. 일관적인 기준을 가지고 설계된 코드는 일관적인 패턴을 가질테고 그러한 패턴들이 반복될수록 AI도 동일하게 구현해 낼 수 있다 (혹은 구현하도록 강제할 수 있다). 모델과 컨텍스트는 계속해서 발전하고 커질테고 그렇다면 중요한것은 변하는 모델이 아니라 변하지 않는 판단, 업무 프로세스 등의 맥락을 모으고 구조화하고 주입하는데에 있다. 그리고 디자인시스템이 바로 UI/UX 혹은 컴포넌트 사용패턴에 대한 SOT가 되어야 한다.
요즘 고민하고 있는것은 디자인 시스템 자체를 하나의 프로그래밍 언어로 바라보면 어떨까 하는 것이다. 최근에 본 영상에 BAML이라는 에이전트용 언어가 나오는데, 현재의 개발언어는 인간의 생산성에 치중되어 코드 곳곳에 이미 슬롭이 존재하고 (JavaScript에서 sort시에 숫자를 문자열로 변환한다든가) 그래서 AI의 슬롭은 예견된 것이라며 말하고, 이러한 슬롭을 프롬프트가 아닌 타입과 언어 차원에서 없애자는 주장을 한다. 그래서 디자인시스템도 단순한 가이드가 아니라 규칙과 의도를 담은 코드처럼, 혹은 토스에서 보이스톤을 위해 개발한 lint처럼 시스템 차원에서 의도된 패턴을 유도할 수 있다면 일관적인 UI를 제공할 수 있지 않을까 생각했다. AST 구문분석을 통해서 코드베이스에서 자주 사용되는 패턴을 분석하고 정본화시킨 다음 lint화 시켜서 에러/워닝/인포 등의 레벨로 제공할 수 있다면? 추적 대시보드를 통해서 계속해서 패턴을 추적하고 판단을 쌓아나갈 수 있다면?
이런저런 고민을 하다보니 개발에 대한 열정이 다시 살아나는 느낌이다. 불씨는 붙었으니 이제 열심히 부채질하는 일만 남았다. 디자인시스템에 대한 고민을 같이 나누고 토론하고 UIUX, DX적으로 치열하게 고민하고 타협하지 않고 싶다. 그리고 그렇게 발전시킨 시스템이 실제 내 주변 사람들, 그리고 나아가 서비스를 사용하는 수많은 유저들을 편리하게 할 수 있으면 좋겠다. 언젠가 대규모 디자인 시스템 팀에 합류할 날을 그리며 아자쓰 !

