[리팩토링]이라는 이름의 이 책은 컴퓨터 공학에서 아주 유명한 책이면서 저자인 마틴 파울러를 유명하게 만든 책이기도 하다. 그리고 켄트 백과 같은 사람들도 이 책의 집필에 참여하였다. 이 책은 객체지향 프로그래밍에서 코드의 유지보수를 위한 교과서와 같은 책이다. 이 책의 초판이 나온 지 10년이 훨씬 넘었지만, 객체지향 프로그래밍에 있어서 놓치면 안되는 것들을 아직까지 많이 알려주고 있다.


  이 책은 리팩토링에 대한 개론을 언급하는 것으로 시작한다. 저자는 리팩토링을 수행하면 코드 관리뿐만 아니라, 프로그램의 성능도 향상시킬 수 있다고 주장한다. 그 뒤에, 수 십가지의 리팩토링 기법을 소개한다. 평소에 당연하다고 생각했던 사항부터, 전혀 알지 못한 내용까지 책에서 발견할 수 있었다. 책의 마지막에는 작은 리팩토링 사항들을 조합하여 여러 단계의 큰 리팩토링을 실시하는 예를 소개하는 것으로 이 책을 마친다.


  리팩토링에 관한 기법은 웹 상에서 쉽게 찾아서 볼 수 있고, 지금은 이보다 더 많은 리팩토링 방법들이 많이 있기 때문에 블로그에 따로 기록하지는 않았다. 하지만 아래 링크에 리팩토링에 대한 개론을 남겨놓았다.


