Media Log

프로그래머 그 다음 이야기 - 6점
임백준 외 지음/로드북

얼마전에 나온 신간이며, 프로그래머들이 가볍게 읽어보기 딱 좋은 책이다.
6명의 프로그래머에 대한 에세이들이 있는데 1번타자인 임백준씨의 글을 가장 재밌게 읽었다.

잠시동안 관리자의 역할을 맡게되면서 프로그래밍 실력이 떨어질까봐 걱정하는 마음.
옆의 똑똑한 동료들과 경쟁을 하고 함께 토론을 하면서 실력을 재보고, 또 그들을 도저히 이길 수 없겠다는 한계를 느끼며 좌절하는 감정들을 솔직하게 잘 썼다. 이런 것들은 프로그래밍이라는 것을 정말로 진지하게 생각하고 좋아하지 않으면 느낄 수 없는 감정들이다.

미국 회사들의 분위기를 엿볼 수 있는 것도 좋았다.
아, 그런데 임백준씨도 그렇지만 많은 사람들이 한국에서 일하는 프로그래머들이 너무도 힘든 삶을 살고 있는 것으로 생각한다.
정말 그런가? 나는 비록 경력이 5년 정도 밖에 되지 않고 회사도 2군데 밖에 다녀보지 않았지만 여태까지 그런 것은 느껴보지 못했다. 뜨거운 여름날에 와이셔츠가 온통 땀으로 쩔어서 영업하러 나갔다가 잘 안풀리고 들어와서 욕이나 실컷 얻어먹는 세일즈맨들에 비하면 시원한 사무실에 앉아서 커피 한잔 하며 코딩하는게 얼마나 편안한가.

사람들은 항상 자신이 하는 일을 더 고되고 힘들게 포장해서 자랑스럽게 말하는 경향이 있는 것 같다.
- 우리 부대군기는 진짜 빡셌어.
- 요즘 어린 애들은 버릇이 없어. 우리 때는 그런거 상상도 못했는데.
- 니가 몰라서 그렇지 우리 부서가 얼마나 힘든데.

프로그래머로서 스트레스를 받는 순간이 있다면 기능을 정해진 시간에 맞춰서 구현해낼 수 있을까 하는 약간의 초조함과 동료와 기술적으로 의견 충돌이 발생했을 때, 그리고 심각한 버그를 보고 받았는데 문제가 잘 안 풀릴 때 정도이다.

다른 직종에서 일을 해본적은 없기 때문에 비교해서 생각해볼 수는 없지만, 사람들이 생각하는 것처럼 프로그래머가 못해먹을 직종은 아닌 것 같다. 진짜 못해먹을 일 하면서 사는 사람들이 얼마나 많은데.

임백준씨의 에세이는 아주 즐겁게 읽은 반면에 다른 에세이들에서는 별로 재미를 느끼지 못했다.
이 책에 나오는 프로그래머들은 열심히 살아왔고 좋은 프로그래머들임에는 분명하지만 옆자리에서 흔히 볼 수 있는 평범한 프로그래머들이다. 그럼에도 불구하고 이미 프로그래머로써 무언가 큰 것을 이룬 사람들처럼 자서전을 쓰듯이 글을 썼기 때문에 재미가 떨어지지 않았나 싶다.

그러고 보니 정말로 무언가 큰 것을 이룬 국내 최고의 프로그래머들을 불러다가 어떻게 공부했는지 에세이를 써보라고 하면 그것도 참 재밌는 책이 될 것 같다.


세상을 뒤흔든 프로그래머들의 비밀 - 6점
에드 번즈 지음, 김도균 옮김/정보문화사

이 책은 여러 해커들에 대한 인터뷰를 담고 있다.
예전에 소개하기도 했던 책인 세상을 바꾼 32개의 통찰과 비슷한 종류의 책이다.

세상을 뒤흔든 프로그래머라고 제목이 지어지긴 했지만, 사실 제임스 고슬링 정도를 제외하고는 세상을 뒤흔들었다고 할만한 프로그래머는 별로 없다.
리누스 토발즈 정도는 되야 세상을 흔들었다고 할만할텐데 말이다.

게다가 거의 Java 쪽 사람들이라서 여러 분야의 해커 이야기를 기대했던 사람들에게는 조금 실망스러울 수도 있겠다. 그나마 앤드류 헌트나 데이비드 토마스 정도가 내게 익숙한 이름이고 나머지 사람들은 별로 들어보지 못한 이름들인데, 이것은 내가 Java를 많이 접해보지 않았기 때문일 수도 있겠다.

책의 제목처럼 여러 훌륭한 프로그래머들에게는 어떤 공통점이 있는지를 알아보는 것이 이 책의 목적이자, 인터뷰의 질문들이다.

