Extremely Agile/General2010. 10. 20. 10:04
어제 마이크로소프트에서 일하는 김창훈 박사를 만났습니다. 대전에 일이 있어서 들렀는데, 저는 바빠서 저녁식사 하는 장소에는 가질 못하고 일하고 있다가 잠깐 가서 얼굴만 보고 와야 했죠. 신세진 일이 있어서 다음에는 저녁을 사겠다는 (대체 언제가 될지는 모르지만) 말만 하고 돌아왔습니다. 그런데 마침 어제 인사이트의 신간 "CODE: 하드웨어와 소프트웨어에 숨어있는 언어"를 받았습니다. 마이크로소프트의 찰스 펫졸드가 지은 책이죠. 마이크로소프트에서 일하는 두 사람을 같은 날 만나는 드문 경험을 한 셈입니다.

어제 대화를 나누다가 모교의 컴퓨터공학과 학생들에 대해서 이야기를 잠깐 나누었는데, 교과 과정이 학생들을 올바르게 이끌어주지 못하는 것 같다는 이야기를 하더군요. KAIST의 학생들과 비교해 보면, 질문의 내용과 수준이 너무 차이가 난다는 말도 했습니다. 하드웨어와 소프트웨어 관계에 대해서도 깊은 이해가 없는 것 같다는 말도 했구요.

보통 컴퓨터공학이라고 하면, 하드웨어와 소프트웨어 전반을 아우르는 지식 체계를 말합니다. 하드웨어를 잘 모르고 소프트웨어를 논하는 것도 우습고, 소프트웨어를 잘 모르고 하드웨어를 논하는 것도 우스운 법이니 그 둘 사이의 균형을 잘 맞추어야 하는데, 그걸 체계적으로 정리하고 가르치는 것이 컴퓨터공학과에서 보통 하는 일이죠.

그런데 제가 학부에서 보낸 4년을 돌아보면, 저는 하드웨어에 대해 공부하는 것이 너무 재미가 없었어요. 사실 그렇잖아요. 소프트웨어가 거시적이라고 본다면 하드웨어에는 미시적인 구석이 있죠. 플립-플롭이나 AND-게이트 같은 자그마한 소자들을 이렇게 저렇게 엮어서 덧셈과 뺄셈을 구현하는 게 재미있었을 턱이 있나요. 소프트웨어의 세계에서는 덧셈과 뺄셈은 그냥 되는 건데.

물론 지금 돌아보면 말도 안되는 생각이죠. 거기다 하드웨어를 알면 할 수 있는 일들이 훨씬 많아집니다. 아두이노 패키지처럼 하드웨어와 소프트웨어를 잘 결합해서 사람들로 하여금 보다 창조적이고 재미있는 일을 할 수 있도록 이끄는 프로젝트를 보면, 확실히 하드웨어와 소프트웨어는 같이 배워야 하는 무엇이라는 생각이 들어요. 아이폰을 비롯한 스마트폰 광풍을 봐도 그렇구요. 표면적으로는 앱 생태계가 활성화되는 것 같지만, 사실 그 시장을 지배하는 건 아이폰이라는 하드웨어죠. 물론 Xcode나 안드로이드 SDK같은 걸출한 Abstraction이 없었다면 지금의 아이폰도 없었을테니, 하드웨어와 소프트웨어를 따로 떼놓고 생각하려는 시도는 정말로 무의미해요.



말이 좀 샜는데, 다시 제 학부 시절로 돌아가 보겠습니다. 제가 왜 하드웨어 수업이 재미없었는지의 이유를 곰곰히 생각해봤는데, 대체적으로 다음과 같이 요약해 볼 수 있더군요.

1. 하드웨어의 세계가 너무 미시적으로 느껴져서 답답했다
2. 소프트웨어와의 연결고리를 제대로 찾지 못했다
3. 교수님들이 무슨 소리를 하는 것인지 제대로 알아듣지 못했다

3은 제 자질문제이니 넘어가도록 하고, 보통은 1과 2를 잘 이해하지 못해서 재미가 없었던 것 같아요. 특히 중요한 문제는 2번인 것 같은데, 소프트웨어와의 연결고리를 제대로 찾지 못하면 대부분의 학생들은 그걸 어디다 써먹어야 할지 잘 알지 못해요. 그들이 실생활에서 보는 대부분의 하드웨어는 소프트웨어라는 인터페이스에 둘러싸여 있거든요. 요즘은 그 소프트웨어들이 보여주는 하드웨어 abstraction이 너무 우아해서, 마치 하드웨어라는 것이 세상에 존재하기나 했었느냐고 묻는 것 같이 보일 때도 있죠. (물론 그래도 아직 사람들은 컴퓨터를 구입할 때 메모리 용량, CPU 속도 같은 걸 따지긴 해요.)

CODE는 바로 그 연결고리, 그러니까 하드웨어와 소프트웨어 사이에 어떤 관계가 있는지를 보여주는 책입니다. 저처럼 하드웨어에 대해서는 도통 관심이 없는 삶을 살다가 '정말 그렇게 살아도 되는 걸까?'하는 질문을 하기 시작한 분들이나, 컴퓨터공학과에서 새로운 인생을 시작하게 된 학부 1학년생들, 아니면 이제 막 컴퓨터라는 것에 대해 관심을 갖기 시작한 분들에게 정말로 괜찮은 안내서가 되어줄 거라고 확신합니다. 워낙 쉽게 씌여졌기 때문에, 그저 컴퓨터에 대해 좀 더 알고 싶다는 분들에게도 좋은 책이 될거라 믿습니다.

저는 이 책의 첫 페이지를 넘기는 순간 무척 즐거웠는데, 다른 분들도 그 경험을 함께 나눌 수 있었으면 좋겠습니다.
Posted by 이병준

소중한 의견, 감사합니다. ^^

  1. 혹시 하드웨어 과목을 담당하는 교수님 탓 아닐까요? ㅎㅎ
    저도 하드웨어과 소프트웨어가 어떻게 연결되는지 지금도 잘 감이 안 오는데
    추천해주신 이 책 한 번 읽어보려고 합니다. 제가 해왔던 공부와 일도 그렇고 지금 하는 일도
    하드웨어하고는 좀 멀긴 하지만 공부는 언제 어떤 상황에서든 계속 해야 한다고 생각이 들어서요...

    2010.10.20 23:47 [ ADDR : EDIT/ DEL : REPLY ]