Post

12년 만에 다시 읽어본 개발 서적에 대한 이야기

시작하며

학창 시절 개발자에 대해 제대로 알고 있지 않았던 시절 처음 접한 개발 서적에 대한 이야기를 해보려고 합니다.

12년 전의 감상

고등학교 시절 단순하게 독후감을 쓰기 위해 학교 도서관을 둘러보다가 새롭게 들어온 책 중에서 적당한 책을 발견해서 읽었던 것이 단순한 계기입니다.

소설이라고는 하지만 책에서 개발 용어가 상당히 많이 나와서 그걸 이해하지 못한 채 난해함을 느끼면서 책을 읽었습니다. 물론 용어에 대한 설명이 적혀 있기는 하지만 아예 사전 지식이 없는 상태로 설명을 읽어도 의문은 해결되지 않은 채 더 미궁 속으로 빠져드는 상황이었습니다.

아무래도 이해하지 못하는 부분이 많아서 그런지 중간마다 이해가 가지 않는 부분을 넘기면서 읽다 보니 사건에 대해서 이해하지 못하고 넘어가게 되는 느낌이었습니다.

대체 이들은 왜 서로 갈등하고 있는 것이지? 게다가 인물들에게 공감하지 못하는 부분도 상당히 많이 존재했습니다. 사실 공감 능력이 부족한 대문자 T여서 그런 걸 수도 있습니다

결과적으로는 어찌어찌 독후감을 쓰기는 했지만 이게 책을 읽었다고 봐야 하나 책의 줄거리에 대한 감상을 소설처럼 지어내서 썼다고 봐야 할 것 같습니다.

현재로 돌아와서

오랜 시간이 지나고 과거의 기억의 잔재로만 남아 있었던 이 책을 다시 읽어보고자 생각한 이유는 기억에 남았던 이야기에 대한 궁금증을 해소하기 위해서였습니다.

책에서는 주인공이 같은 개발팀에 있는 팀원의 버그를 잡기 위해 도와주는 장면이 존재합니다. 여기서 처음에 주인공은 그가 버그를 잡는 것을 도와주면 도움을 주는 것이 아닌 일을 떠맡게 되어버린다는 것을 인지하고 있기 때문에 도움을 주기를 꺼리지만 결국에는 버그에 대한 호기심 때문에 결국에는 도와주는 장면이 나옵니다.

회사에서 일을 할 때도 앞선 상황이 상당히 자주 일어나는 경우여서 이런 일이 일어날 때 책의 저 부분이 생각났습니다. 그렇지만 정작 상당히 오랜 시간이 지나서 주인공은 이 상황을 어떻게 해결했지? 아니면 했었나? 라는 의문을 가지고 있었습니다.

책을 찾아보려고 시도했었는데 책 이름이 뭐였었지 뭔 프로그래머였던 기억은 있는데 사실 이것도 정확한지 약간 의심했습니다 확실하게 기억이 나지 않아서 포기하고 있던 와중에 최근에 알라딘 중고서점을 돌아다니다가 우연히 발견해서 다시 읽어볼 수 있는 기회가 생겼습니다.

정말 즐거운 마음으로 책을 읽었습니다. 그래서 주인공인 영우는 어떻게 같은 팀원인 마이크가 잡고 있는 버그를 함께 해결하였을까? 의문을 해결할 수 있을 것 같았지만 실제로 마주했던 스토리는 달랐습니다. 이 버그를 해결하려는 이야기는 짧은 스토리였을 뿐이고 실제로 어떠한 방식으로 해결이 되기 전에 다른 이야기인 팀의 리더격인 인물이 그만둔다는 소식과 함께 그래도 다른 스토리로 넘어가게 됩니다.

영우라는 인물이 마이크에게 도움을 주는 게 아니라 버그를 떠맡게 되는 상황을 자주 겪어서 이번에는 실제로 코드를 치는 것에 개입하지 않고 말로만 도움을 주는 방식을 취하다가 앞선 다른 사건으로 넘어가게 됩니다. 뭔가 찝찝한 느낌이 들기는 했지만 12년 만에 다시 읽어본 책은 상당히 마음에 들었습니다.

그 시절에 몰랐던 용어여서 난해함을 느꼈지만 지금은 읽으면서 와 아는 게 나온다 하면서 읽었던 것 같습니다. JiraIntelliJ를 언급해서 이것들이 어느 정도 오래되었다고는 알고 있었지만 07년도 책에도 나올 정도로 오래되었다고 생각하면 왜인지 모르게 신기한 기분도 들었습니다.

기대하고 있던 영우와 마이크에 대한 이야기에서 정답을 얻진 못했지만 각기 다른 인물들에 대한 단편적인 이야기들이 실제로 일하면서 느꼈던 상황들과 상당히 비슷해서 많은 공감을 느꼈고 해결법이나 상황 대처 능력과 관련해서 여러 인사이트를 얻을 수 있는 기회였습니다.

마음에 들었던 구절들

인상 깊은 구절 들이 상당히 많았습니다. 책에서 등장하는 것들도 있고 챕터 시작할 때 몇 가지의 관련된 구절을 소개해 주는데 상당히 공감가는 내용이 많았습니다.

