컴퓨터에 대해 모르고 컴퓨터 프로그래밍을 하는것이 왜 문제인지?
앞으로는 컴퓨터가 들어있지 않은 물건을 찾기가 어려운 시대가 올 것이다. 수많은 하는 일을 컴퓨터가 수없이 많고 수없이 많은 컴퓨터 프로그램이 있으며 컴퓨터가 온갖 곳에 쓰이기 때문에 애니메이션,웹 페이지, 모바일 폰 앱, 공장 제어, 의료 기기등 많은 분야에 영향을 주게 될 것이다. 그리고 각 분야의 프로그래밍 전문가가 되는 것은 의학에 대한 전문가와는 달리 컴퓨터에 대한 기본 지식 없이도 전문가가 될 수 있다는 것은 보안 취약점 보고서나 제품 리콜 등에서 볼 수 있다. 또한 엄청난 데이터를 다루는데에 이 데이터를 전혀 이해하지 못한다면 어떤 일이 벌어질까? 사람의 생명에 영향이 있는 경우라면 더더욱 문제는 커질것이다.
간단한 코딩으로 그저 돌아가기만한 프로그램은 좋은 프로그램이거나 신뢰 할만한 프로그램인 것이 아니기 때문에 '컴퓨팅 사고'를 갖춰야 한다.
누구나 코딩을 배우는것은 이론적으로 멋진 이야기지만, 실제로 모두가 좋은 프로그래머가 되기에 적합한 태도를 갖추게 되는것은 아니다.이것은 훌륭한 프로그래머를 낳는게 아니라 질 낮은 프로그래머를 회사에 많이 공급함으로써 프로그래머의 급여 수준을 낮추고 이를 통해 소프트웨어 회사의 이익을 증가시키는 것이다. 이것을 추구하는 사람들은 코드 품질에는 그다지 신경쓰지 않는다.
매스매티카와 울프람 언어를 만든 스티븐 울프람의 '어떻게 컴퓨팅 사고를 가르칠까?'라는 글에서 울프람은 컴퓨팅 사고를 '컴퓨터가 할 일을 지시하기 위해 충분히 명확하게 시스템적으로 사물을 수식화하는 방법' 정의했다.
C 언어는 메모리 자동 관리가 없었고, 메모리 관련 오류는 당시 프로그래머에게 자주 두통을 일으키게 하는 오류였다. 자바는 언어 설계를 통해 이런 오류를 없앴다. 자바는 메모리 관리를 프로그래머가 볼 수 없게 감췄다. 하부 기술을 잘 이해하면 무엇이 잘못되고 있는지 알아채는 능력을 계발할 수 있다.
발전하려면 역사를 배워야 한다.
역사의 분량은 많다. 이로 인해 수많은 사람이 이미 누군가 저지른 실수를 똑같이 반복한다. 역사를 알면 최소한 과거의 실수를 반복하지 않고 더 나은 실수를 할 수 있다. 오늘날 자신이 사용하고 있는 인기있는 기술이 금방 과거의 기술이 된다는 사실을 기억하라.
흥미진진한 기술과 그것을 발견한 사람들에 대해 배우기 위해 시간을 보내라. 흥미로운 문제를 최소한 한가지 이상 해결한 사람들이 세계를 어떻게 인식했고 문제를 해결하기 위해 어떤 접근을 했는지 배울만한 가치가 있다.