월간 '마이크로소프트웨어' 연재소설
2016년 책 50권 읽기 마흔두 번째 책입니다.
소설입니다. 거의 읽지 않는 분야입니다.
올해는 '덕혜옹주'에 이은 두 번째 소설입니다.
부끄럽게도 처음 이 책을 선택할 때만 하더라도 소설인 줄 몰랐습니다.
책을 펼쳐보고 소설인 줄 알고 실망을 했다가 읽으면서 오히려 더 필요하다고 생각이 되었습니다.
책을 다 읽고 나서는 제가 준비하고 있는 일과 관련해서 오히려 더 필요했던 책이라는 생각이 들었습니다.
과연 내가 다른 이들에게 개발자(프로그래머)의 삶에 대해서 깊이 있게 얘기를 해 줄 수 있을까?
이 질문을 스스로에게 던져 보았습니다.
자신 있게 '그렇다'라고 대답할 자신이 없었습니다.
잠깐 개발자의 길을 걸었지만 그리 오랜 시간이 아니었기에 개발자의 삶에 대해 깊이 있는 얘기를 해 줄 수 없을 것 같았습니다.
만약 프로그래머의 삶을 살고자 하는 아이들이 있다면...
또 궁금한 게 많은 아이들이 개발자에 생활에 대해 진지하게 질문을 던진다면...
이 책을 읽으면서 예전의 기억들을 다시 떠 올려 볼 수 있어서 좋았습니다.
또 책을 읽으면서 그때의 제 선택을 잠시나마 후회하는 시간도 가졌습니다.
그러나 이젠 개발자의 삶을 살고자 하는 것이 아니라 개발자를 꿈꾸는 아이들에게 기회를 제공하고 도움을 제공하는 일을 통해서 그 끈을 이어가고자 합니다.
그런 측면에서 이 책은 개발자의 삶을 간접적으로 체험할 수 있어서 좋았습니다.
혹 '프로그래머'하면 어떠한 모습을 떠 올리시나요?
참고로 제가 대학시절에 친구들끼리 '프로그래머'에 대해서 얘기를 나눌 땐 이런 말들이 오갔습니다.
고독하다.
외롭다.
쾡한 눈.
덥수룩한 수염.
골초... 넘쳐나는 재떨이.
골방
아마 이러한 내용에 공감하신다면 당신은 '불혹' 넘긴 나이가 아닐까? 추측해 봅니다.
아직도 혼자서 코딩을 하는 프로그래머들이 있지만 대부분은 SI 업체에서 조직 속에서 코딩을 합니다.
회사 내에서도 개발자, 설계자, 코더, 테스터, QA, 배포자, 설치자, 유지보수관리 등 일반 제조업에서와 마찬가지로 각자 자신의 소속에서 맡은 바 역할을 수행하는 것입니다.
저는 이 생활을 그리 오래 경험하지 못했기에 이 책을 통해서 오늘날 그것도 최고 수준인 뉴욕의 프로그래머의 생활을 책을 통해 경험할 수 있었습니다. 대부분 전문적인 용어를 다루기 때문에 프로그래밍 경험이 없는 경우 책을 읽기가 조금 따분하고 재미가 없을 수도 있습니다. 그렇지만 중요한 것은 그런 용어들이 아니라 그들의 삶과 생활에 대한 이해이기 때문에 굳이 모르는 용어들을 알려고 할 필요는 없습니다.
잠시 책의 내용을 통해서 프로그래머의 생활을 살펴보겠습니다.
나이는 한 살, 두 살 늘어나고 있지만 프로그래머가 해야 하는 공부는 줄어드는 법이 없는 것 같다.
신뢰를 받는 프로그래머는 점점 어렵고 중요한 일을 맡으면서 아키텍트나 관리자로 성장을 하게 되지만, 신뢰를 받지 못하는 사람은 사무실 구석에 앉아서 평생 키보드를 두드리는 코더(coder)가 될 가능성이 높다.
다른 사람들 틈에 섞여서 일을 열심히 하는 '시늉'만 잘해도 버틸 수 있는 직종이 있다. 하지만 프로그래밍이라는 직업에는 그런 측면이 전혀 없다. 달리지 못하는 사람이 축구선수를 할 수 없고, 아름다운 소리를 만들어 내지 못하는 사람이 첼로 연주자가 될 수 없는 것처럼, 품질이 뛰어난 코드를 생산할 수 없는 사람은 프로그래머라는 직업을 유지할 수 없다.
코딩이 끝나는 시점은 소스코드의 변경이 끝나는 시점이 아니라 자신의 코드를 확인하기 위한 유닛 테스트 코드의 작성이 끝나고, 요구사항이나 버그 리포트에 적힌 내용을 한 줄씩 확인하면서 철저하게 기능적 테스트를 수행하고, 필요한 부분이 있으면 다시 한번 수정하고, 최종적으로 코드리뷰가 끝나는 시점을 의미한다. 이 모든 것은 '코딩'의 기본 조건이다. 키보드를 두드리는 것은 코딩의 일부에 지나지 않는다.
실수를 못 견뎌하고 두려워하는 사람은 실수로부터 아무것도 배우지 못하는 사람만큼이나 성장 가능성이 없다. 나날이 성장하는 사람은 실수를 두려워하지도 않고 거부하지도 않는다. 실수는 아픈 고통을 안겨주지만 성장하는 사람은 그것을 자신의 일부로 끌어안고 실수와 함께 나아간다. 실수 자체는 비웃을 일이 아니다. 다만 실수와 함께 성장하지 못하는 사람은 웃음거리가 될 만하다.
프로그래밍을 하다가 자기의 코드가 뒤틀리고 있는 생각이 들면 곧바로 키보드를 내려놓고 뒤로 물러서는 것이 현명한 프로그래머의 자세이다. 뒤로 물러서서 심경을 차분히 가라앉힌 다음 필요한 리펙토링을 하고, 과감하게 설계를 고치고, 필요한 유틸리티 코드를 작성하는 정지 작업을 펼쳐서 코드의 본문이 최대한 간결하도록 만드는 것이다.
프로그래머의 삶이 그리 쉽거나 녹녹하지 않습니다. 그럼에도 그 생활을 갈망하는 이들의 얘기를 들어보면 프로그래머의 일을 단순한 일로 생각하지 않고 음악가나 미술가와 같은 창작 활동으로 생각하는 이들이 많다는 것입니다. 음악가나 미술가가 자신이 창작한 음악이나 그림을 대중이 듣고 보면서 즐거워하는 것으로 인해 기쁨을 얻는 것처럼 프로그래머들도 자신이 만들어 낸 코드로 인해 이용자들에게 편의성을 제공해 준다는 것에서 가치는 찾기 때문입니다.
그러나 가끔 만나게 되는 국내 개발자들이나 그 길을 걷고 있는 후배 녀석들의 얘기를 들어보면 아직도 해외와 달리 국내는 프로그래머의 처우가 그렇게 좋지는 않다고 합니다. 그러나 요즘은 사회적인 분위기가 프로그래머를 중시하는 쪽으로 바뀌어 가고 있고, 무엇보다 산업이 그렇게 흘러가기 때문에 국내도 프로그래머를 중시하는 흐름이 곧 정착되지 않을까 생각해 봅니다.
책에서 인용한 부분에서도 언급이 되었지만 프로그래머의 삶은 말보다 실력이 모든 것을 평가해 줍니다. 때문에 끊임없이 새로 나오는 기술들을 익혀야 합니다. 이 부분이 상당한 부담으로 다가오는 부분입니다. 오죽하면 40대가 넘어가면 코더(coder)로서 생계를 유지하기가 힘들다는 말이 있습니다. 때문에 그전에 역량을 인정받아 프로젝트 매니저(PM)이나 아키텍트로 전환해야 합니다. 이러한 부분은 국내와 해외가 많이 다른 가 봅니다. 해외에는 나이가 많음(40대, 50대)에도 불구하고 코더의 삶을 살아가는 분들이 많다고 합니다. 어떻게 생각하면 국내의 코더들이 완전히 하나 이상의 프로그램을 익히지 못해서 새로운 프로그램이 나오면 적응하지 못하기 때문에 그렇지 않나도 생각해 봅니다.
이 책을 통해서 프로그래머의 삶에 대해 다시 한번 생각해 볼 수 있어서 좋았습니다. 이런 분야의 책들도 좀 더 많아져야 프로그래머를 꿈꾸는 이들이 간접적으로 나마 체험을 통해 미리 경험해 볼 수 있을 것 같습니다.