cleanUrl: /notes/how-much-detail-should-i-know

"프로그래머가 로우레벨(저수준)에 대해 얼마나 알고 있어야 하는가?" 와 같은 질문은 꾸준한 논쟁 떡밥이 되어 왔다. 이에 대한 내 의견은 다음과 같다.

어떤 도구를 쓸 때, 내가 전자레인지에 대해 이해하는지 만큼은 이해해야 한다.


나는 전자레인지가 돌아가는 세부 원리를 모른다. 어떻게 사용자 입력을 처리하는지, 어떻게 마이크로웨이브를 만들고 통제하는지, 마이크로웨이브의 구체적인 주파수 범위 조차도 모른다.

하지만 나는 "전자레인지가 방출하는 마이크로웨이브가, 음식 속의 수분에 마찰열을 일으켜 음식을 데운다"는 핵심 원리를 알고 있다. 따라서 습기가 없는 음식은 전자레인지로 데우지 않거나, 더 오래 데우고, 습기가 많은 음식은 빠르게 데우거나, 습기가 수증기가 되어 아예 날아가버려 음식이 푸석해지지 않도록 음식에 뚜껑을 덮는 등의 조치를 취할 수 있다.

전자레인지의 동작 원리를 모두 이해하는 것이 불가능한 것처럼, 컴퓨터와 프로그램의 동작 원리를 모두 이해하는 것은 불가능하다. 하지만 그것이 돌아가는 핵심 원리는 알 수 있고, 알아야 한다.