이 책에서 언급되는 훌륭한 프로그래머들의 공통점을 정리하면 다음과 같다.

기본기에 충실하다.
 - 시스템의 동작 방식을 로우레벨 수준에서 잘 이해하고 있다.

호기심이 왕성하고 끈기가 있다.
 - 끊임없이 궁금해하며, 그런 궁금증을 풀어가는 과정에서 어려움에 봉착해도 쉽게 포기 하지 않는다.

막히면 잠시 쉬면서 해결책을 찾는다.
 - 잠시 다른 일을 하면서 불현듯 해결책을 떠올려 본 것은 많은 사람이 경험해본 일 일 것이다. 이들은 이런 경험이 많아서 그런지, 막히더라도 절대 초조해하지 않고 마치 자신이 곧 그 문제를 해결할 수 있음을 알고있는 것만 같았다. 여기서 '잠시'라는 시간은 하루 혹은 일주일 정도를 쉰다는 것은 아니다. 제임스 고슬링은 10분 혹은 1시간 정도를 다른 일을 하다 보면 마법같이 해결책이 나온다고 한다.

마지막으로 도구를 잘 다루는 것이 꼭 필요한 요소는 아니지만 대부분의 훌륭한 프로그래머들은 에디터나 개발관련 툴을 아주 잘 다룬다.

책 내용 중에 페이팔의 젊은 창업자인 친구 하나가 파이썬(문제를 해결 하는 방법은 한 가지여야 한다)과 펄의 철학(문제를 해결 하는 방법은 여러가지여야 한다)을 이야기 하면서 언젠가 귀도와 래리월이 논쟁하는 것을 본 적이 있다고 했는데, 정말 재밌었다고 한다. 하기사 그 정도 수준의 고수들이 논쟁하는 것을 보는 것은 흔치 않은 기회이고 재미있는 일임에 분명하다.
나는 래리월이 아주 젊잖고, 귀도가 다혈질인 사람일 것으로 상상되는데, 이 친구는 그 반대였다고 얘기한다.
정확히 어떤 내용인지 너무도 궁금해져서 구글을 통해 찾아봤지만, 찾을 수가 없었다.

나 역시 다른 사람들의 프로그래밍 습관을 지켜보며 어떤 차이점이 있나 하고 살펴보고는 하는데, 그 중 뛰어난 프로그래머 한 명에게서 특이할만한 사항을 발견했다.

코드를 작성하고 있는 동안에, 컴파일 혹은 빌드를 자주 하지 않는다.

그는 우선 코드를 작성하기 전에 로직을 머리 속에 잘 정리해 놓은 뒤에, 글을 쓰듯이 코드를 빨리 써내려 나간다. 보통의 많은 사람들이 이 과정에서 문법적으로 오류는 없는지 컴파일을 해보고, 혹시 문제가 있으면 얼른 수정하고 다음 코드를 작성하고는 한다. 그는 다른 사람들과는 다르게 함수 1개를 작성하던 5개를 작성하던지간에 절대로 중간에 컴파일 해보지 않고 끝까지 코드를 써내려 간다. 코드를 다 만들었으면 이제 컴파일 해볼만도 한데 자신이 쓴 코드에 문제가 없는지 한줄 씩 다시 꼼꼼히 읽어보고 머리 속에서 프로그램을 돌려본 후에 그제야 컴파일을 해본다. - 여기서 컴파일 까지 한방에 깔끔하게 된다면 완벽하겠지만, 대부분 그렇게 되지는 않았다. :)

나는 이 방식이 집중력을 계속 유지할 수 있고, 버그 없는 코드를 만드는데 도움을 준다고 느껴져서 혼자서 연습을 하고 있는 중이다.
따라하다보니, 나는 내 기억력이 한계치에 도달해서 이전에 무슨 코드를 입력했었는지 기억이 안나려고 하는 즈음에 무의식적으로 빌드 키를 누르는 나를 발견했다. 그리고 이렇게 잠시동안 빌드가 되는 순간에 집중력이 무너져서 이전에 생각하고 있었던 여러 로직들 중 하나를 까먹게 되곤 하는데, 컴파일이 성공적으로 되어 버리면 이런 까먹은 부분이 생각이 안나고 그대로 묻혀버리는 경우가 있다. 물론 이런 것들은 사소하거나 혹은 심각한 버그로서 다시 자신에게 돌아오게 될 것이다.

