티스토리 뷰



사실 나는 영화를 볼때 예고편이나, 영화에 대한 평가를 가급적이면 듣지 않으려고 한다.

첫째는 편견을 갖지 않기 위해서고, 둘째는 기대감을 갖지 않기 위해서다.

그렇지만 예외도 있는데, 내가 좋아하는 감독이나, 배우가 출연할 때에는 기대감을 갖고 보기도 한다. 이래 저래 예고편이나 관련 정보를 얻기도 하고.

책을 고를때에는 그와 반대로 최대한 많은 정보를 얻고 책을 선택한다. 잘못 선택한 책이 미치는 여파는 생각보다 크기 때문이다.

하지만 임백준씨는 나에게 너무 많은 영향을 주셨고, 임백준씨의 책에 너무 감명 받은 것들이 많은지라, 임백준씨의 책이라면 목차를 보지 않고도 바로 구입하곤 한다.

그리하여 목차도 모르고 받아본 이번 책은 프로그래밍과 상상의 연관관계인줄 알았거늘...!!

그간 기고하셨던 컬럼의 모음집이었을 줄이야...!!

잠깐 충격을 받았지만 다시 정신을 차려보니, 내가 읽었던 글은 하나도 없었다. (이런...마소 정기 구독해달라고 회사에 요청이라도 해야 하나?)

가격이 오른 만큼 페이지수도 두터워져서 읽을거리가 많아졌다는 즐거움에 책을 읽기 시작했다.

이 책을 읽기전에 나도 모르게 가졌던 생각은, 미국과 유럽의 개발 환경이 이상적일 것이라는 점이었다.

책의 서문에서도 밝히셨지만, 어느정도야 더 좋은 면도 있겠지만 전반적으로 우리와 크게 다르지 않다는 것을 알게 되었고, 미국에서도 기준에 부합하지 않는 프로그래머를 채용하게되 고생하거나, 유지보수 프로그래머로써 겪는 애환, 잘못된 기술 선택으로 인한 고통등 결국 문제는 사람(실제 같이 일하는 사람이거나, 나보다 전에 이 일을 했던 사람의 결정, 결과물 등... 결국 사람에 관련이 없을 수 없단 의미로)이었다.

내가 이 책을 읽기전에 고민했던 좋은 프로그래머의 자질에 대한 생각을 다시 하게된 챕터도 있었다.
 
내가 경험한 바로는 머리가 좋은 사람은 대부분 자신의 판단과 경험을 지나치게 의존해 같이 일하기 힘든 사람이 되곤 한다.

문제 해결 마인드도 차이가 났는데, 문제를 해결하는 능력자체는 뛰어났지만 문제를 단순화 시키려는 노력이나, 문제를 쉽게 풀려는 노력이 부족한 사람이 많았다.

그런 점들은 프로그램의 엔트로피를 상승 시키는 결과를 낳기 때문에 좋은 프로그래머라 할 수 없다.

내가 느끼기에 좋은 프로그래머란 어려운 문제를 푸는 사람보다, 어려운 문제를 쉽게 푸는 사람이라고 생각한다.

임백준씨는 이런 내 생각에 덧붙여, 꼼꼼한 사람이기도 하더라라는 의견도 제시해주셨다.

나는 일을 빠르게 처리하긴 했지만, 일을 많이 할 뿐 실속이 부족했다. 내 자신이 좋은 프로그래머라는 확신을 못갖는 이유가 바로 이런 부분에서다.

나는 프로그램을 작성하고 유지보수 할 때 큰 흐름을 보려는 노력을 많이했고, 실제로 그렇게 해왔다고 생각하는데, 전체적인 흐름에서 작은 변화가 끼칠 수 있는 파장에 대한 고민을 별로 하지 않는 나쁜 습관이 있다.

그렇다보니 문제가 발생했을 때 원인이 뭐였는지, 왜 그런 문제가 발생했는지는 빨리 깨닳지만 거기 까지였다.

문제가 발생하지 않을 만큼 침착한 검토를 하거나, 다양한 상황의 테스트를 거치지 않고 있었다.

내가 하는 일이 촌각을 다투는 상황일 경우가 빈번하고, 그런 상황일수록 복잡한 테스트를 거치기 힘들다는 점으로 봤을 때, 테스트는 편해야 하고, 어느정도 선까지는 자동화 되어있어야 한다.

또한 유닛 테스트 코드가 많아, 쉽게 모듈 테스트 할 수 있는 상황이 많다면, 코드간의 결합도가 낮다는 이야기고 그렇게 되어 있는 프로그램은 실수할 여지가 적다.

성급해질 수 있는 긴급 상황에서의 실수를 줄이는 것은 심리적인 요인을 다스리는 것도 중요하겠지만, 환경적인 요건도 중요하다.

사람은 누구나 실수할 수 있기 때문에, 실수할 여지를 줄이는 노력을 하는것이 좋은 프로그래머다 라는 생각을 갖게 되가는 요즘, 임백준씨도 비슷한 생각을 하셨다는 점에서 좋은 프로그래머에 대한 기준은 거의 다 비슷하구나 싶었다.

상황 중심 프로그래밍 (관점 지향 프로그래밍이라 주로 불린다는) 에 대한 이야기도 흥미로웠는데, 사실 서버쪽 프로그래밍은 유지보수에 대한 문제가 큰 이슈이기 때문에, 상황별로 쓰레드가 별도로 돌거나, 로직을 별도로 돌리며, 객체별로 결합도를 줄이려는 노력을 하고 있다. (아닌 서버가 있을지도 모르지만...적어도 내가 보거나 개발한 서버들에 한해선) 그래서 어떤 로직에서 얼만큼의 시간을 소요하고, 어떤 기능묶음별로 무언가를 해야 할 때 알 수 있는 방법을 이미 마련해둔 상태이지만, 그렇지 않은 경우라면 느끼는 점이 많을 챕터라는 생각이 들었다.

컬럼 모음집인 만큼 이외에도 프로그래머의 자질, 웹 2.0, 패턴, Pov-Ray와 같은 다양한 흥미로운 주제도 많이 접했다.

페이지를 너무 많이 쓰신상태이셔서인지 챕터 5는 PDF로 제공해주셨는데, 개인적으로 책으로 소장하는걸 더 좋아해서 가격이 조금 더 올라가더라도 책에 포함 되어 있다면 좋았겠단 생각이 들어 조금 아쉬웠다.

임백준씨의 책을 읽을때마다 느끼는 거지만, 글 솜씨도 좋으시고 일을 진정 사랑하는 프로마인드를 통해 나에게 늘 자극을 주시고 경각심을 일으켜 주셨다.

내 실력이 좋은지 나쁜지 여부는 큰 관심이 없었고 인기 있는 게임을 만들고 싶었을 뿐인 나에서 좋은 프로그래머가 되고 싶은, 진짜 '프로'그래머가 되고 싶은 맘을 갖게 해주셨고, 그 길을 몸소 실천하고 계신 임백준씨의 다음책이 벌써부터 기대된다.

PS: 혹시 임백준씨의 블로그나, 홈페이지 알고 계신분 알려주세요~! ^^;


댓글