알립니다. 2003년도에 권용래 교수님의 소프트웨어 공학 개론 수업 때 썼던 에세이 독후감입니다. 지금 보면 아는 것도 없이 주절거렸구나.
라는 생각이 듭니다. 하지만 더 나은 전산학도가 되었다는 뜻이겠죠. 제가 쓴 글보다는 에세이에 주목해주세요.
이것은 Bob Colwell의 Near Misses: Murphy’s Law is Wrong을 읽고 쓴 글입니다. 이와 관련된 서적으로 헨리 페트로스키의 인간과 공학 이야기 : 이카로스 후예들의 성공과 실패담을 추천합니다.
첫 문단에서 저자는 과학과 엔지니어링의 가장 큰 차이점을 언급한다. 과학과 달리 엔지니어링 분야에서는 반복적인 실험을 할 수 없다고 한다. 얼핏 보기에 너무나 당연한 사실이기에 처음엔 그다지 신경 쓰지 않았다. 하지만 글의 내용을 다시 음미해보니, 이것이야 말로 모든 문제의 시발점이 아닌가 하고 생각하게 된다. 다리 건설을 하는 엔지니어 중 누구도 ‘일단 해보고 안되면 다시 지으면 되지.’라고 생각하지는 않을 것이다. 어디까지나 한정된 자원을 갖고 약속된 시간 안에 맡은 바를 완수해야 한다. 엔지니어에게는 단 한번의 기회가 주어질 뿐이다. 저자가 언급했듯이 ‘Lucky catch’는 말 그대로 운이 좋은 경우일 뿐이다.
글쓴이는 엔지니어가 실수를 하지 않기 위한 방법으로 다른 이의 실수로부터 배우라고 충고한다. 이것도 너무나 지당한 말이다. 하지만 실제로는 선례를 연구하는 엔지니어를 보기 힘든 것 같다. 자신이 종사하는 분야의 전문 지식을 공부하는 사람을 보기란 어렵지 않다. 반면에 사례 연구를 하는 사람은 눈에 띄지 않는다. 오히려 경영, 또는 관리 분야에 종사하는 이들 중에서 그런 사람을 볼 수 있었다. 당연히 해야 할 일에 무관심한 것은 아닐까 하고 반성해볼 일이다.
저자는 글의 뒤에서 시스템 전체에 대해 완전히 이해하는 것이 중요하다고 말한다. 이와 관련해서 교수님의 말씀이 떠올랐다. 단순한 프로그래머가 아닌 소프트웨어 공학자로서 자신의 경력을 이어가고 싶다면, Domain knowledge를 쌓으라고 말씀하셨다. 전산학도로서 타 분야에 도움이 될 소프트웨어를 제작하게 될 것이다. 그렇기 때문에 domain knowledge를 쌓아나가야만 한다. 단순히 프로그래밍 기술을 익히기만 해서는 새로운 세대에게 자리를 넘겨줄 수밖에 없다. 프로그래밍 기술이 좋은 엔지니어는 얼마든지 있다. 하지만 시스템 전체를 이해하고 설계할 수 있는 엔지니어는 항상 부족하기 때문이다. 그런 측면에서 앞으로 내가 어떤 분야에 종사할 것인지 차분히 생각해볼 때가 아닌가 싶다. 얼마 안 있으면 병역 특례 자리(4급)를 찾아볼 것이다. 그 때 흥미롭고 즐거운 분야를 찾아낼 수 있다면, 시행착오를 거치지 않고도 경력을 쌓을 수 있을 것이다. 무척 설레면서도 부담되는 결정이 아닐 수 없다.