코드 카타의 단점 (일명 카타)가 계속해서 개선되는

코드 카타 (Code kata) 는 각 반복마다 코드를 개선하기 위해 작은 문제를 여러 번 수행하여 프로그래머의 기술을 연마하도록 제안하는 개념입니다. 그 이름은 형태 (일명 카타)가 계속해서 개선되는 관행 인 무술 카타 와 유사하다 .

이 주제에 대한 마지막 질문 에 대한 반응 에서이 접근법의 단점이 무엇인지 알고 싶습니다.



답변

원칙적으로 코드 카타에는 단점이 없습니다. 다른 접근 방식과 다른 언어로 동일한 작업을 여러 번 수행하려고합니다. 그러나

  1. 직장에서 소개하기는 다소 어렵습니다. 귀하는 일반적으로 능숙하거나 합리적으로 생산적이어야합니다. 나는 그것이 유용하지 않을 것이라고 말하지는 않습니다 (새로운 시간에 쓸 좋은 코드를 지불하는 것보다 새로운 고용 기술을 향상시키는 데 시간을 투자하는 것이 좋습니다).
  2. 실제로 어떤 의미에서 개선을 시도 해야합니다 . 동일한 코드를 같은 방식으로 천 번 작성해도 향상되지는 않습니다 (대신 둔하게 만듭니다). 이전 오류, 잘못되었거나 예상대로 해결되지 않은 문제를 이해해야합니다. 이것이 가장 중요한 부분입니다. 자기 공부의 한 형태이므로 공부 해야합니다 .

답변

무술 카타와 같은 카타 프로그래밍은 주로 형태 오버 기능에 관한 것입니다. 우아한 코드를 작성하도록 지시 할 수도 있지만 코드를 작성하는 문제를 해결하도록 지시하지는 않습니다. 프로그래머로서 개선하는 더 좋은 방법은 실제 문제 해결이 필요한 퍼즐을 풀고 코드 카타가 결코 가르쳐 줄 수없는 방식으로 잘 짜여진 코드의 가치를 가르쳐 줄 더 큰 프로젝트에서 작업하는 것입니다.

따로, 나는 ‘코드 카타’와 ‘소프트웨어 장인 정신’과 같은 용어는 소설이나 유용한 것을 묘사하는 것보다 직업을 낭만적으로 만드는 것에 관한 것이라고 생각합니다.


답변

코드 카타는 시간이 걸립니다.

풀 타임 개발자이자 아버지이기 때문에 컴퓨팅을 취미로 만들고 싶지 않습니다.

그리고 내 상사가 현재 프로젝트와 관련이없는 응용 프로그램을 개발하는 데 비용을 지불한다고 생각하지 않습니다.


답변

권투 선수로서, 나는 카타 뒤에있는 원칙에 동의하지 않아야합니다. 실제로 유용하기에는 너무 단단합니다. 링에서, 당신은 자유 유동 환경에서 배운 원리를 적용하는 방법을 이해해야합니다.

이것은 기술의 학습과 개선이 수행되어서는 안된다고 말하는 것은 아닙니다. 가방을 연습하면 펀치를 사용하고 던지는 방법을 느낄 수 있습니다. 카타와 같습니다. 그러나 그것은 엄격하지 않습니다. 당신은 동시에 많은 것들을 연습하고, 가방 주위를 이동하고, 안정된 플랫폼에서 던지고, 조준하고, 호흡하며, 목록이 계속됩니다.

가장 중요한 것은 모든 것이 실제로 사용될 방식으로 함께 학습된다는 것입니다. 가장 아름다운 for 루프를 작성할 수 있지만 프로그램에 맞추는 방법을 이해할 수 없다면 어떤 것이 좋습니까?

연습을 원한다면 도구를 직접 만들거나 사용하는 도구를 사용하는 것이 더 좋습니다. 그것은 당신의 모든 기술을 연습해야하며 결국 당신은 유용한 무언가를 가질 수 있습니다.


답변

