Skip to main content

프로그래머의 독서법

세상에는 정말 다양한 많은 의견들이 존재한다. 이런 의견들이 대립할 경우도 있다. 때론 의견대립으로 한 국가업무가 정지되기도 한다. 최근 미국 정부가 셧다운(Shutdown) 된 것도 이와 비슷한 이유이고 매일 뉴스 거리가 되는 정치 이야기가 끊임없이 흘러나오는 것도 비슷한 이유이다. 정치적으로 보면 지난 약 250년간 사회주의와 민주주의의 대립이 그러했고 현재 보수와 진보와의 싸움도 그러하다. 의견 대립은 토론을 통하여 때로는 발전적인 방향으로 나아가기도 하지만 어떤 것은 섞일 수 없는 물과 기름처럼 영원히 평행 대립하기도 한다.

소프트웨어 개발 방법에도 마찬가지로 다양한 의견이 존재하고 있다. 관점 지향(Aspect), 애자일(Agile), 모델 주도(Model-Driven) 등 이외에도 많은 방법들이 존재한다. 이뿐만 아니라 개발자 개개인이 가지고 있는 더 세부적인 방법론과 이념들까지 포함하면 정말 수도 없이 많은 의견이 있다고 해도 과언이 아니다. 그리고 개발자들은 개인 주장이 너무 강하고 자신이 최고라고 생각하는 경향[1]이 있기 때문에 개발 방법론도 이론은 쏟아져 나온다고 할지라도 실제 업무와는 무관한 경우가 적지 않다.

다시 책 주제로 돌아와서 얘기하자면 책은 의견을 표출 장소이다. 최근 인터넷과 스마트폰의 발달로 SNS(Social Network Service)를 통해 많이 의견을 나누고 있지만 140자 또는 약간의 더 긴 글 만을 남길 수 있는 이런 비좁은 공간은 자신의 의견을 정확하고 논리적이게 표현하기에 너무나도 부족하다. 때로는 SNS의 짧은 글 때문에 유명인사들이 곤욕을 당하는 경우가 적지 않은데 최근 기성용의 사례가 대표적이다. 기성용이 리더는 묵직해야 한다는 식의 글을 SNS에 남긴 것 때문에 문제가 됐는데 이렇게 짧은 글을 가지고 기자들은 엄청나게 기삿거리를 생산했으며 네티즌들도 가만히 있지 않았다. 잘은 모르지만, 기성용의 그 당시 실제 생각과는 정확히 같지 않더라도 말이다. 결론적으로 의견을 좀 더 논리적이고 설득력 있게 표현하려면 짧은 글 보다는 책같이 긴 글이 더 낫다는 결론이다. 교감신경계(sympathetic nerve)[2]도 SNS라고 불리지만 SNS(Social Network Service)로는 전혀 교감하고 있지 못하니 난센스 일 뿐이다.

그래서 책은 중요하다. 책을 읽는 방법에도 다양한 견해가 존재한다. 어떤 사람은 책은 조용한 곳에서 읽는 곳이 좋다고 하고 또 어떤 사람은 적당히 시끄러운 카페같이 곳이 독서에 도움이 된다고 하는 사람도 있다. 너무 다양한 의견이 있었기 때문에 뭐가 정확한 것인지 나는 확인할 필요가 있었다. 그래서 책은 한 권 사기로 마음먹었다. 결국, 나는 '나를 성장시키는 독서법'[3]을 구매했다. 책에서 말하고 있는 독서법의 주된 내용은 다음과 같다.

소통하라. 이 책의 저자도 책이라는 것은 사람의 의견을 표현한다는 점에서 기존에 내 생각과 같이했다. 저자는 더 나아가 토론이라는 것이 자신을 발전시키기 위해서는 꼭 필요하다고 주장했다. 그래서 책을 읽을 때에도 저자와 토론을 해야 하는데 책은 일방적인 출판물이기 때문에 독자는 책의 여백에 질문을 해보거나 좀 더 적극적인 방법으로 SNS를 통해 해당 저자에게 질문을 해보거나 독서 카페에 가입해서 같은 책을 읽은 사람들과 의견을 나눠보라고 했다.

독서량을 따지지 마라. 저자는 독서량은 크게 중요하지 않다고 했다. 사실 가수 김태원이 독서를 전혀 하지 않았음에도 불구하고 아름다운 음악과 가사를 만들 수 있다는 점과 스탈린이나 히틀러는 많은 독서를 했어도 올바른 가치관을 가지지 못했다는 점을 예로 들었지만 나는 이것이 그다지 적절한 예라고는 생각하지 않는다. 독서량과 실제 그 사람이 가지고 있는 지식이나 인격과 별개라는 점에서는 동의하지만, 독서를 많이 한 사람이 더 현명할 가능성이 높다는 내 경험적 확률 또한 배제할 수 없기 때문이다.