http://goscala.tistory.com/category/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B3%B5%ED%95%99/Refactoring


  리팩토링 개론에서 가장 흥미롭게 본 부분은, 상급자와의 의견이 맞지 않아 리팩토링을 하지 말라는 지침(예를 들어 마감 일정이 얼마 남지 않아 시간이 모자라서...)을 받았을 때 상급자 몰래 리팩토링을 실시하는 것이 나중에 프로그램의 질을 위해서 더 좋다는 내용을 주장한다. 실제로 프로젝트를 완성했을 때 유지보수를 하는 것은 관리자가 하는 것이 아니라, 실무자가 수행을 해야한다. 유지보수 관점에서 힘든 사항들이 처음에는 드러나지 않기 때문에, 나중을 위해서 리팩토링을 수시로 수행하는 것이 맞다고 생각한다. 하지만, 이런 것들을 생각하는 관리자가 몇이나 있을까 싶다. 당장의 눈 앞의 성과만을 위해서 예외 처리나 유닛~필드 테스트까지 수행을 생각하는 것을 꺼려하는 관리자가 많다. 그 이유가 너무 많지만, 일단 본인들이 프로그래밍에 대한 경험이 별로 없이 관리자의 위치로 올라간 탓이 크다. 사내에서 프로그래밍 경험이 풍부한 관리자가 언제쯤 나타날지가 궁금하다. 아마도 지금 재직하고 있는 부서에서는 그럴 가능성이 아주 낮다. 정치를 잘하는 사람보다는 기술적으로 실력이 뛰어난 관리자를 찾아 떠나야할 시점이다.


  개발자들에겐 없어서는 안될 사이트인 스택오버플로우의 창립자인 제프 엣우드가 쓴 책이다. 번역은 임백준님께서 하셨다. 스택오버플로우 사이트를 개발하면서 겪은 경험과 개발자가 어떤 방향을 가지고 개발을 해야하는 지를 주로 다뤘다. 그리고 개발뿐만 아니라 UX나 기획, 그리고 개발자 커뮤니티와 커뮤니케이션 같은 부분까지 다루고 있다. 저자의 다방면에서의 내공을 살펴볼 수 있지만, 솔직히 웹 페이지의 UX같은 것은 평소에 생각해보지 않았기 때문에 잘 와 닿았지 않았고 좋은 점이나 나쁜점을 따로 생각해볼 수 없었다.


  책의 초반에 다룬 개발자의 8가지 유형을 흥미롭게 소개한 대목이 있다. 3번째로 높은 순위인 유명한 프로그래머가 되는게 현재 목표이지만, 쉽지 않을 것 같다. 현재 내가 생각하는 나의 단계는 5번 일반적인 프로그래머이다. 코딩을 좋아하긴 하는데, 나에게 재능이 있는 것 같진 않다. 더 잘하고 싶어서 노력을 많이 하고 있지만, 노력을 시작한 시점이 늦어서 그런지 조금 벅차다. 더 나아질 것이라는 기대 하나만으로 개발을 계속 하지만, 당장 직접적으로 나에게 다가오는 성과같은 것들이 없어 짙은 안개 속을 해쳐 나가는 기분이 든다.


  개발자들을 위한 자기개발서에서 꼭 나오는 얘기인, 블로그를 작성하라는 말을 구체적인 이유과 함께 언급하였다. 블로그에 글을 남기면서 자신의 생각을 논리적으로 정리하는 연습을 할 수 있기 때문에, 업무나 일상 생활에도 도움을 줄 수 있다는 장점을 어필한다. 올해 들어서 블로그를 꾸준하게 작성하고 있다. 블로그를 작성하고 있지만, 내 주변 사람들이 이 블로그를 보지 않고, 유명한 블로그도 아니기 때문에 기술적인 논쟁이나 코멘트 또는 피드백이 전혀 없어, 내 블로그에 대한 평가를 전혀 알 수 없다. 주변 사람들에게 억지로 읽게 할 수도 없고, 난감한 상황이다. 연예인에게 악플보다 무플이 좋지 않다는 말이 이 경우에도 통하는 것 같다.


  책을 읽으면서 메모로 기록한 단어 중에 썩은 사과라는 것이 있었는데, 정확히 어느 페이지에서 보았는지 기억이 나지 않아 다시 살펴보지 못했다. 아마도 겸손하지 않고, 자신이 제시하는 기술(기술의 출시 연도와 관걔 없이)이 항상 옳다고 주장하면서, 자신의 의견이 잘 받아들여지지 않을 경우, 프로젝트의 참여하는 태도가 좋지 않은 사람을 뜻하는 것 같다. 요즘 프로젝트를 진행하면서 비교적 신 기술인 JVM의 Scala나 Erlang 의 Beam 머신 위에서 동작하는 Elixir 와 같은 함수형 프로그래밍을 도입하자고 주장을 하고 있었다. 하지만, 기존의 프로젝트에서 막연하게 어떤 점이 좋다고 말하고 있지, 정작 문서나 수치 자료를 통한 근거를 이용하지는 않았다. 나의 주장에 힘을 내기 위해선 코드를 짜는 실력과 함께, 문서를 가지고 다른 사람을 설득하는 능력까지 갖춰야 할 것 같다.


  마지막으로, 책에서 가장 기억에 남는 문장을 적으면서 책에 대한 평을 마무리한다. 정확한 문장은 기억나지 않지만, 내용은 일맥상통한다.


  동료가 작성한 썩은 코드를 싫어해도, 그 동료를 싫어하진 말자!



  신 자유주의는 끝났다. 포스트자본주의로(Postcapitalism)의 혁명적인 전환이 현재 진행 중이다. 책을 집필한 폴 메이슨은 영국의 칼럼니스트이다. 이 책은 2015년에 나왔는데, 한국어 번역본은 2017년에 출간되었다. 책이 발표된 후, 보수와 진보, 좌파와 우파 모두에게 극찬을 받았다. 21세기에 마르크스가 다시 나타났다는 견해까지 나왔다.


  책의 1부에서는 기존 자본주의가 왜 실패할 수밖에 없는지에 대한 근거들을 제시하고 있다. 명목화폐의 사용이나 금융 자본주의에 따른 국가 간의 재무 상태 불균형이 심해지는 것을 주요 문제점으로 들었다. 그리고 콘드라티예프의 장기 순환 이론에 따라, 현재 4번째 장기 순환이 이어지고 있는 점을 주장했다. 얼마 전까지는 이 4번째 장기순환이 맞지 않다고 자본주의 경제학자들이 주장했지만, 폴 메이슨은 사회적 무질서 때문에 이 순환 패턴이 늦어지고 있다고 말한다. 저자가 주장한 무질서란 제조업에서 금융업으로의 전환, 노동 계급의 폐배와 파편화, 그리고 금융소득으로 살아가는 최상위 엘리트층이 합쳐진 것이라고 말한다.


  위의 문제점들을 극복하기 위해서 새로운 기술과 경제의 시스템을 만들어야 한다고 2부의 내용을 시작한다. 네트워크, 지식노동, 과학의 응용, 친환경 기술에 대한 집중적인 투자가 포함되어야 한다고 주장한다. 그 예로, 태양열 에너지로 에너지 비용을 무료로 만들고, 3D 프린팅 기술은 제조업의 비용을 무료로 만들며, 오픈소스는 소프트웨어와 관련한 비용을 무료로 만든다는 것이다. 이러한 비용들이 사라지면 기업, 시장, 노동과 임금 등을 중심으로 작동하는 기존 자본주의 시스템이 포스트자본주의로 변화한다는 것이 주 내용이다. 또, 기존의 마르크스나 마르크스에게 영향을 받은 사람들이 주장한 계획경제 시스템이 IT 기술 발전으로 인해 현실적으로 가능하다는 점도 말한다. 재화의 소비나 수요를 예측하고 공급량을 결정하는 시스템을 만들어야 하는데, 기존에는 생산과 공급량을 예측하는데 한 세월이 걸렸지만, 지금은 아주 미세한 부분까지 실시간으로 파악이 가능하여 계획경제 시스템을 만들 수 있다는 근거를 제시한다.


  소프트웨어 개발자로써 오픈소스를 언급한 부분을 자세하게 읽었다. 그 중에 기억에 남는 점은 기업이 저런 변화를 막기 위해 오픈소스 활동을 막을 수도 있다는 것이다. 아니면 오픈소스 활동에 대한 소유권을 기업이 가져갈 수도 있다는 것이다. 최근에 오픈소스는 아니지만, 외부 활동을 금지하여 자신의 활동 범위 축소에 대한 안타까움을 표하는 개발자가 있었다.


  책의 마지막 장인 3부에서는 진짜로 포스트자본주의가 실행될 수 있는지에 대한 의구심을 사라지게 한다. 새로운 전환을 이루기 위한 원동력은 1퍼센트의 엘리트들에 맞선 99퍼센트의 일반 사람들이 뭉쳐야 한다는 것이다. 네트워크를 통한 공유경제를 통해 엘리트들이 아닌 보통 사람들이 이끄는 포스트자본주의가 다가오고 있다고 말한다. 엘리트들의 낙관으로 인해 파괴되는 환경을 보호해야 하는 것도 한 가지 범주에 포함시킨다. 이 외에도 여러 가지 세세한 사항들을 나열하여 저자의 주장을 확고하게 다지고 있지만, 전부 다 기억이 나지 않기 때문에 나머지는 책을 참고했으면 좋겠다.


  작년부터 경제에 관한 책을 읽기 시작했는데, 지금까지 읽었던 책 중에서 계속 두면서 읽어봐야 할 책을 꼽는다면 이 책이라고 말하고 싶다. 4차산업혁명이라고 해서 많은 책들이 나왔는데, 전부 뜬구름 잡는 소리만 하고있는 것 같다. 거시 경제에 관한 책을 좋아하는 사람들은 이 책을 무조건 좋아할 것 같다. 사실 이 책을 읽으면서 막연하게 알고있던 마르크스가 주장한 내용들을 조금 알게 되었다. 자본론 같은 책을 미리 읽었더라면 이 책에서 주장하는 내용들이 얼마나 설득력이 있는지 알 수 있었을텐데 하는 아쉬움이 있다. 자본론을 포함한 경제 책들을 몇 가지 더 읽고난 다음에 이 책을 다시 읽어봐야겠다. 읽어야 할 책은 많은데 시간은 없고, 뭔가 숙제만 더 늘어나서 부담이 생긴다.


  오늘은 대통령 선거 날이다. 문 후보는 사람 중심의 4차 산업혁명을 이루겠다고 주장하고 있다. 문 후보가 포스트자본주의에 관한 내용을 알고 있는지는 모르겠지만, 내일부터 우리 나라가 보통 사람들이 노력하면 원하는 바를 이룰 수 있는 나라가 되도록 만들어주면 좋겠다.



