더북(TheBook)

카타

카타는 ‘품세’라는 뜻으로 일본 무예 훈련에서 나온 용어다. 소프트웨어 카타는 작은 훈련용 코딩들을 의미한다. 이러한 훈련 문제들은 이해하는 데는 몇 분이면 충분하지만 해결하기에는 꽤 복잡하다는 특징이 있다. 보통 한 문제를 푸는데 몇 분에서 몇 시간 정도가 걸리는데 이때 새로운 테크닉과 접근방법을 훈련하는 데 활용할 수 있다. 틱-텍-토 게임 구현이나 볼링 점수 계산같은 것이 카타의 예이다. 이러한 카타들을 이용해 익숙하지 못한 테스트 주도 개발, 다른 개발 언어, 새로운 프레임워크 같은 것들을 연습할 수 있다.

애자일 커뮤니티에서는 카타에 비판적인 시각도 있다. 단순한 작업을 반복하는 바보같은 일이라고 생각하는 이들도 있다. 일정 부분 사실일 수도 있다. 이러한 비판에는 카타라는 어원 자체가 육체적인 반복 활동을 하는 무예 훈련에서 왔다는 데도 배경이 있을 것이다. 코딩 훈련용 카타가 처음 나왔을 때도 아마 같은 의도였을 것이다. 이미 익숙한 테크닉과 도구를 이용해서 카타를 하는 것은 크게 의미가 없다.

훈련을 통해 우리가 익숙하지 못한 새로운 테크닉이나 기술에 능숙해지려고 코딩 카타를 하는 것이다. 이러한 훈련을 여러 번하면 실제 현장에서 훨씬 더 편안하고, 준비가 충분히 되었다는 느낌이 든다. 공연 전에 몇 시간이고, 몇 날이고, 몇 달이고 반복 훈련을 하는 음악가들을 상상해보자. 카타로 이루려는 바가 바로 그러한 것이다.

같은 코딩 카타를 반복하더라도 매번 다른 테크닉, 다른 언어, 다른 기술, 다른 접근 방법을 사용해야 효과를 최대화할 수 있다. 이렇게 함으로써 새로운 것을 시험하고 비교해 볼 수 있다. 사실 일본의 무예 훈련에 대한 정확한 용어는 ‘게이코’다. 이미 세계적으로 개발자들이 카타라는 용어를 사용하고 있기 때문에 그냥 카타라고 표현한다.

다음의 웹사이트들에서 유익한 코딩 카타들을 다양하게 찾을 수 있다.

 

codingkata.org

codekata.pragprog.com

kate.softwarecraftsmanship.org

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.