내 관점에서 볼 때 가장 큰 단점은 끔찍하게 지루하다는 것입니다. 또한 프로그래머는 유용하거나 멋진 기능을 수행하는 소프트웨어를 개발하는 데 번창하는 것 같습니다. 코드 카타 접근 방식은 그 반대입니다.


답변

Kata는 당신이 노력해야 하는 것과 정반대 의 것을 의미합니다 .

훈련에 사용되며 기술의 기술을 보여주기 위해 고안된 무술 의 특정 운동 시퀀스 로 구성된 운동

무술에서 사용되는 Kata (원산지 : 1950–55; <일본어 : 모양, 패턴)라는 용어는 터치 타이핑 과 같은 근육 기억의 암기에 관한 질문 입니다.

원래의 가라테 키드 에서 자동차를 왁스 칠하고 바닥을 샌딩하고 울타리를 칠하는 것은 모두 카타 스였습니다. 선생님 이 들어 와서이 중공 활동에 상황을 알려주기 전까지는 아무 의미가 없었습니다.

여러 언어에서 잘못된 문제를 해결하는 컨텍스트 재실행 문제 에 대한 멘토가 없어도 동일한 내용이 여기에 적용된다고 생각합니다 . 멘토가 없으면 개선해야 할 부분을 알려주는 것이 시간 낭비입니다.

언어 나 플랫폼의 새로운 관용구와 의미를 배우면 문제를 창의적으로 해결하는 것과 정반대입니다.

System.out.println()가능한 한 쉽게 입력 할 수 있으려면 Kata를 연습하십시오.

다른 구현 에서 문제에 대한 솔루션을 개선하고 시간 및 / 또는 공간 요구 사항을 줄이거 나 더 관용적 인 원칙을 적용 하려는 경우 Kata가 도움 이되지 않습니다 .

재 구현하는 이상 같은 일을 통해 이미 작은 증분 개선과 완벽의 의심 혜택을 위해 노력 작동 후,이 호출에 대한 인정 업계 용어 이미 있습니다 골드 도금 !

이들이 사용해야하는 용어 는 동일한 언어 / 런타임 / 플랫폼에 적용될 때 리팩토링 입니다. 그리고 포팅은 다른 언어 / 실행 / 플랫폼으로 작동하는 프로그램을 이동할 때. 카타 는 의미를 완전히 이해하지 않고 힙 스터, 시원하고 신비로 들리기 때문에 잘못 선택되었을 것입니다.

계획, 경험 또는지도가 거의없는 다른 어려운 문제를 해결하는 것은 대부분의 개발자, 특히 주니어 개발자가 매일해야하는 일입니다.

특정 솔루션을 연마하기 위해 학계 만 동일한 운동을 반복합니다. 개발자로서 성공적인 경력을 쌓는 기술은 반복이 아니라 적응 에 있습니다.

누가 퇴근 후 공부할 필요가없는 현명한 사람들이없고, 직장에서 8 시간 동안 알아야 할 모든 것을 배울 수 있다고 누가 말합니까?


답변

나는 “카타”라는 은유가 최고가 아니라는 데 동의합니다. 가라테의 카타는 완벽하고 선명하며 자동으로 수행 될 수있을 때까지 구체적이고 개별적인 움직임을 연습하기 위해 수행됩니다. 이것은 비판적 사고와 창의성이 필요한 활동으로 잘 해석되지 않습니다. (입력하는 것이 더 좋습니다).

즉, 이름의 실패는 활동의 실패가 아닙니다. 누군가가 더 나아지기를 원하는 것을 실천하는 데 가능한 단점은 무엇입니까? 기회 비용 관점에서 시간을 낭비하는 것이 단점이지만 실제로는 투자라고 말할 수 있습니다. 따라서 주식이나 채권에 소비되는 돈이 장기적인 보호기 / 투자자에게 있기 때문에 소프트웨어 개발 기술을 실행하는 데 소요되는 시간은 소프트웨어 개발자에게 있습니다. ‘결점’이 아니라 테이블 스테이크입니다.