http://book.naver.com/bookdb/book_detail.nhn?bid=11295275


알고리즘의 바이블로 통하는  [Introduction to Algorithms] (이하 CLRS)의 저자 토머스 코멘이 집필했다.


기존 CLRS 책은 컴퓨터 사이언스 전공자를 위한 책이었다면, 이 책은 다양한 성향을 가진 독자를 생각해서 만든 책이라고 한다.


하지만, 수학에 관심이 없다면 읽기가 아주 힘들 것이다. 대부분의 내용을 CLRS에서 가져왔기 때문에 딱딱하기 때문에 알고리즘 입문자를 위한 책이 아니라고 생각한다.


대학교 때 알고리즘 스터디 때 CLRS 책을 봤었던 기억을 되살리면서 책을 읽기 시작했다. 그래도 CLRS 책보다는 비교적 알고리즘에 관한 사설이 많이 들어가있고, 어려운 알고리즘에 대한 부분도 들어가있지 않다.


중간에 Counting sort, Radix sort에 대한 나오는데, 이 정렬들은 같은 크기의 value 가 정렬될 때, 배열 안에서 등장하는 순서를 유지해주는 Stable sort라고 한다. 이 사실을 미리 알았더라면, 예전에 사내 알고리즘 시험에서 Radix sort를 바로 적용하여 문제를 해결할 수 있었을 것이라는 아쉬운 생각이 들었다.


