이미 소장하고 있다면 판매해 보세요.
|
1장. 프로그래밍은 상상(想像)이다 |
임백준의 다른 상품
임백준의 다른 상품
|
뚜렷한 이유도 없이 일어나는 시스템 크래쉬의 원인을 분석하기 위한 작업은 반복되는 회의와 코딩을 포함한 테스트의 두 과정으로 이루어졌다. 회의 시간은 주로 자유분방한 브레인스토밍(brainstorming)을 위해서 활용되었는데, 매니저와 중견 프로그래머(senior programming)들은 한 방에 모여서 각자가 '상상'한 내용을 주고받으면서 테스트로 검증할 수 있는 부분을 포착하려고 노력했다. 원인이 뚜렷하지 않을수록 상상의 폭과 깊이는 넓고 깊어졌다. 논리적 추론이 필요한 것은 상상이 충분히 일어난 다음의 일이었다. 어떤 사람은 유닉스 운영체제에 있을지도 모르는 버그를 상상했고, 어떤 사람은 하드웨어의 결함이 야기할 수 있는 문제에 대해서 상상했다. 어떤 사람은 해커의 공격에 대해서 상상했고, 어떤 사람은 JMS 서버 자체에 있을지도 모르는 버그를 상상했다. 회의에 참석한 필자는 다른 프로그래머들이 끊임없이 내놓는 상상의 나래를 들으면서 탄복했다. 그 순간 검증할 수 있는 것은 아무것도 없었지만 그들의 상상력은 필자의 생각을 자극했다. 조금 과장해서 이야기하자면 그것은 소설가가 소설을 쓰는 것과 다를 바 없을 것처럼 느껴졌다. 그들이 마음속의 상상을 드러내기 위해서 동원하는 소재가 '사람'의 이야기가 아니라 '컴퓨터'의 이야기라는 점이 다를 뿐, 그것은 모두 사실적인 상황을 기초로 해서 '지어낸' 이야기라는 점에서 소설과 다를 것이 없었다. 캄캄한 어둠 속에 갇혀 있었던 우리에게 필요했던 것은 바로 그렇게 마음껏 지어낸 이야기였다. 그리고 그렇게 '지어낸' 이야기 중의 하나가 버그가 숨어 있던 소스코드의 밀실에 불을 환하게 밝혔다.
---'1장. 프로그래밍은 상상(想像)이다' 중에서 |
|
프로그래머에게 주어진 하루 30분의 여유시간.
바로 이 시간 동안 우리는 정성껏 상상하고, 온 힘을 다해 창조한다. 그러한 상상과 창조의 시간을 가질 수 있다는 사실만으로도 프로그래머는 이미 행복하다. 필자는 기회가 될 때마다 논리력과 끈기는 프로그래머가 갖추어야 하는 두 가지 중요한 덕목이라고 강조했다. 그렇지만 캄캄한 어둠 속을 헤맬 수밖에 없었던 열흘의 경험을 통과하면서 필자는 더 중요한 요소가 존재한다는 사실을 깨닫게 되었다. 미국에서는 흔히 “상자 밖에서 생각하라(Think out of the box)”는 표현이 즐겨 사용된다. 이 말은 주어진 환경과 조건이 강요하는 생각의 흐름을 과감하게 탈피해서 전혀 새로운 각도의 생각을 시도해보라는 의미이다. 그런 과감한 시도가 필요한 경우는 많다. 하지만 그런 시도를 가능하게 해주는 힘은 도대체 무엇일까. 그것은 ‘상상력’이다. 수학처럼 차갑고 치밀한 논리를 바탕으로 하는 컴퓨터 프로그래밍에서 상상력이라니, 하고 놀라는 사람도 있을 것이다. 하지만 잘 생각해보자. 상상하지 않는 프로그래밍이란 없다. 새로운 시스템을 설계하는 작업이든, 정교한 알고리즘을 구현하는 코딩 작업이든, 속을 끓이는 디버깅 작업이든, 프로그래머는 언제나 상상한다. 그들이 치밀한 논리력이나 진득한 끈기를 발휘하는 시간은 사실 순간적이다. 적어도 손가락이 쉬고 있는 시간에 프로그래머들은 다른 무엇보다도 상상을 한다. 그래서 프로그래머란 상상을 하는 사람들이다. 말하자면 프로그래밍은, 상상(想像)이다. |