머리가 특별히 좋다면 처음부터 모든 로직을 꾸역꾸역 넣어 두고 프로그램을 짤수도 있겠지만, 보통의 두뇌를 가지고 있다면 차근차근 로직을 메모한 뒤에 한 번에 쭉 써내려간 뒤, 다시 한 번 자신의 코드를 리뷰하고나서 컴파일 해보는 것이 더 나은 프로그래머가 되기 위한 좋은 연습이 될 수 있을 것이다.

오늘 컴퓨터 프로그래머(CPQ) 자바 1급 시험을 보고 왔다.
이 시험에 대해서 알고 있는 사람은 아마도 많지 않을 것 같다.

한국 정보과학회에서 주관하고 있다고 하는데, 이 곳에 가면 정보를 얻을 수 있다.

나는 리눅스마스터라는 시험을 통해 우리들에게 어느 정도 알려져 있는 한국정보통신인력개발센터에서 이런 시험이 있다는 것을 알게 되었는데, 이 곳을 통해서도 역시 지원 신청을 할 수 있다.

한국정보통신인력개발센터에는 멤버쉽 제도라는 것이 있는데,
우수회원이나 특별회원들에게는 여러 특전이 있다.

그 중 하나는 1차 시험 응시료를 면제해 주는 것인데, 이 CPQ시험은 2차 시험이 없으므로 우수 회원 이상이라면 무료로 응시 할 수 있다.

나는 특별회원이라서 가끔씩 심심풀이로 무료 시험을 보러 가곤 하는데,
시간도 많이 들지 않고 자격증도 덤으로 생기게 되는 꽤 유익한 일이다.

오늘 시험은 동국대학교에서 봤다. 나는 동국대 하면 이동국밖에는 생각나지 않았었는데,
오늘은 확실히 동국대에 대한 이미지를 굳혔다.
추운 날씨의 일요일임에도 불구 하고 많은 학생들이 나와 공부를 하고 있던 모습이 인상적이었다.
허름한 건물 외관에 비해 내부 시설들은 꽤 잘 되어 있었다.

이 시험의 난이도는 그다지 어렵지 않다.
나는 C++ 1급과 Java 1급 시험을 치루어봤는데, 둘 다 대학교 때 배운 지식 정도면 충분히 합격할 수 있는 시험 수준이다.

시험 문제에 대해서는 마음에 안드는 점이 몇 가지 있다.
지난 번 C++ 시험을 볼 때에는 예문에 있는 코드가 오타 였는지 인쇄가 잘못된건지 모를 컴파일도 안되는 이상한 코드가 있었고,
오늘 자바 실기 시험에서는 위의 이미지를 보고 아래 Swing 코드를 작성하시오. 뭐 이런 문제가 있었는데, 그 이미지는 깨져서 보이지도 않았다. 어쩌라고.
이미지 주소를 보니 10.x.x.x/어쩌구 로 내부아이피로 되어 있었는데,
아마도 IHD 사무실 내에서만 테스트 한 번 해보고 시험지인 동국대로 가져와서는 정작 테스트 한 번 해보지 않고 그냥 문제를 바로 배포했는지도 모르겠다.

이런 것들은 주최측에서 조금만 신경쓰면 충분히 보완될 수 있는 문제인데 -그리고 당연히 그래야한다.
아직 그런 것 조차 신경 안쓰는 걸 보면 국가공인 자격증이 되기에는 10년은 걸릴 듯 하다.

또 한 가지 맘에 안드는 점은 문제의 20% 정도가 다른 주제의 내용이라는 것이다.
아니 자바 시험 보는데 퀵 소트하고 머지소트에 대해서 왜 물어보며 폭포수 모델 같은 건 도대체 왜 나오는 건지 모르겠다.
어디 80년대 국가고시에나 나올 법한 이런 썩어빠진 문제들은 빨리 없어져야만 한다.
좋은 자바 문제 고르기에도 바쁜 판에 자료구조하고 소프트웨어 공학은 왜 껴넣는 건지.

이런 점들이 빨리 개선되어 훌륭한 국가 공인 자격증으로 인정 받게 되기를 진심으로 바란다.

기존 기출 문제들은 이 곳에서 확인 할 수 있다.
http://exam.ihd.or.kr/pds/getFile.asp?id=869&tb=tbl_PDS_040100&code=
http://exam.ihd.or.kr/pds/getFile.asp?id=838&tb=tbl_PDS_040100&code=

멤버쉽 제도에 대해서 관심이 있는 사람들이 있을 것 같은데,
다음 링크에서 확인 할 수 있다.
http://exam.ihd.or.kr/exam_community/commu_01_2.htm
무료 응시 뿐만아니라, 시험 감독이나 시험 채점등의 재밌는 아르바이트 또한 할 수 있다.
상반기, 하반기 2회 뽑는데, 자격요건이 된다면 신청기간에 간단한 자기소개서를
제출하면 된다.