개발에 대한 자세 이야기

모책에서 읽은 좋은 구절이다.

무술에 형과 술이 있다.
술은 술기이고 형은 형식이다.
그리고 일종의 직선적 단계가 있다. 태극1장 … 고려..금강 십진…

십진위의 무언가가 있다고 할 때
내공이 충분하지 않고 수련이 안된 사람들이 와서
이걸 배우면 나의 내공도 같은 수준으로 높아져서
뭔가 대단한 사람이 될거라고 생각한단다.

절대적인 착각..
형을 배운다고 전문가가 되지 않는다.

전문가가 되기 위해서는 고민과 수련의 절대적인 양이 필요하다.
수많은 고민의 시간들을 그냥 건너뛰어버릴 수는 없다.

  • 이것이 정말 최선인가? 더 나은 방법은 없을까?
  • 무엇이 원칙이며 그 원칙을 현상황에 적용하려면 어떻게 해야하지?
  • 불가능해 보인다. 만약 가능하다면 어떤 모양새일까?
  • 왜 이렇게 고통스럽지? 더쉽게 가능한가? 아예 이런 문제를 해결할 필요가 없게 하려면?

내공을 키우기 위해선 이런 고민을 수없이 해야한다.
어떤 도구와 어떤 기법을 써야하지? 같은 고민들은 비교적 형에 가까운 경우가 많다.
내공이 깊어지면 이런 형에 대한 고민들의 수준도 올라가게 된다.
하지만 내공을 수련하지 않고 처음부터 형에 집착하거나
본인에 안맞는 형을 배우려고 하면 문제가 발생한다.

기존 도구 사용이 학습에 짐이 되는 경우도 있다.
도구의 존재(특히 그 도구가 유일할 때)가 고민의 기회를 빼앗아 버리는 경우가 있다. 아 이런 도구가 이미 있구나. 이대로 쓰면 되는거구나. 이런식으로..

도구의 복잡성이 고민의 여유를 빼앗아 버리는 경우도 있다.
이 도구를 어떻게 써야 할지 배우는것 자체가 또 하나의 부담이 되어서
원래 문제를 고민할 여유가 줄어드는 것이다.

이를 인지부하이론(Cognitive Load Theory)라고 한다.
머신러닝을 영어로 배우는데 영어가 딸릴때 딱 이런 감이다.(아니면 수학이 딸릴 수도 )


고민은 쉽지 않고 만족스러운 답을 구하지 못할 수도 있다.
그 과정에서 많은 공부와 수련이 되고 내공이 쌓이게 된다.
팁이라면 실행 전략뿐 아니라 학습전략에 대해서 생각해 보라는 점이다.

인지적 부하를 낮춘 상태에서
고민 그 자체에 몰두할 수 있는 환경을 만들어 여러 번 안전한 실험을 해보는 것.
예를 들어 멀티스레드에 대한 고민을 해보려면 가장 간단한 멀티스레드 코드와 개발 환경을 갖추고 (각종 도구나 기법 등의 변수를 제거하고) 해보라는 것이다.

Related POST

공유하기