통합테스트를 진행하던 중 함께 일하는 기획자 사원분이 말했다.
우선 클론코딩으로 빠르게 확인해 봤는데
고쳐야 할 부분이 꽤 많이 보이더라고요.
클론코딩의 개념
위 사례에 등장하는 '클론코딩'이 무엇인지 개념부터 살펴보자.
클론코딩(Cloning Cording)이란?
특정 프로젝트, 웹사이트, 앱, 또는 서비스를 모방하며 개발을 학습하는 방법론이다. 이는 유명한 제품이나 서비스를 그대로 복제(클론)하는 과정에서 기술과 개념을 익히는 데 중점을 둔다. 단순히 디자인을 흉내 내는 것뿐만 아니라, 기능 구현과 사용자 경험(UX)까지 최대한 유사하게 만드는 것이 목적이다.
이를테면 디자이너가 신입시절 해상도별 적절한 폰트 크기나 행간에 대한 감각을 익히기 위해 유명한 웹사이트를 보고 그대로 복제하여 따라 그려보는 것과 같은 방법(이 방법은 여전히 신입분들에게 추천하는 방법이다.)인데, 학습이나 프로토타입 제작을 목표로 하여 실제 널리 이용되고 있는 웹사이트나 앱의 원리와 기술 스택을 익히기 위해 모방 및 복제해 보는 방법론인 것이다. 클론코딩은 초보자부터 중급 개발자까지 매우 유용한 학습법이라고 한다.
클론 코딩의 특징
- 학습 목적으로 진행
완전히 동일한 결과물을 만들기보다, 원리를 이해하고 기술을 익히는 것이 핵심이기 때문에 "이 기능은 어떻게 구현할까?"를 고민하며 문제 해결 능력을 키울 수 있다. - 실제 프로젝트를 모방
널리 알려진 웹사이트나 앱(예: Facebook, Instagram, Netflix 등)을 대상으로 진행하여 실무에서 사용하는 기술과 패턴을 자연스럽게 접할 수 있다. - 다양한 기술 스택 활용 가능
React, Vue.js, Django, Node.js, Firebase 등을 활용하여 구현하므로 프런트엔드, 백엔드, 데이터베이스 등 전반적인 기술 스택을 다룰 수 있다.
클론코딩 작업 과정
- 클론을 진행할 목표 대상 선택
- UI/UX 및 주요 기능과 흐름 파악
- 기술 스택 선정 : 적합한 언어와 프레임워크 선택
- 기능별로 구현하며 점진적으로 완성
- 복습 및 개선 (복제를 넘어 아이디어 추가 반영)
클론코딩의 장점과 단점
👍 클론 코딩의 장점
- 실제 프로젝트 경험 축적 : 실무와 유사한 개발 환경을 간접적으로 경험할 수 있다.
- 기술 학습의 효율성 : 목표가 명확하기 때문에 학습 동기부여가 되며, 구체적인 구현 목표가 있어 빠르게 새로운 기술을 습득할 수 있다.
- 문제 해결 능력 강화 : 클론 과정에서 겪는 오류와 문제를 스스로 해결하며 개발 역량을 키울 수 있다.
👎 클론 코딩의 단점
- 창의성 부족 : 이미 존재하는 서비스를 복제하는 개념이기 때문에 창의적인 아이디어를 발휘하기 어려울 수 있다.
- 기술의 맥락 부족 : 구현하는 기술에 대한 깊은 고민과 탐색 없이 '복사-붙여넣기'로 끝날 위험이 있다.
- 일부 학습 한계 : 원본 프로젝트가 너무 복잡하면, 모든 기능을 구현하기 어렵거나 부담이 되어 포기할 수 있다.
클론코딩 관련 에피소드 사례 되돌아보기
다시 사례로 돌아오겠다. 위 내용에서 클론코딩에 대해 제대로 파악했다면 눈치챘을 것이다.
개발자가 실제 오픈을 목표로 개발중인 개발기 화면을 통합 테스트하는 상황에서 '클론코딩으로 확인해 봤다.'라고 표현하는 것은 해당 기획자가 개념을 잘못 알고 사용했을 확률이 아주 크다.
물론 '특정 기능이나 UI를 빠르게 모방하여 테스트해 봤다'는 의미일 수 있으나, 당시 진행했던 프로젝트의 서비스는 서비스 특성상 특별히 생소한 기술이 필요하지 않았을뿐더러 리뉴얼 프로젝트여서 기술적으로 기존 운영되고 있는 것과 비교했을 때 엄청 새로운 기능이 추가된 게 없었다. 다시 말해 굳이 통합테스트 과정에서 모방할 대상도, 모방을 진행할 필요도 없었다는 것이다.
기획자가 이 용어를 사용한 이유를 추측해 보자면, 아래 두 가지 정도로 좁혀진다.
1. 미완성된 상태라는 의미를 전달하고자 함 : '요구사항 및 UI가 제대로 구현된 개발 결과물이 아닌, 기대 수준에 미치지 못하는 미완성 상태'로 느껴졌음을 말하고 싶었음
2. 용어를 잘 못 이해함 : 개발기 화면에서 일부 Margin이나 폰트 사이즈, 굵기 등을 바꿔 테스트해 본 것을 클론코딩이라고 생각함