알고리즘이나 수학은
만약 정말 똑똑한 어떤 천재가 있다면,
책상 위에서 혼자 머가리를 굴려서 수학에서 의미있는 모든 활동을 수행할 수 있음.
(증명을 한다던가, 수식을 만든다던가, 등등...)
왜냐하면 수학에서 사고의 대상이 되는 것은 참 혹은 거짓으로 나뉘는 명제들이고,
누군가 참과 거짓임을 정해놓은 것이 아니기 때문.
따라서
수학에 있어서 지식의 습득은 어디까지나 보조적인 수단인 것이고,
본질은 스스로 생각하는 것에 있는 것 같음. 어떤 방식으로던, 제대로 생각하면 참인지 거짓인지를 그 사실에 도달할 수 있다.
반면 개발이나 프로그래밍을 한다는 것은 조금 다른 것 같음.
본인이 모든 라이브러리나 프레임워크를 다 만들어서 쓰는 것은 말이 안되니까..
결국 다른 사람들이 만들어 놓은 기술들을 사용한다는 것인데
그렇다면 기술들이 돌아가는 일련의 동작의 순서나 원리 등은
그 자체로 참인 것이라서 혼자 대가리 굴려서 알아낼 수 있는 것이 아니라
수 많은 정답중의 하나로 처음에 만든 이가 채택 해놓은 방법이기 때문에,
동작 과정이나 등장 배경을 빠삭하게 모르면 적재적소에 기술을 사용할 수 없음.
따라서 개발이나 프로그래밍을 하는데 있어서
지식의 습득은 보조적인 수단을 넘어서 그 자체가 수단이 될 수 있고,
혼자 망상한다고 모든 것을 알 수 있는 경우는 그리 많지 않다는 것.
이걸 개발 지망생인 내가 일상에서 적용해보면
개발을 공부하는 데 있어서는 결국에 혼자 망상하면서 추론하는 시간보다는
브레이킹 포인트라도 걸어서 라이브러리 어떻게 만들어졌고 어떻게 돌아가는지
하나하나 직접 눈으로 보면서 지식을 쌓는 것을 가장 먼저 하고
거기에 나름의 추리와 생각을 더하면 되는 것 같다.
이상임.
수학도 너가 생각하는 개발처럼 함. 일정수준 위로는 하나하나 다 직접하면서 가기엔 양이 너무 많아서 라이브러리 처럼 정리 갖다 쓰고 그래야됨
학부 수학책을 봐도 앞에서 이미 증명 끝난 것을 그대로 가져오지. 예를 들면 4.1 의 정리를 증명하는데 2.15 에서 증명한 것을 그대로 쓴다거나... 근데 그건 작업의 총량을 줄이기 위한 행동이잖아? 그렇게 안해도, 시간만 충분하다면 이전의 정리를 '혼자 증명'해서 쓸 수 있음. 근데 라이브러리나 프레임워크는 다른 사람이 만든 도구이기 때문에, 시간을 충분히 주더라도 사용하고자 하는 라이브러리가 어떻게 만들어졌는지를 지식으로 알지 못하면 못씀
그런 이야기였음.