책장을 없애라. 독서량을 따지지 말라는 주장의 연장에서 책장을 없애라고 주문한다. 왜냐면 책장은 보여주기 위한 어떤 장식물에 지나지 않기 때문이다. 책장이 있으면 독서의 질보다는 독서량에 집착하게 된다. 어떤 이는 독서는 별로 하지 않으면서도 책만 많이 구입하기도 한다. 그리고 마치 자기가 많은 독서를 하는 것 같은 착각으로 스스로 위안으로 삼기도 한다.

정독하라. 결론적으로 저자와 진정한 소통을 하기 위해서, 독서량에 구애받지 않는 진정한 독서를 하기 위해서는 정독이 필수적이다. 적은 책을 읽더라도 정독하는 것이 필수적이다. 우리 선인들이 책의 내용을 모두 암기하기까지 읽고 또 읽은 것처럼 말이다. 물론 지금은 이렇게까지는 할 필요 없지만 말이다.

나는 이런 독서법을 나의 독서법에 한번 적용해서 생각해보기로 했다. 그렇다고 책에서 소개한 독서법의 모든 내용을 지킬 생각은 애초에 없었다. 내가 이런 과학적 근거 없는 주장을 좋아하지 않는다는 이유도 있지만 누가 하란 대로 똑같이 한다고 모두 그 사람과 똑같이 성공하지 못할 것이란 걸 이미 알고 있기 때문이다.

나는 소통하라는 의견에는 동의했다. 먼저 소통하기 위해서 나는 내가 관심 있는 분야의 위대한 인물들을 정리했다. 이 작업은 별로 어렵지 않았다. 트위터(Twitter)나 구글+(Google Plus)에서 그 인물들을 찾았다. 고맙게도 대부분 사람들은 SNS를 하고 있었다. 예를 들면 레리 페이지(Larry Page)나 머리사 마이어(Marissa Ann Mayer), 빌 게이츠(Bill Gates) 같은 사람들이다. 그들은 이미 많은 팬들을 가지고 있었고 소통하고 있었다. 나는 이제 이 사람들을 팔로우(Follow)했고 대체로 많은 시간은 그들의 의견을 듣는 데만 집중하고 있긴 하지만 아주 가끔은 질문이나 반응을 보이고자 노력하고 있다. 그리고 앞으로도 이 사람들이 쓴 책 내용에 의문이 생길 경우 주저 없이 토론할 마음의 준비가 되었다.

독서량은 좀 따지기로 했다. 소프트웨어 분야에서는 최신 정보 서적의 독서가 곧 지식이 되기 때문이다. 최신 도서는 독서량을 따져 읽기로 했지만 명서들은 독서량을 따지지 않고 정독하기로 했다. 그리고 API 레퍼런스 도서는 부담 없이 필요한 부분만 발췌 해서 읽기로 했다. 예를들면 최근 하둡(Hadoop)이나 HTML5같은 기술을 설명하는 책은 빠르게 많이 읽고 The Code Book[4] 이나 Compiler[5] 같은 분야별 명서들은 독서량보다는 얼마나 이해했는지를 생각하기로 했다.

책장은 없애지는 않기로 했다. 하지만 두 번 다시 읽지 않을 책은 다 버리거나 중고로 팔기로 했다. 보통 나는 소설은 거의 두 번 읽지 않는다. 그리고 컴퓨터 서적은 명서와 고전을 제외하고는 거의 두번 읽지 않는다. 기술 트랜드를 소개하는 책의 경우 최대 2년 넘게 보관할 필요 없다. 그만큼 기술이 빨리 바뀌고 있기 때문이다. 중고로 책을 처분하는 방법은 간단하다. 바로 온라인 서점 사이트를 이용하는 것인데 꽤 괜찮은 가격을 받고도 팔 수도 있기 때문에 판매하는 재미도 쏠쏠하다. 나는 이미 꽤 많은 책들을 버리거나 판매해서 책장을 많이 비워 놓은 상태이다.

결론으로 종합해보면 좀 허탈하게 들릴지 모르겠지만, 독서법에는 정답이 없다. 하지만 한번 쯤 생각해볼 만한 추천하는 방법들이 있는데 그것들은 다음과 같다. 책은 세상의 다양한 의견을 들을 수 있는 소통의 장 이다. 다양한 의견을 알아야 발전할 수 있지만, 이 또한 절대적이지는 않다. 의견을 확고히 하려면 토론과 소통이 필요한데 요즘은 SNS를 통해서 저자를 실제로 만나지 않더라도 쉽게 가능하다. 결국, 말도 안 되는 결론이 되었지만, 독서의 방법을 찾고 있다면 자기 마음대로 하라는 것이다. 하지만 무엇이 나를 성장할 수 있게 하는지 방법은 계속 고민해야 한다.

