AI 시대에서 개발자가 시간을 써야 할 곳은 어디일까?
최근 AI로 토이 프로젝트를 진행하다가, 필터 하나를 검토 없이 승인했더니 상태 관리 구조를 통째로 다시 설계해야 했던 일이 있었다. 그 경험을 계기로, AI가 구현을 대신해주는 지금 개발자가 정작 시간을 써야 할 곳이 어디인지 정리해봤다. 결론부터 말하면, 그 판단은 뒷단이 아니라 앞단에서 이뤄져야 한다.
반복을 줄이는 것보다 역할을 드러내는 코드
클론 코딩 리뷰에서 받은 질문에 답하다 보니 컴포넌트에 옵셔널 prop이 쌓였고, 이름만으로 역할을 설명하기 어려워졌다. 컴포넌트를 나눌지 고민하던 중 리뷰어에게 "이정표"라는 개념을 듣고, 데이터 안 문자열과 JSX 안 문자열의 코드 탐색성 차이를 정리했다.
로컬 LLM과 n8n으로 구축하는 에러 분석 자동화
로컬 AI와 n8n 워크플로우 엔진을 결합해, 에러가 발생하는 즉시 원인을 분석하고 해결 방안을 제시하는 자동화 파이프라인을 구축했다. 이를 통해 에러 발생 후 최대 25초 이내에 체계적인 노션 리포트가 생성되며, 개발자는 반복적인 디버깅 작업에 소모되는 시간을 줄이고 보다 본질적인 문제 해결에 집중할 수 있는 환경을 마련했다.
실시간 통신 로직을 계층으로 정리하기
기능이 늘어날수록 비슷한 로직이 여러 곳에 흩어지고, 무언가를 고칠 때 어디서부터 시작해야 할지 가늠하기 어려워졌다. 실시간 통신 로직을 어떻게 계층으로 나누고, 처음 보는 사람도 따라갈 수 있는 구조로 만들 수 있는지 고민하게 되었다.
Node.js WAS에서 일관된 에러 처리 구조 적용하기
WAS 게시글 조회 시 return null로 인해 에러 처리가 복잡해지는 문제를 경험하고, BaseError 상속 구조와 계층별 책임 분리를 적용하여 일관된 에러 처리 시스템을 구축하였다.
OCR과 Open AI의 응답 속도 개선
계약서 OCR과 OpenAI 기능에서 약 2분이 걸리던 로딩 시간을 페이지 분할, 병렬 처리, 즉시 렌더링을 통해 18초까지 단축하며, 비동기 처리 설계 방식에 대해 고민하게 되었다.
동적 폰트 로딩 전략
손글씨 커스텀 폰트 미리보기 기능을 개발하는 과정에서, 동적 폰트를 불러오는 데 시간이 꽤 소요된다는 점을 확인했다. 이를 개선하기 위해 WOFF2, 캐싱, TanStack Query, 스켈레톤 UI를 조합하여 최적화를 진행하고자 하였다.