마지막에 등장하는 NP-complete 알고리즘 관련 부분은 역시나 CLRS 책을 봤을 때와 마찬가지로, 이해하기가 무진장 어렵다. 결국 이 부분은 대충 읽고 넘겼다.


Scala toy project 때문에 당분간 알고리즘 공부는 BOJ 문제 중, 쉬운 문제를 푸는 정도로만 유지할 것이다. 나중에 알고리즘 공부를 심도있게 하기 위해 CLRS 책을 다시 봐야할 것 같다.


인간은 육체를 치료하기 위해 병원에 가지 그럼 영혼은? 
살아갈 용기도 자신도 그 방법조차 알지 못해 피를 흘리는 영혼은
어디에서 치료를 받을까..

바로 BAR야..

피들과 바이올린의 차이를 아나?

피들과 바이올린은 같은것.
단 켜는 음악따라 부르는 명칭이 다르지

술을 마시면 켤수 없는 것이 바이올린
술이 없으면 켤수 없는 것이 피들
바이올리니스트는 연습을 빼먹지 않고
피들러는 술을 빼먹지 안지.

클래식을 연주하면 바이올린
민속음악 내경우 아일랜드의 곡을 연주 할때는 피들.

가장 큰 차이는 영혼이 있는 곳.
같은 위스키라도 바의 술과 집에서 마시는 술이 
전혀 다른 것과 비슷하지.

인간이 뭔가를 만들어내는 행위를 문화라 부른다면
그것은 무엇을 위한 걸까?
바로 영혼의 치유야.

서양음악의 기원은 교회음악이야.
음악이란 기도하는 자를 위로하고
격려하며 용서하기 위해 태어났지.

카운터에 허리를 걸치고 양팔꿈치를 짚고 있으면
경건한 기분이 든다.
그대로 손을 모으면 성당에서의 기도자세 아닌가?
인간은 언제 기도하지?
자신의 무력함에 눈물 지을 때야
술도 음악도 그 때 정말로 필요해지지.

샐러리맨이 어째서 출세하고 싶어하는지 아나?
책임과 일에 대한 보람
거기에 합당한 보수와 평가.. 일까요?

희생이야.. 출세한 사람 중에 뭔가를 
희생하지 않은 사람은 없네.
누구보다도 많은 시간을 일에 투자하는 것은 지극히
당연하고 자신을 속이며 함께 마시고 싶지 않은 상대와
쓴 술을 마실 때도 있지 스스로의 기만에 때로는 자기혐오에도
빠지고 그렇게 애를 써도 어떤이는 몸을 망치고 
어떤이는 사내 투쟁에 휘말려 미처 뜻을 이뤄보기도 전에 사라지지.
사람은 어째서 출세하고 싶어할까..
그러지 않으면 그들의 희생을 수포로 돌리고 마는 거니까

바에서 아무리 마셔도 취해선 안돼
그럼 무엇 때문에 오는거야

오기를 배우기 위해서다.
힘들어도 힘든 티를 낼 수 없고
취해도 취한 얼굴을 보여선 안되지.

