본문 바로가기
jisung's 책읽기/기술서

생각하는 프로그래밍 #2 - 엔지니어의 직업정신

by jisungStory 2019. 5. 10.
반응형

Programming Pearls 2/E

생각하는 프로그래밍 #2

 엔지니어의 직업정신

  프로그래머의 입장에서 생각해야 할 것들을 수필의 형태로 정리한 책을 읽고 있습니다. 컴퓨터라는 분야가 생긴지 얼마 되지 않아 그렇게 오래 되었다고 할 수는 없지만 80년대에 쓰여진 책이니 이 분야가 막 발전하기 시작하던 시점에 쓰여 졌다고 할 수 있습니다. 대부분의 사람들이 프로그래밍이라고 하면 알 수 없는 글자들을 화면에 입력하는 장면만 생각하지만 사실 프로그램을 만드는 일은 매우 논리적인 흐름을 만들어 내는 일입니다. 컴퓨터에게 일을 시키기 위해서는 정확해야 하기 때문입니다. 최근에는 이 분야에 엄청난 발전 덕분에 어느 정도의 오차는 컴퓨터가 보정해주는 수준까지 이르렀지만 그래도 아직 프로그래머들은 코드의 한글자 한글자를 틀리지 않고 정확하게 입력하고 그 논리의 흐름에 문제가 생기지 않게 하기 위해 고심하고 또 고심하고 있습니다. 

 사실 최근의 발달한 개발 환경은 이런 고심을 하지 않아도 될 만큼 성장해 있습니다. 다른 뛰어난 개발자들이 만들어 놓은 수 많은 예제들을 복사해서 붙여 넣기만 해도 꽤나 근사한 프로그램을 만들 수 있습니다. 실제로 오픈소스라는 훌륭한 문화가 있어 최근의 프로그램 개발 환경은 마치 오픈북 시험을 보는 것과 비슷한 기분을 줍니다. 저도 코딩을 하다가 막히면 구글신에게 어김없이 물어 봅니다. 그리고 그분은 거의 모든 것을 알고 계십니다. 만약 구글신이 없던 시절 프로그램을 만들던 분들의 고충이 어떠 했을지 상상이 갑니다. 

 이렇게 잘 준비 되어 있는 예제들을 뒤로 하고 왜 이 책에서는 더 간단한 코드를 추구하고 효율적인 코드를 만들어야 한다고 주장합니다. 쉽게 뚝딱 만들어 낼 수 있음에도 더 가다듬고 정돈된 프로그램을 만들어 내야 한다는 것이지요. 

 언뜻 이해가 안가기도 합니다. 쉬운길을 두고 굳이 어려운 길을 선택해서 시간을 더 들이는 것이 오히려 더 비효율적이라는 생각도 듭니다. 하지만 저는 저자가 든 예를 두고 왜 그런 말을 하는지 이해하게 되었습니다. 

 저자는 뉴욕의 브루클린 브릿지를 지은 엔지니어인  John Roebling의 예를 들고 있습니다. 비슷한 시기에 지어진 다른 다리들과 달리 이 다리는 아직까지도 튼튼하게 그 위용을 자랑하고 있습니다. 1940년 대에는 현수교들이 폭풍으로 붕되되는 사고가 지속적으로 있었습니다. 이런 사고를 미연에 방지 하기 위해서는 많은 수학적 지식이 필요 했지만 1950년대에는 이런 지식을 이해하는 사람은 거의 없었습니다. 그럼에도 불구하고 이 다리가 무너지지 않은 이유는 이 다리를 일반적인 계산 결과들이 요구하는 것에 6배가 되도록 만들었기 때문이었습니다. 그리고 주변에서 다른 다리처럼 붕괴하지 않겠냐는 우려에 이렇게 대답했다고 합니다. 

"아닙니다. 저는 실제 필요한 것보다 6배나 더 강하게 다리를 설계했기 때문에 그렇게 되지는 않을 것입니다."

 수 많은 사람이 다니는 다리를 설계 할 만큼 이 분야에서 전문가인 사람이 스스로의 부족함을 인정하고 더 준비하는 모습에서 많은 것을 느끼게 합니다. 인간은 자연에서 일어나는 많은 일들을 이해하지만 모든 일들을 알지는 못합니다. 더군다나 미래에 일어날 일에 대해서 예측할 수 없습니다. 그런 불확실성에서 이 분은 자신이 할 수 있는 모든 기술을 동원하여 다리를 튼튼하게 만들어 낸 것입니다.

 저는 이와 비슷한 장면은 런던의 하수도 공사에서 들은적이 있습니다. 1875년에 만들어진 런던의 하수도를 140년이 지난 2015년에 보수 작업을 시작했다는 소식이었습니다. 아직 상하수도가 만들어진지 채 100년이 되지 않은 우리 나라에서도 관련한 문제들이 매일 매일 생기고 있는데 140년이나 된 하수도를 계속 써온 런던의 하수도는 어떻게 만들어진 것일까요?

<런던 하수도 공사를 진행한 조셉 베젤제트 위키피디아>

https://en.wikipedia.org/wiki/Joseph_Bazalgette

 

Joseph Bazalgette - Wikipedia

Sir Joseph William Bazalgette, CB (; 28 March 1819 – 15 March 1891) was a 19th-century English civil engineer. As chief engineer of London's Metropolitan Board of Works his major achievement was the creation (in response to the Great Stink of 1858) of a se

en.wikipedia.org

  

 이 하수도가 만들어진 당시의 런던의 위생상태는 엉망이었습니다. 각종 수인성 전염병이 창궐하고 이로 인한 인명피해가 엄청났었다고 합니다. 이때 바젤제트는 당시 런던의 인구가 200만명이었음에도 불구하고 400만명의 기준으로 하수도를 만들었습니다. 덕분에 런던은 100년 넘게 콜레라 같은 질병의 위험에서 안전할 수 있었습니다. 

 지금은 엔지니어라고 불리는 사람들 우리나라에는 다르게 불리우는 이름이 있습니다. 바로 '장인' 입니다.  그 분들은 우리의 주변에서 우리에게 유용한 것들을 만들어 내고 있습니다. 때로는 우리의 삶을 지켜내고 있는 분들이라고 해도 될겁니다. 우리가 사용하고 있는 모든 인프라들이 그분들의 손에서 나온 것이니까요. 그 장인들의 기본적인 정신, 직업윤리, 그것을 우리는 '장인정신'이라고 부릅니다. 

 프로그램도 마찬가지 입니다. 누군가 사용해야 하는 프로그램을 만드는 것은 다른사람들에게 어떤 가치를 제공한다는 것이고 그 가치의 크기가 커질 수록 그 프로그램에는 만드어낸 사람의 철학이 녹아 들어 있어야 할 것입니다. 특히 지금과 같이 컴퓨터 산업이 고도로 발달한 시대에는 수 많은 사람들의 삶이 관련된 경우가 많이 있습니다. 최근에 우리나라 어느 통신국의 화제를 통해 알게 된 것처럼 이제는 우리의 삶의 깊숙한 곳까지 이런 기술들이 침투해 있습니다. 이런 기술에서 안정성과 효율성이 보장되지 않는다면 단순히 제품이 망하는 수준이 아닌 사람들에게 심각한 피해를 끼칠지도 모릅니다. 

 누군가의 손끝에서 가볍게 만들어지는 프로그램이지만 어딘가에서는 중요하게 쓰일 수도 있는 가치가 될 지도 모릅니다. 가볍게만 생각했던 프로그램을 만드는 일에 대해서 무겁게 생각할 질문을 던져준 생각하는 프로그래밍 이었습니다.

반응형

댓글