리핑은 원래 “제품 중심 Ruby”로 불렸던 개념으로, 스크래치 파일에서 Ruby 또는 유사-Ruby 코드를 사용하여 문제와 ‘대화’하며 설계를 발전시키는 기법입니다. 이는 실제 코드를 실행하지 않고 아이디어를 탐색하고 정제하는 과정을 포함하며, 창의성을 제품 개발 흐름에 통합하는 방법론적 접근입니다.
리핑의 필요성 및 기원
-
설계 불안감 해소: 개발 초기 막막함과 후반부 설계 불안감을 해소하기 위해 고안되었습니다.
-
빠른 피드백: 스크래치 파일에 아이디어를 던지고 Ruby 코드로 구현 가능성을 확인하며, 기존 지식을 활용하여 문제 해결 능력을 향상시킵니다. 코드를 실행하지 않고도 설계 유효성을 빠르게 판단하고 잘못된 이해를 수정하는 것이 핵심입니다.
리핑의 핵심 원칙과 효과
-
통찰력당 분당(Insights-per-minute): 통찰력 획득 속도에 따라 접근 방식을 조정하여 효율성을 높입니다.
-
설계 및 피드백 통합: 하향식 설계와 스크래치 파일의 상향식 코드 피드백을 결합하여 설계 방향을 조정합니다.
-
조직적 골격 집중: 비즈니스 로직보다는 시스템의 ‘조직적 골격’에 집중하여 객체 배치, 상호작용, 필요한 상태 등을 탐색합니다.
-
문제 조기 발견: 협업 워크숍에서 참가자들이 시스템의 악용 가능성을 빠르게 발견한 사례처럼, 리핑은 잠재적 문제점을 조기에 식별하고 이해관계자와의 논의를 통해 설계를 개선하는 데 도움을 줍니다.
-
강력한 대안 제시: 여러 설계 옵션을 미리 탐색하여 각 옵션의 장단점을 파악하고, 더 강력하고 근거 있는 추천을 가능하게 합니다.
-
창의적 탐색: Jeremy Smith가 ‘리핑’이라 명명하고 ‘프로그래밍을 위한 재즈’에 비유했듯이, 이 과정은 끊임없이 탐색하고 반응하며 설계를 발전시키는 즉흥적이고 창의적인 특성을 가집니다.