wisely and slow they stumble that run fast.
현명하게 그리고 천천히..
빨리 달리는 녀석은 넘어진다.

때로 몰려다니며 싸구려 술이나 벌컥벌컥 들리켜선
어른이 될 수 없어.

처음부터 어른이 사람은 없어요
다들 저문을 밀때마다 조금씩 어른이 되어가는게 아닐까요?

남에게 거짓말 하는 건 일이지만
자신에겐 거짓말 하지 마.
알겠나? 이게 가장 중요한 거라구.

어른이 되면 달콤하고 있는 술만 마실 수는 없을 거라고
말씀하고 싶으셨던 걸 겁니다.
그게 업무라면 자신이 마시는 술을 상대에게 맞출 필요가
있을지도 모릅니다.
그렇기에 자신을 꾸미지 않아도 되는 편안한 은신처가 필요한 걸지도 모릅니다.

어른의 술은 언제나 조금 씁쓸하지.

명심해둬, 미국의 비지니스 맨은 변호사와 의사를 한명씩 친구로 둔다더군.
하지만 인생에서 필요한 것은 그런게 아니야.
정말 필요한 건 쓴 술을 조금 맛있게 마시게 해 줄 솜씨 좋은 바텐더지.

사람은 머리로는 뻔히 알면서도 자주 실수를 합니다.
중요한 건 실수에서 배우는 것
사람들은 성공은 실력, 실패는 불운이라고 생각하는 경향이 있거든요

그런 의미에서 실패는 성공보다 훨씬 상냥하죠
많은 것들을 가르쳐 주니까요
어느 세상에 상사에게 폐를 끼치지 않고 일하는 신참이 있답니까?
그저 본인이 깨닫지 못할 뿐이죠

일에서 절대 실수 하지 않는 사람이 있습니다
어떤사람인지 알겠습니까?
답은 일하지 않는 사람

실수는 사람이 살아 있다는 증거입니다.
그렇기에 열심히 필사적으로 노력해서 그 결과 나온 실수는
공부가 되는 겁니다.

말로는 표현할 수 없는 말을 찾는것.
어른의 세계에서는 옳은 것 보다 저 중요한 것도 있습니다.

절망하지 않는 영혼, 믿음의 힘, 누군가를 필요로 하는 겸허함,
누군가 자신을 필요로 해줄 때의 기쁨, 친절과 배려, 우정과 격려,
그리고 결코 돈과 지위로는 증명할 수 없는 긍지

어째서 사람은 일을 하는가.
그건 여러가지 어른의 마음을 찾기 위해서..
저는 그렇게 생각하고 있습니다.

사람은 너무 행복해선 안 된다.
너무 행복하면 그걸 당연하게 여겨 주위 사람들에게
함부로 대하기 쉽다.
하지만 너무 불행 하면 이번엔 불행에 젖어
성격이 비뚤어진다.
그러니 불행은 딱 한 방울만 있으면 된다.

추억은 자신이 살아있다는 증거야
실패도 성공도 지금에 와선 모두 달콤하게 느껴지지.
세상은 그런 맛이 나는 술도 있어.

사람은 변한다 그렇다고 술의 맛을 바꾸지는 마라.
그러면 손님이 바에 왔을 때 옛날의 자신을 
만날 수 있을 테니까

고독을 아는 것.
타인은 고독하다는 것을
가르쳐 주지 않아.

인간은 인생 어느 시기까지는 뭔가를 얻기 위해 산다.
지식과 경험, 명에와 돈, 그리고 권력
하지만 나이를 먹으면 그것이 무거운 짐이 된다.
그래서 노인은 버리는 것도 각오해야 한다.

의사는 육체를 바텐더는 손님의 영혼을 맡는거야
그러니 절대 배신해선 안돼.
명심해 둬라 술에는 언제나 두 개의 얼굴이 있다.

독과 약

세상에는 절대로 손님을 배신해선 안되는 일이 두가지 있습니다.
하나는 의사,약제사, 또하나는 바텐더

둘다 처리 방법 하나로, 독도 약도 될수 있는 것을
만들어 팔고 있기 때문이죠

그중에 약의 얼굴만을 이끌어내는 것이 바텐더의 일이다.