이 글을 읽는 사람들도 마찬가지이다. 내 글이 맘에 들지 않는다면 읽지 않으면 그만이다. 하지만 나와 토론하고 싶으면 댓글이나 내 SNS를 통해서 나에게 연락할 수 있다. 나의 잘못을 바로잡고 새로운 것을 깨우쳐줄 토론은 언제나 환영한다.


References

[1] Jong-Ha Ahn. "개발자들은 왜 자신이 최고라고 생각할까? - 라떼군 이야기." 2013. 18 Oct. 2013 <http://www.mrlatte.net/2013/03/blog-post.html>
[2] "교감신경계통 - 위키백과, 우리 모두의 백과사전." 18 Oct. 2013 <http://ko.wikipedia.org/wiki/%EA%B5%90%EA%B0%90%EC%8B%A0%EA%B2%BD%EA%B3%84%ED%86%B5>
[3] "나를 성장시키는 독서법 - Daum 책." 2011. 18 Oct. 2013 <http://book.daum.net/detail/book.do?bookid=KOR9788960601994>
[4] "The Code Book: The Science of Secrecy from Ancient ... - Amazon.com." 2012. 18 Oct. 2013 <http://www.amazon.com/The-Code-Book-Science-Cryptography/dp/0385495323>
[5] "Compilers: Principles, Techniques, and Tools: Alfred V. Aho, Ravi ..." 2006. 18 Oct. 2013 <http://www.amazon.com/Compilers-Principles-Techniques-Alfred-Aho/dp/0201100886>

Popular posts from this blog

클라우드 컴퓨팅(Cloud Computing) 기술 정리

1. 클라우드 컴퓨팅(Cloud Computing)이란?

클라우드 컴퓨팅에 대해서는 현재 매우 다양한 정의가 존재한다. 이 중 몇 가지를 정리하면 다음과 같다. 첫 번째 정으로 클라우드 컴퓨팅은 다양한 클라이언트 디바이스에서 필요할 때 언제든지 인터넷을 이용한 공유 풀에 있는 서버, 스토리지, 어플리케이션, 서비스 등과 같은 IT 리소스에 쉽게 접근할 수 있게하는 모델이다.

또 다른 정의로는 서로 다른 물리적 위치에 존재하는 컴퓨터들의 리소스를 가상화 기술로 통합해 제공하는 기술이라고도 생각할 수 있다. 개인적으로 클라우드 컴퓨팅의 개념을 이해는데 세일즈포스닷컴(www.salesforce.com)[1]이 만든 이 동영상[2]이 전반적인 이해를 돕는데 매우 유용하다. 아래 그림은 여러 대표적인 클라우드 서비스들의 사용 예를 보여주고 있다.



1.1. 클라우드 컴퓨팅의 장점[4]

사용자가 자신의 필요에 따라 무한정의 컴퓨팅 자원을 사용할 수 있다는 환상(Illusion)을 제공한다. 그러므로 사용자는 하드웨어와 소프트웨어 시스템을 제공하는 계획을 미리 세울 필요가 없다. 사용자는 작은 시스템으로부터 시작할 수 있고 시스템 자원에 대한 요구가 증가함에 따라 시스템 자원을 증가시키면 된다. 필요에 따라 짧은 시간을 단위로 (예를 들어 프로세서를 시간 당 또는 스토리지를 날짜 당) 사용하고 비용을 지불하면 되고 필요가 사라지면 자원을 더 사용하지 않을 수 있다.

1.2. 기존 클라우드 컴퓨팅 사례1.2.1. 아마존
EC2(컴퓨팅 서비스)Auto Scaling(자동으로 서버 생성 가능)Elastic Load Balancing(소프트웨어 로드벨런싱 기능)CloudWatch(모니터링 정보 제공)Amazon Elastic Block Store(EBS, 빠르고 안정적인 스토리지)Amazon Simple Storage Service(Amazon S3, 스토리지 서비스)SimpleDB(데이터베이스 서비스)
1.2.2. 구글
GFS(구글파일시스템, 대용량 파일 처리 가능 시스템)MapR…

규칙기반 전문가 시스템 (Rule-based expert system)

컴퓨터로 어떤 일을 시킬 때 보통은 명확한 규칙에 따라서 처리하게 된다. 그 이유는 아직 컴퓨터는 인공지능을 갖지 못하였다. 인간처럼 여러 가지 지식과 현상을 조합해 사고하지 못한다는 말이다. 그 때문에 사람이 컴퓨터의 능력을 이용해 어떤 일을 처리할 때는 일련의 규칙이 필요했다. 예를 들면 IF … Then … Else로 표현되는 규칙을 적용하는 것이다.

