레몬베이스 Frontend 설계 지침서
소속: 레몬베이스 Lemonbase
레몬베이스 Frontend 설계 지침서는 레몬베이스의 엔지니어가 프론트엔드 코드를 설계하고 작성하는 사고 과정을 풀어낸 문서입니다.
엔지니어가 실천할 수 있는 가이드이자 교육 자료로 활용되며, 이해를 돕기 위한 다양한 문제 해결 사례를 다루고 있습니다.
TF를 결성하고 이끌어 표면적인 현상이 아닌 문제의 본질을 밝혀내고, 팀 내 갈등을 유발하던 코드 논쟁에서 합의를 이끌어낼 기준점을 제시해, 팀의 역량을 강화하는 데 집중했습니다.
진행 과정
리더십과 챕터의 기대로부터 TF 결성
- 맥락:
- 회사의 전략 변경에 따라 제품 안정성과 팀 생산성 향상을 위한 기술 부채 청산을 과업으로 지시
- 챕터 구성원 투표를 통해 구체적인 과제와 우선순위를 결정
- 마침 목표 도메인에 Layered Architecture를 적용·검증하고 있었기에 해당 과제를 담당
- 해결해야 하는 문제:
- 개인·스쿼드별 코드 작성 패턴이 달라 코드 이해와 리뷰 비용 증가
- 좋은 코드에 대한 개인의 판단 기준이 일치하지 않아 의사결정에 긴 시간 소요
서베이 배포 및 원온원 미팅으로 인식 수집·해석
- 구성원들은 각자 다음 상황을 나쁘다고 인식함:
- 요구사항을 수용하지 못하는 기존 설계에 덧씌워진 코드로 복잡도 증가
- 역할을 알 수 없는 긴 코드로 작성된 구현체·파일
- UI를 그리는 데 적합하지 않은 데이터·타입 구조 설계
- 깊은 컴포넌트 트리와 Context API로 숨겨진 의존성
- 아무런 제약·판단 없이 다른 모듈을 가져와 사용하도록 구현체를 수정하는 행위
- 우발적 중복을 추상화하여 재사용하는 행위
- 다음 주제에 자신감이 낮은 구성원들이 많음 (답변마다 점수에 큰 편차를 보임):
- 확장성·재사용성을 확보한 컴포넌트 설계
- 비즈니스 로직 관리
- 팀 내에서 의견 충돌이 빈번한 키워드:
- 추상화, 응집·결합, 가독성
- 기타 분석 결과:
- 나쁜 코드가 일상적으로 생산·지속되는 상황으로 인해 과반수의 동료가 불편을 겪음
- 코딩 컨벤션은 업데이트가 늦고 코드베이스는 이미 다양한 패턴이 혼재되어 혼란스러움
- 일부 동료는 변화에 동의하지 않고 피드백을 개인의 선호로 받아들여 설득에 어려움을 겪음
- 업계에 알려진 문제 해결 사례를 팀의 코드베이스에 적용하는 데 어려움을 겪거나, 팀의 상황과 다르다고 단정하여 적용·검증 시도조차 못 함
TF의 판단
- 현재 지속되는 의견 충돌은 해결 시도 없이 1년 이상 지속되었으므로 건강한 충돌이 아님
- 자신감 점수의 편차가 큰데도 갈등이 지속된다는 점은 오히려 높은 자신감을 가진 구성원들이 충돌을 일으킨다는 모순을 시사함
- 핵심 문제는 1명의 반대만으로도 합의에 이르지 못하고 개선을 시작할 수 없는 의사결정 구조 자체에 있음
- 그러나 동료가 납득하지 못한 규칙을 강제하기보다 저항 요인을 먼저 해소해야 하며, 강제성을 띄는 의사결정·실행 구조는 이를 보조하는 수단이어야 함
- 컴포넌트 설계와 비즈니스 로직 관리는 맥락에 따른 주관적인 판단이 필요한 영역으로, 코딩 컨벤션과 같은 규칙 모음만으로 완벽히 해소할 수 없음
- 코드 작성 패턴을 통일하는 것보다, 무의식적으로 반복되거나 좋은 코드로 오인되는 안티패턴을 차단하는 일이 시급함
- 동료들이 근거와 사례를 바탕으로 건강하게 의견을 나누고, 코드베이스 개선과 개발자로서의 성장을 지속할 수 있는 문화가 필요함
문제 해결 시도
- 프론트엔드 설계의 사고 과정을 설명하고 이해를 돕는 지침서 제작, 규칙 대신 교육·학습에 초점
- 컴포넌트 확장성·재사용성 확보와 비즈니스 로직 관리를 위한 실천 가능한 최소한의 가이드 제시
- 팀 내 문제 해결 사례 공유, 업계의 일반적인 접근 방식으로도 팀이 겪고 있던 문제를 해결할 수 있음을 증명
- 모두가 문제 해결 사례를 기록·공유하고 의견을 나누며 지침서를 개선할 수 있도록 공간 마련
TF의 성과
- 구성원 80% 이상의 동의를 얻어 팀이 따라야 할 지침으로서 공식화, 리팩터링과 코드 리뷰의 판단 근거로 활용
- 무한한 논쟁 대신 ‘Disagree and Commit’ 원칙에 따라 일단 실행하고 피드백을 바탕으로 개선할 수 있게 됨
- 리더의 요구사항·기대를 넘어 표면적인 현상보다 본질적인 문제를 밝혀냄
- 동료들이 지침서를 따라 리팩터링하고 경험을 공유하는 모습을 보여, 실질적으로 동작하고 있음을 확인
담당 역할
- TF 결성 및 주도, 퍼실리테이션
- 원온원을 통한 동료들의 인식 수집
- TF 동료들과 함께 결과 해석, 문제 정의
- 지침서 초안 집필
- 문제 해결 사례 작성 및 공유
관련 문서
- choegyumin/agent-skills:frontend-layered-architecture — Layered Architecture 적용을 안내하기 위한 AI 에이전트 스킬 (레몬베이스와는 무관함)
- choegyumin/agent-skills:you-dont-need-react-custom-hooks — React Custom Hooks 작성 기준을 주입하기 위한 AI 에이전트 스킬 (레몬베이스와는 무관함)