바에서는 울고 있는 손님에게 
무슨일이십니까 하고 물어서는 안 돼요.
설명할 수 있는 눈물 이라면 애초에 사람들 앞에서
울지도 않았을 테니까.
그러니 말로 표현할 수 없는 감정에는 무언의 마음으로 응하라고..

손님중에 거드름을 피우거나 자랑하거나
때로는 소리를 지르거나..
그런 형태로 밖엔 자기 마음을 바텐더 에게
전하지 못하는 사람도 있어요

행복할 때의 칵테일은 한 잔만으로도 충분하죠
뭘 마셔도 맛있으니까

바에서는 목소리를 낮춰 이야기하라
바에서는 설령 누군가와 이야기를 하고 있다 해도
사실은 모두 자기 자신과 대화하는것..
그때 큰소리를 내면 속삭임을 놓칠 수가 있으니까요.
마음속의 가장 소중한 목소리
자신도 미쳐 깨닫지 못한 진짜 말.
그리고 어른이 되면 들려도 들리지 않는 척하는 속삭임
그런 목소리는 아주 작아서 귀를 기울이지 않으면
놓치고 만다고 합니다.

스승을 좇지 말고 스승이 좇는 바를 좇아라.
그것이 스승의 은혜에 보답하며 스승의 꿈을 잇고
나아가 스승을 넘어서는 길.
스승이나 옛날 사람을 흉내내지 말고 자신의 길을 찾아라.
자신의 개성을 소중히 해라.

인간에겐 여러 종류의 용기가 있어
앞으로 나아갈 용기
뒤로 물러설 용기
자제는 자네의 용기를 가지고 살아가면 돼
인간은 살아있다는 것 만으로도 기적이라고
그 이상 뭐 더 바라겠나.

일이란 진지하게 필사적으로 자신의 피를 흘려가며
배우지 않고는 제대로 익히지 못하는 법이야.

사람을 상대로 하는 일에서 가장 중요한 자격은..
어떤 경우에도 냉정한 자신으로 돌아가는 것.

변화란 절체절명의 벼랑 끝에 몰려 더 이상
도망 칠 수도 없을 때 어쩔 수 없이
선택하게 되는 거지
그래서 피가 밸 만큼 고통스러워
하지만 고통스러울 때는 확실하게 고통을 겪지 않고는
변할수 없어.
희망은 깊은 후회 속에서만 볼 수 있는 것이거든.

일의 의미나 가치는 당신이 아니라 타인이 결정하는 겁니다

사람에게 있어서 더할 나위 없이 소중한 뭔가,
돈으로는 살 수 없는 무언가를 다루는 경우도 있다고..

프로와 아마추어의 차이를 아십니까?
프로가 되는 건 간단하다.
정말 어려운 건.. 계속 프로로 있는거지.

프로가 된다는 것은 현실 속에서 뭔가를 버리는 것.
가령 일찍이 품고 있던 꿈, 이상, 동경
필요한 것은 그런 것들을 버리는 아픔 고통을 견디고
현실을 배워나가는 것 거기서 프로의 진짜 성장이 시작되는 겁니다.
그렇기에 무의미하게 버리지 않고 살리기위해 버리는 거죠.

프로는 1+1을 3으로 만드는 뭔가가 있기에 프로인 거야.

아마추어와 프로의 차이가 뭔지 아나?
프로는 자신이 아무것도 모른다는 것을 깨달은 자.
아마추어는 자신이 아무것도 모른다는 것조차 모르는 자.

만화책 바텐더 中에서..

p.285 - 계급이 아니라 관계를 형성하라


 새로운 직무를 시작할 때 처음 3주간은 아무 일도 하지 않는다. 사람들의 말에 귀를 기울이고 그들이 당면한 문제와 우선순위를 이해하며 그들을 알고 돌보는 일에 관심을 쏟는 가운데 그들의 신회를 얻는다는 말이다. 이런 의미로 본다면 아무 일도 안 하는 것이 아니라 뭔가를 하는 것이라고 할 수 있다. 바로 건강한 인간관게를 쌓는 것이다.

 그리고 상대를 미소짓게 하는 일을 잊으면 안 된다. 관리자의 도구 중에서 충분히 이용되지 않고 제대로 평가받지 못하는 것이 바로 칭찬이다. 필요할 때 칭찬을 아끼지 마라.

+ Recent posts