하지만, 실생활의 문제들은 이것들도 표현할 수 없는 것들이 너무 많다. 인간이 생각하는 거의 모든 것들이 이런 모호함의 집합이다. “오늘 날씨 너무 덥다. 시원하게 에러컨좀 틀어!”라고 했을 때 “너무 덥다.”, “시원하게” 등의 말들은 컴퓨터가 처리할 수 없는 것들이다. 몇 도로 온도를 유지했을 때 시원하다고 느끼는지 컴퓨터 자체만으로는 알 수가 없다. 컴퓨터는 정확히 수치화된 데이터만 가지고 처리하는 기계이기 때문이다. 이런 문제들을 처리하는 여러 방법의 하나인 규칙기반 전문가 시스템(Rule-based expert system)에 대해 얘기해 보겠다.

이처럼 컴퓨터가 처리해야 하는 문제들은 어떤 분야의 전문가가 처리하던 것을 컴퓨터가 대신하는데 의미가 있다. 나는 이것을 전문가의 지식을 처리한다고 정리한다. 그리고 전문가라고 불리는 사람들은 어떤 지식에 대해 규칙을 만들 수 있는 사람이고 규칙이란 앞서 얘기했던 대로 IF … Then … Else 형태로 표현할 수 있는 것을 말한다.

규칙기반 전문가 시스템은 관련주제에 지식이 풍부하고 관련 문제를 푸는데 능숙한 주제 전문가(domain expert), 전문가 시스템을 테스트하고 규칙을 추론할 수 있는 지식공학자(knowledge expert), 전문가 시스템의 개발 리더인 프로젝트 관리자(project manager), 프로그래머(programmer) 그리고 최종사용자(end-user)로 구성되어 있다.

또한, 규칙기반 전문가는 기반지식(knowledge base), 데이터베이스(Database), 추론 엔진(Interface engine), 해설설비…

인터넷이 우리 사회에 미치는 영향

믿기 어렵겠지만 몇 년 전만 해도 간단한 정보를 검색하기 위해선 백과사전이 필요했고 적은 분량의 백과사전에서 찾을 수 없을 땐 도서관에 가야 했고 또 작은 도서관에서 찾을 수 없을 땐 좀더 큰 도서관으로 가야 했었다. 과연 지금의 중학교, 고등학교 학생들은 과연 몇 명이나 이래야만 했던 사정을 이해해줄지 모르겠다.

하지만 이제는 사정이 달라졌다. 인터넷의 등장으로 예전처럼 정보검색에 수많은 시간과 노력을 쏟지 않아도 더 쉽게 더 좋은 자료를 검색할 수 있고 그를 여러 가지 형태의 미디어로 접할 수 있는 시대가 되었다. 예전에 ‘팀 버너스 리(Tim Berners-Lee)’ 가 처음으로 구체적으로 주장했던 하이퍼미디어(Hypermedia)와 그로 이루어진 인터넷으로 인해 우리 생활은 많이 변화했고 또 이제는 없어서는 안될 것으로 멀티미디어 환경으로 진화해 왔다는 사실은 아무도 부인하지 못할 것이다.

사실 인터넷의 등장만으로도 우리에겐 막대한 영향을 끼쳤다. 하지만 여기서 인터넷의 멀티미디어로서의 역할을 배제한다면 그 영향력을 전부 얘기하지는 못할 것이다. 멀티미디어로서의 인터넷은 위에서 얘기한 것처럼 빠른 정보검색은 물론이고 보다 효율적인 방법으로 정보전달의 기능을 가지고 있다.

대학교 1학년 때 처음 컴퓨터를 공부할 때 일이다. 네트웍에 대해 공부하고 있었는데 마침 네트웍을 설명하고 있는 동영상을 인터넷에서 발견했다. ‘The dawn of the Net’ 이라는 동영상 이였는데 네트웍 패킷이나 라우터, 라우터 스위치 등등 전체적인 네트웍에 대해서 알기 쉽게 설명한 동영상이었다. 이 동영상은 너무 쉽고 직관적이어서 누구라도 이것을 본 사람이라면 네트웍에 대해 모두 안 것 같은 착각을 하게 만들 정도였다. 하지만 대략적인 네트웍에 대해서 안다고 해서 전문가가 되었다고 말할 수는 없을 것이다. 간단해 보이는 현상 뒤에 숨겨져 있는 지식들을 모두 이해하고 설명할 수 있을 때 비로소 전문가라 부를 수 있을 것이다.

이런 멀티미디어적인 환경은 대부분에 사람들에게 보다…