자기가 짠 코드에서 버그를 찾는 것은 매우 어려운 일이다. 자기가 짠 코드에 버그가 없다고 생각할 때는 더욱 그러하다. -스티브 맥코넬

이 부분에서 저는 어려움을 느끼는 것이 버그가 없다고 생각하는 것 보다 주어진 요구사항에 대한 시나리오가 이미 구성된 상태이기 때문이라고 생각했습니다.

이미 개발자의 머리속에서 완성된 시나리오에서는 테스트를 어떻게 해도 버그가 나오지 않기 때문에 버그를 찾는 것이 어렵다고 느끼는 것이 아닐까라고 개인적으로 생각했습니다.

우리는 모두 타협이 필요하다는 사실에 동의한다. 다만 언제 타협을 할 것인가에 대해서 동의하지 못할 뿐이다. -래리 월

프로그래머로서 일하는데 있어서 중요한 것은 주어진 질문에 대한 정답을 찾는 능력이 아니라. 질문 자체를 정확하게 구성하는 힘이다. -본문 중에서

개발자의 연차 구분 없이 상당히 중요한 능력이라고 생각합니다. 질문이라는 것 자체가 여러 상황일 수도 있지만 질문에 대한 답을 얻기 위해서는 질문을 정확하게 구성해야하며 질문을 정확하게 구성한다는 것은 문제에 대해서 올바르게 이해를 했다는 것을 의미하는 것이기 때문입니다. 결과적으로 질문을 제대로 하지 못한다는 것은 무언가에 대한 이해가 없는 상태라고 볼 수 있기 때문입니다.

프로그래밍 솜씨가 뛰어난 사람일수록 자신의 코드를 믿지 못하여 반복해서 테스트를 수행하고, 프로그래밍 솜씨가 떨어지는 사람일수록 자신의 코드가 완벽하다는 순진한 믿음을 갖는다.

실수를 못 견뎌하고 두려워하는 사람은 실수로부터 아무것도 배우지 못하는 사람 만큼이나 성장이 없다. -본문 중에서

책에서는 로버트라는 인물에 대한 스토리가 진행될 때 나오는 구절입니다. 로버트는 간단하게 수정한 코드에서 버그가 발견되었는데 이미 수정본을 냈다는 상황과 급박한 시간의 상황 등이 겹쳐서 그는 끝내 수정하지 못하고 팀원들이 수정한 상황이 발생한 것 입니다. 일에 대한 책임감 때문에 결국에 로버트는 회사를 그만두게 됩니다.

누구나 저지를 수 있는 실수에서 비롯되었음을 다른 인물들은 잘 알고 있었지만 로버트는 자기 자신을 끝내 용서할 수 없었던 것 입니다.

나날이 성장하는 사람은 실수를 두려워하지도 않고 거부하지도 않는다. 실수는 아픈 고통을 안겨주지만 성장하는 사람은 그것을 자신의 일부로 끌어안고 실수와 함께 나아간다. 실수 자체는 비웃을 일이 아니다. 다만 실수와 함께 성장하지 못하는 사람은 웃음거리가 될만하다. -본문 중에서

책에서는 자세한 스토리가 나오진 않았지만 고객에게 실제로 버그가 전달된 상황도 아니였으며 업데이트를 미루고 팀원 들이 문제를 해결하고 수정본을 전달한 상황이였습니다.

심리적인 위축과 자신을 용서할 수 없었던 로버트의 상황도 이해가 가지만 일에서는 완벽에 가까울 수는 있지만 완벽한 것은 존재하지 않는 법이니 책의 내용처럼 로버트가 실수와 함께 나아갔으면 좋았을 탠데라는 생각을 하였습니다.

거짓과 부풀리기가 통하지 않는다는 점에서 보면 프로그래밍은 과학과 마찬기자다. 거짓이 일시적으로 통할 수는 있다. 하지만 지속적인 거짓과 부풀리기로 자신의 경력을 만들어갈 수 있는 사람은 없다. -본문 중에서

이외에도 상당히 괜찮은 구절 들이 많이 있었는데 글에 이것들을 전부 담기에는 너무 많을 것 같아서 일단은 이 정도만 한 번 나열해 보았습니다.

기술적인 부분에서 많이 나오지는 않지만 07년도에 나온 책인 만큼 현재와는 약간 다른 점들도 있겠지만 개발자로서 일어나는 일에 집중해서 읽어보면 상당히 공감이 가는 부분도 많고 가볍게 읽을 만해서 읽어보시는 것을 추천해 드립니다.

끝마치며

벌써 글또 활동을 한지 14주가 지났네요 여전히 2주마다 하나의 글을 작성하는 것에 어려움을 느끼고 있기는 하지만 앞길이 보이지 않던 막막한 시절에 비하면 그래도 약간은 적응을 한 것 같은 느낌이 듭니다.

개인적인 이야기지만 8회차 글을 제출하는 시기에 여행을 가기 때문에 조금씩 시간을 내서 글을 미리 써놔야 화를 방지할 수 있겠네요

그러면 이번 글은 여기서 마무리하고 다음에는 조금 더 좋은 글로 찾아뵙겠습니다. 감사합니다.

This post is licensed under CC BY 4.0 by the author.