검색엔진

화요일, 7월 29, 2014

[독서광] 폴리글랏 프로그래밍

오늘은 한빛미디어에서 선물로 보내주신 '폴리글랏 프로그래밍'을 읽은 감상문을 올려드리겠다.

책 이해를 위해 먼저 '폴리글랏'이라는 용어부터 살펴볼 필요가 있다. wiktionary의 설명을 빌어 조금 유식하게 표현하자면 고대 그리스어인 πολύγλωττος (polúglōttos, “many-tongued, polyglot”), from πολύς (polús, “many”) + γλῶττα (glôtta, “tongue, language”)가 기원이라고 하며, 쉽게 말해 '여러 언어'를 의미한다. 사전상 정확한 발음이 [|pɑ:liglɑ:t]이라는 점이 함정이긴 하지만, 국내에서는 poly를 '폴리'라 발음하니 못 알아들을 문제는 없다. 컴퓨터 공학에서는 특정 애플리케이션을 작성할 때 여러 언어를 혼합해 사용하는 방식을 총칭하는데, 솔직히 말해 여러분들도 이미 부지불식간에 잘 활용하고 있다. 자바에서 스프링을 사용해 웹 애플리케이션 프로그램을 만들 경우 HTML, CSS, 자바스크립트, 자바, XML, SQL이라는 여섯 가지 언어를 섞어서 사용하므로 폴리글랏 프로그래밍이 낯설리 없다. 옛날에도 셸 스크립트 언어와 C 프로그래밍 언어를 섞어 애플리케이션을 만들었으니 폴리글랏 프로그래밍의 계보를 따지자면 한참을 거슬러 올라가야 한다.

하지만, 적극적인 의미에서 폴리글랏 프로그램이 가능해진 시점은 JVM이나 .Net CLR이 나오면서부터다. 과거에는 목적 파일 수준에서 링크 과정을 거쳐 서로 다른 정적인 프로그래밍 언어로 만들어진 코드를 혼합해서 사용했지만(따라서 ABI와 같은 규약을 맞추기 위해 다양한 트릭을 사용했다. Win32 프로그래머라면 C와 파스칼 호출 방식의 차이점을 아주 잘 알고 있다!), 요즘에는 부담없이 언어끼리 섞어 사용할 수 있다(C#과 VB .Net, Java와 Scala를 섞어 프로그램하는 상황을 생각해보라!). 또한 폴리글랏 프로그래밍 패러다임을 사용할 경우 동일한 런타임을 공유하는 특정 언어에서 다른 언어로 필요에 따라 속도를 조절해가며 천천히 이주가 가능하다는 장점도 생긴다. 아, 각설이 길었는데, 원래 책 내용을 간단하게 설명해야겠다.

이 책은 자바, C#, 스칼라라는 개발자들 사이에서 많이 사용하고 요즘 뜨는 프로그래밍 언어의 특징(특히 닮은 점과 다른 점)을 설명하는 책이다. 물론 본문에 코볼(!)과 같은 옛날 언어와 루비, 파이썬, 그루비와 같은 동적 (스크립트) 언어도 조연으로 등장하므로 다양한 프로그래밍 언어에 대한 차이점을 느낄 수 있다. 이 책에서 강조하는 지점은 바로 부지불식간에 요즘 거의 모든 프로그래밍 언어에 기본으로 탑재되고 있는 '함수형' 언어의 특징이다. 자바의 익명 메소드, 클로저와 람다, C# 사용자라면 감탄을 금하지 못하는 링큐(LINQ), 스칼라의 트레이드와 같은 고품격 특질이 나오게 된 배경과 의의에 대한 설명이 나온다. 개별 특성을 놓고 사람과 기술이 얽힌 이야기 식으로 내용이 전개되므로 구체적인 프로그래밍 기법을 기대한 독자라면 조금 당황할지도 모르겠다는 생각도 든다.

이 책은 자바 8이 나오기 조금 전에 초판이 출간되었기 때문에 Java 8의 람다 표현식메소드 참조 그리고 람다 표현식과 스트림을 활용하는 새롭고 개선된 API와 같은 내용은 자세히 언급하지 않는다. 물론 오라클이 썬을 인수한 다음부터 자바 개발이 보수적으로 움직이고 있기 때문에 함수형 언어 특질에 대한 추가가 너무 늦은데다 Is Java 8 a Functional Programming Language?라는 글에서도 밝히듯이 여전히 본격적인 함수형 언어로 사용하기에는 미묘하게 부족한 점이 많으므로 이 책이 지금 이 무렵에 나왔더라도 자바에 대한 호의적인(응?) 평가를 얻기는 어려웠으리라는 생각을 해본다.

결론: 요즘 돌아가는 프로그래밍 언어 생태계에 관심이 많고 함수형 언어의 철학에 대해 어느 정도 이해하고 있는 프로그래머가 보면 재미를 느낄 것이다. 구조적/객체지향적인 언어 세상에 익숙한 개발자들이라면 저자 서문에 나오는 '가볍고 경쾌한 내용일 거라고 믿는다'라는 표현을 믿다가는 본문 중 전개되는 내용을 읽으며 난감한 느낌(힌트: 자바를 디스한다)이 들지도 모르겠다.

EOB

토요일, 7월 26, 2014

[독서광] 역사 속의 소프트웨어 오류

오늘도 출판사에서 선물받은 책을 한 권 소개해드리려 한다. 전 세계적으로 문제가 되었던 소프트웨어 오류를 소개하는 '역사 속의 소프트웨어 오류'가 바로 주인공이다. 책이 출간되기 전에 이미 일부 내용을 읽고 간단한 서평을 작성했는데, 여거 다시 한번 옮겨 본다.

지금까지 나온 소프트웨어 에세이는 주로 밝은 면에 집중한다. 잘 되고 좋고 멋지고 훌륭한 소프트웨어에 대한 환상 말이다. 하지만 이 책은 실수, 실패, 그리고 그 뒤에 숨겨진 뒷 이야기를 집중적으로 다룬다. 소프트웨어 오류와 원인(일단 알고 나면 별거 아닌 듯이 보이는!)을 재미있고 이해하기 쉽게 풀어 쓰므로, 소프트웨어를 제대로 그리고 안전하게 구현하고 싶은 개발자에게 추천한다.

과연 어떤 이야기를 다루고 있을까? 패트리어트 미사일, 화성 탐사선, AT&T 장거리 전화 불통, 미국 북동부를 휩쓸었던 대정전, 함정 운용/전투 소프트웨어, 모리스 웜, 전투기 항전 소프트웨어, 게임 버그, 의료 기기 소프트웨어, 금융 소프트웨어, 상용 여객기 운항 소프트웨어, 도요타 UA(급발진)를 초래한 소프트웨어 등 다양한 분야에서 발생해 인명과 금전적인 손실(그 중 일부는 해프닝으로 끝난 경우도 있지만...)을 일으킨 소프트웨어 오류를 설명하고 있다. 소프트웨어에 필연적으로 따라다니는 버그가 연쇄 효과를 일으키며 파국으로 치닫게 만드는 이야기를 읽고 있으면 마치 한 편의 드라마를 보는 듯한 느낌을 받을지도 모르겠다.

개인적으로도 소프트웨어 오류에 관심이 많아 다양한 자료를 수집하고 분석해보는 취미가 있어서 책에서 소개하는 상당수 사례를 이미 알고 있었지만 잘 정리된 형태로 다시 한 번 읽으니 색다른 느낌이 들었다. 무미건조한 사고 분석 결과 보고서 형태가 아니라(항공기 관련 보고서를 읽으면 어떻게 이렇게 객관적으로 글을 쓸 수 있는지 궁금한 때가 많다) 사건의 역사와 배경, 추이, 결과를 이야기식으로 풀어가고 있기 때문에(그리고 중간 중간 소프트웨어 개발자를 위한 내용도 나온다) 해당 분야의 전문가가 아니더라도 어렵지 않게 읽을 수 있다.

하지만 저자가 직접 관련자들이나 전문가를 인터뷰한 내용이 아니라 이차 소스를 중심으로 정리한 내용이다 보니 아무래도 한계가 있기 마련이다. 이차 소스에 따라 각 사례에 대한 분석 깊이가 많이 차이 나므로 특정 사고의 원인을 기술적으로 깊숙히 파고들어 분석할 목적으로 이 책을 선택했다가는 낭패를 볼지도 모른다는 점을 짚고 넘어가야겠다. 그렇다고 하더라도, 전반적인 개요를 파악하기 위한 출발점으로는 나쁘지 않다.

결론: 올바른 소프트웨어 제작과 관련해 개발자들의 마음가짐을 다잡아 주는 동기부여 목적으로 이 책을 읽어보면 어떨까 생각한다. 평상시 소프트웨어 오류에 대해 관심이 많은 분들께 추천!

EOB

화요일, 7월 22, 2014

[독서광] Free2Play 게임 산업을 뒤바꾼 비즈니스 모델

오늘은 에이콘 출판사에서 랜덤으로 보내주신 선물인 공짜 게임 비즈니스 모델에 대한 책을 하나 소개해드리겠다.

과거와는 달리 무료로 즐길 수 있는 모바일 또는 소셜 게임이 엄청나게 많이 만들어지고 있다. 장르와 대상 고객층은 제각각이지만, 이들 게임에는 한가지 공통점이 있다. 바로 돈 걱정 말고 일단 해보시라는 유인이다. 게임을 하다가 재미를 느끼고, 더 큰 재미를 느끼기 위해 돈을 투입하는 자연스런 연결고리가 무척 중요하다. 지인이 예전에 양 키우는 국내 게임에 대해 이야기를 해줬었는데, 무료로 시작할 수 있는 게임임에도 불구하고 큰 손은 한 달에도 수십 만원을 아낌없이 투자한다는 일화를 듣고서 이게 무슨 신세계인지 갸우뚱한 적도 있었다. 이 책은 게임을 즐기는 사람뿐만이 아니라 게임을 만드는 사람에게 무료로 즐기는 게임의 이면에 숨은 비즈니스 모델을 설명한다.

책을 펼치면 F2P 모델이 비즈니스와 관련해 어떻게 동작하는지부터 설명이 나온다. 물리적인 패키지 게임과 차이점을 설명하면서 디지털 상품의 독특한 성격을 비즈니스와 부드럽게 연결하기 때문에 F2P 게임으로 돈을 버는 방식을 머리에 정리할 수 있다. 그 다음으로 사람의 심리를 이용해 지속적으로 게임에 몰두하기 위한 핵심 루프에 대한 설명을 시작으로 사용자가 언제 멈추고 언제 돌아오고 어떻게 사용자에게 동기 부여하는지를 소개한다. 그리고 나서 사용자의 지갑을 열기 위한 온갖 방법(인앱 결제를 시작으로 배너 광고, 중간 광고, 동영상 광고, 오퍼월, 제휴 링크 등등)을 설명한다. 그리고 요즘 게임 업계의 화두인 분석과 데이터 수집, 해석에 대한 이야기를 전개한다. 그리고 나서 사용자를 끌어들이기 위한 마케팅 기법으로 마무리한다.

단순한 이론과 숫자가 담긴 표가 아닌 실제 사례를 풍부하게 활용하기 때문에 현장감이 느껴졌다. 기존에 몇몇 F2P 게임을 하면서 궁금했던 점을 대다수 해소할 수 있었다는 점이 나름 성과(?)가 아닐까 싶다. 아마존 원서 서평과 판매량도 나쁘지 않게 나오는 것을 보면 F2P 게임에 대한 관심을 상당 부분 충족하기 때문이라는 생각이다. 아마존 리뷰어 중 한 명이 적은 다음 내용에 공감한다.

It's written very clearly and explains the terms that are commonly used in the industry. 이 책은 아주 명쾌하게 쓰여졌고, 업계에서 일반적으로 사용하는 용어를 설명한다.

결론: 무료 게임에 대한 비즈니스 모델이 궁금한 분이라면 기획/개발/마케팅에 무관하게 적극 추천해드린다. 이론적으로 튼튼한 설명과 함께 여러 가지 재미있는 사례를 접할 수 있을 것이다.

EOB

토요일, 7월 19, 2014

[B급 프로그래머] 7월 3주 소식

7월 3주 소식을 정리해드리겠다.

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 기타 읽을거리
EOB

화요일, 7월 15, 2014

[독서광] 글로벌 소프트웨어를 말하다 (지혜)

한빛미디어에서 선물로 주셨기에 이 책을 열심히 읽었으나... 읽다가 다소 난감한 느낌이 든 책이라고 솔직히 말해야겠다. 바쁜 독자를 위해 아주 간단하게 이 책을 요약하자면, "착한 개발자들은 SRS(Software Requirement Specification)를 열심히 쓰고 소스 코드 관리(특히 merge)를 잘하고 이슈 추적 시스템을 꼼꼼하게 활용한다"로 정리할 수 있겠다. 하지만 책에 how가 없다는 점이 함정.

책에서 충격 요법을 위해 국내 개발자들을 디스하고(166페이지: "대부분의 국내 개발자들은 코딩 습관상 오픈소스 커뮤니티에서 불량배로 취급받을 확률이 크니 오픈소스에 참여하더라도 주의해야 한다.") 실리콘벨리를 추켜세우는 내용까지는 손발이 오그라들어도 그려려니 하지만(본문에서 강조하는 국내 소프트웨어 시장이 진흙탕인 사실은 충분히 이해하고 인정한다!), 코딩 작업을 아르바이트생에게 시킬 수 있다는 표현(146페이지: "모든 method를 정의하고 나면 이제는 아르바이트생에게 코딩을 맡겨도 된다. 귀중한 시간을 쉬운 코딩에 소비할 수 없다.")은 정말 아니라는 생각이다. 세상에 코딩이 쉽다니! SRS와 비교해 상대적으로 코딩이 중요하지 않다고 말하려 했을지는 몰라도 이미 물은 엎질러졌고...

이쯤에서 코딩 호러 블로그의 Dysfunctional Specifications에 나오는 리누스 토발즈 큰 형님의 명세 관련 이야기를 잠시 들어보는 편이 균형 감각 배양에 도움이 될 것 같다. 애독자 여러분을 위해 잽싸게 번역해보았다.

"명세"(spec)는 무용지물에 가깝다. 유용하면서도 정확한 명세를 본 적이 없다. 하지만 명세에 기반해 완전히 헛발질한 작업은 많이 목격했다. 명세는 소프트웨어를 작성하는 최악의 방법이다. 정의만으로 현실이 아니라 이론과 일치하기 위해 소프트웨어를 작성했음을 의미하기 때문이다. 명세를 피해야 하는 두 가지 이유는 다음과 같다:

1. 명세는 위험할 정도로 잘못되었다. 현실은 다르다. 그리고 명세가 현실을 심사숙고한다고 생각하는 사람은 누구나 커널 프로그램에서 _지금 당장_ 손을 때야 마땅하다. 현실과 명세가 충돌할 때, 명세는 아무 의미도 없다. 0. 전무. 전혀 없음. 뭐라고 할까? 과학과 비슷하다. 실험과 일치하지 않는 이론이 있다면, 당신이 해당 이론을 얼마나 좋아하는지는 중요하지 않다. 이론이 잘못되었을 뿐이다. 명세를 근사치로 사용할 수는 있지만, 어디까지나 근사치라는 사실을 _명심_해야 한다.

2. 명세는 필연적으로 글로 쓴 명세에 의미가 있는 추상화 수준과 단어 선택과 문서 정책을 수반한다. 명세에서 실제 코드를 구현하려 시도하면, 코드가 형편없는 듯이 보인다. 이런 현상의 고전적인 예는 OSI 네트워크 모델 프로토콜이다. 실제 세상과 완전히 무관한 전통적인 명세 설계말이다. 여전히 사람들은 7 계층 모델에 대해 이야기하고 있지만 대화에 편리한 모델이라서 그렇지 실제 소프트웨어 공학과는 아무 관련이 없다. 다시 말해, 명세는 사물에 대해 이야기하는 방법이지 사물을 구현하는 방법은 아니다. 그리고 이런 사실이 중요하다. 명세는 사물에 대해 이야기하는 기반이다. 하지만 소프트웨어 구현을 위한 기반은 아니다.

따라서 남들이 명세에 대해 뭐라 하든 신경쓰지 마라. 명세 때문이 아니라 명세에도 불구하고 진짜 표준은 성장하기 마련이니까.

오늘의 희한한 결론: 위대한 SRS도 작성하지 않고 만들어진 리눅스는 글로벌 소프트웨어가 아닌 모양이다.

뱀다리: 선물 받은 책임에도 불구하고 호의적인 서평을 쓰지 않은 이유는 간단하다. 열심히 일하는 개발자들을 오도할 가능성이 높은 내용이 여기저기 들어있기 때문이다. [B급 프로그래머] "‘한국의 저커버그’가 양성되기 위한 조건"에 대한 불만에서 알맹이 있는 책을 출간해 달라고 요청했지만 돌아오는 대답(아시는 분은 아시겠지만 ‘한국의 저커버그’ 글과 '글로벌 소프트웨어를 말하다' 책을 쓴 분들은 같은 컨설팅 회사 소속...)이 이 정도라면 실망이다.

EOB

토요일, 7월 12, 2014

[독서광] 언씽킹

이미 행동 경제학(또는 심리학)에 대한 책을 여러 권 블로그에 소개했으므로 오늘도 또(응?) 행동 심리학과 관련된 책을 소개하려니 조금 망설여지긴 했지만, 그래도 독자 여러분을 위해 간략하게 독후감을 작성하고 넘어가기로 마음먹었다. 오늘 소개할 책은 "언씽킹(unthinking)"이라는 책이다. 들어가기 전에 잠시 주의 사항 하나 언급하고 넘어가야겠다. 이 책은 정말 미국적이라 미국 문화와 역사와 언어에 익숙하지 않은 사람들이 읽을 경우 거리감이나 당혹감을 느낄 가능성이 아주 높다. 따라서, 읽기가 쉽지 않다는 점을 미리 언급해둔다.

자, 그렇다면 이 책은 무엇을 설명하고 있을까? 머리말에 가장 먼저 나오는 다음 문구가 이 책의 전반적인 내용을 설명해주는 핵심 포인트라 보면 틀림없다.

우리는 언제나 생각 없이 결정한다.

아마 말도 안 된다고 생각하시는 분이 많으시리라. 결정 하나 내리기 위해 이리 재고 저리 재고 밤에 잠도 못자고 고민하고... 누구나 중요한 결정을 위해 심사숙고하지 않는가? 하지만 이 책은 그렇지 않다고 주장한다. 책 제목부터 생각하는(thinking)에 un을 붙인 생각이 없는(unthinking)이니 손발 다 들 지경이다. 머리가 어질어질하다고? 그렇다면 이 책 목차를 보자.

  1. 우리는 하루 종일 놀고 있다
  2. 우리는 놀라움을 갈망한다
  3. 우리는 진짜 이야기를 원한다
  4. 우리는 루저를 사랑한다
  5. 우리는 눈에 띄고 싶어한다
  6. 우리는 특별한 것의 일부가 되고 싶어 한다
  7. 우리는 익숙한 것을 좋아하고, 식상한 것은 싫어한다
  8. 우리는 내일의 태양을 믿는다
  9. 우리는 눈으로 생각한다
  10. 우리는 단순한 것에 사로잡힌다
  11. 우리는 디자인 때문에 바뀐다

목차를 보면 이 책의 흐름에 대해 대충 감을 잡을 수 있을지도 모르겠다. 독자 여러분을 위해 간략하게 정리해보면, 이 책은 스타트랙의 스폭 일등 항해사가 아니라 커크 선장에 대한 이야기를 담고 있다. 이성이 아닌 감정과 직관이 앞서는 사람말이다. 문장 구성이 아니라 문장을 구성하는 단어의 운율을, 논리정연한 설교가 아니라 어릴 때부터 갈구해온 스토리를, 골리앗이 아니라 다윗을, 자기 자신에 대한 이야기가 아니라 우리에 대한 이야기를, 키가 크고 잘 생긴 사람이 아니라 우리를 닮아 키도 작고 평범하게 생긴 사람을, 익숙하면서도 식상하지 않을 정도로 새로운 것을, 염세주의 보다는 낙천주의를, 추한 것 보다는 아름다운 것을, 복잡한 것보다는 부드럽고 둥글고 단순한 것을 원하는 일반적인 사람들에 대한 이야기를 중심으로 우리가 행동에 앞서 머리 속에서 벌어지는 동작 원리(응?)를 설명하려 무지 애쓴 흔적이 보인다.

하지만, 행동 심리학을 사용해 제기한 문제의 해법이 '마케팅'으로 귀결되기에 이 책의 한계는 명확하다. 효과적인 마케팅을 위해 사람의 행동과 심리에 대한 고찰이 필요하긴 하지만, 연결을 위한 연결을 만들어내려다 보니 아무래도 책이 던지는 메시지가 명확하지 않고 산만하게 흩어져버린다는 생각이 든다.

결론: 중간 중간 재미있는 사례와 아이디어가 나오긴 하지만, 밑줄 그어가며 읽기에는 부족함이 많으므로 기존에 이 블로그에서 소개한 다른 책(독서광 태그를 선택한 다음 쏟아지는(?) 경영/경제 관련 서평을 보기 바란다)을 읽는 편을 권장한다.

EOB

화요일, 7월 08, 2014

[일상다반사] 피플웨어 번역서 출간 소식

프로젝트가 서쪽으로 간 까닭은에 이어 다시 한번 톰 드마르코의 고전인 '피플웨어' 번역서 출간 소식을 전한다. 원래는 역자 서문을 여기 적어서 조금이라도 손가락을 편하게 하려 했으나... 출판사에서 IT 프로젝트 관리와 팀워크 구축에 관한 통찰, 『피플웨어』라는 글에 먼저 올려주시는 바람에 지면으로 하지 못했던 뒷 이야기를 하나 풀어놓으려고 한다.

아마도 2판을 이미 읽어보신 분들도 많으실테다. 그럼에도 불구하고 굳이 3판을 다시 번역해야 했던 이유는 무엇일까? 가장 큰 이유는 3판에 추가된 몇 가지 장과 배치 변경 때문이다. 또한 용어나 사례도 현대적으로 바뀌었고, 예전 호랑이 담배피던 시절의 일화는 삭제되었다(21세기 독자들을 위한 배려라고 보면 틀림 없겠다). 그 다음 이유는 번역 품질 때문이다. 2판 번역서(위)과 3판 번역서(아래)의 1부 5장을 나란히 놓고 비교를 해볼까?(독자 여러분들께서도 재미삼아 2판 번역서와 3판 번역서를 비교해보기 바란다. 깜짝 놀랄만한 부분이 많다!)

2판: 경영 수업을 받은 적이 있는 관리자들을 만나 봤다면 당신은 그들 모두가 파킨슨 법칙과 그 법칙의 세부 이론을 집중적으로 가르치는 학교에서 교육받았을 것이라는 생각을 하게 될 것이다.
3판: 관리자들이 관리 교육이라고는 거의 받지 않는다는 사실을 몰랐더라면 모든 관리자가 파킨슨의 법칙과 그 의미를 집중적으로 공부하는 학교에 다녔다고 생각할지도 모르겠다.
2판: 심지어 그가 누군가에게 기대어야 하는 상황이 벌어지는 경우에도, 관리자는 끝까지 그의 버팀목이 되어야 한다. 물론 이런 문제는 팀 자체에서 해결하는 편이 훨씬 효과적이다. 그런데, 우리는 잘 조직된 팀의 관리자가 보조를 잘 맞추지 못하는 한 사람에게 팀 전체와 합세하여 비난하는 경우를 종종 볼 수 있다.
3판: 극히 드물게 심리적 압박이 유일한 방책인 경우도 있지만, 그럴 때라도 관리자는 심리적 압박을 가하는 최후의 일인이어야 한다. 동료 팀원들에게서 가해지는 압박이 훨씬 더 효과적이다. 잘 짜인 팀에서는 관리자가 나서기도 전에 다른 팀원들이 게으른 팀원을 먼저 혼내준다.
2판: 적절한 시기에, 명백히 옳은 결정이라는 확신을 내린 후에 벌을 주는 것은 아이에게 도움이 된다.
3판: 평소 체벌이 거의 없는 환경에 타이밍이 완벽해 아이가 쉽게 납득한다면 체벌은 효과가 있다.

2판은 문단 분리가 원서랑 다르게 되어 있었고(문단을 원서와 달리 임의로 합치고 분리해버리니까 사고의 흐름이 깨져버린다), IT 업계 표준 용어가 아닌 다른 용어를 사용했고, 일부 내용이 거꾸로(멀리 갈 필요 없다. 위 예제를 보시라) 번역되어 있었기에 아마 읽으면서 조금 이상하다는 생각이 들었을지도 모르겠다. 이제 3판을 다시 읽어보시면 기존에 뭔가 찜찜했던 기분이 사라지는 것을 느끼게 될테다.

결론: 아무쪼록 '사람 먼저'를 강조하는 '피플웨어'를 읽으며 다시 한번 '사람'의 중요성을 생각하면 좋겠다.

뱀다리: 지난번 해커스 이벤트 때 약속드린 '피플웨어' 선물도 출간되면 응모하신 분들께 바로 발송해드릴 예정이다.

EOB

토요일, 7월 05, 2014

[B급 프로그래머] 7월 1주 소식

2014년도 절반이 지났다. 아무쪼록 남은 절반도 보람차게 보내면 좋겠다.

  1. 웹/앱 소식
  2. 개발/관리도구 소식
  3. 고성능 서버/데이터베이스 소식
  4. 기타 읽을거리

3주에 더 흥미롭고 도움이되는 소식을 들고 찾아뵐 예정이다.

EOB

금요일, 7월 04, 2014

[독서광] Git을 이용한 버전 관리

이미 지난번에 강력한 Git 관련 서적인 프로 Git : 그림으로 이해하는 Git의 작동 원리와 사용법을 설명드린 바 있음에도 불구하고 오늘 또 다시 git 책을 소개하려 마음먹었다. 오늘 소개할 책은 svn과 같은 전통적인 소스 코드 관리 시스템을 한번도 접해보지 않은 상태에서 git을 사용해 간단한 소스 코드 관리가 필요한 분들에게 딱 맞는 책인 "Git을 이용한 버전 관리"다. 에이콘 출판사에 놀러갔다가 아주 얇은(본문이 200페이지 정도다) git 서적이 눈에 띄여 선물로 받은 다음에 2시간에 걸쳐 다 읽고 느낀 소감을 간단히 정리한다.

git이 쉽다고(응?) 이야기하는 분들도 계시지만, 초보자가 처음 접근하려면 진입 장벽이 상당히 높다. 거북이SVN과 같은 GUI의 존재유무가 문제가 아니다. 윈도우/맥에서 훌륭한 인터페이스를 제공하는 소스트리는 완성도가 상당히 높다. 하지만 이런 GUI도 손쉬운 git 활용을 보증하지 않는다. git만의 독특한 철학이 있기 때문이다. 그렇다면 저장소를 만들고 체크인/체크아웃하고 간단히 병합/분기하고 충돌처리를 해결하고 중앙 집중식 저장소에 밀어넣고/당기는 작업 정도만 할 수 있으려면 어떻게 해야 할까? 복잡한 git 내부 구조를 모두 파악해야 하나? 오늘 소개할 'Git을 이용한 버전 관리'는 가장 기본적인 Git 활용법에 충실한 책이다.

목차를 펼쳐보면 이 책의 추구하는 바가 확실히 드러난다. 1장은 버전 관리 시스템을 소개하며, 2장은 깃 설치 방법을 윈도우/맥/리눅스로 나눠 설명하며, 3장은 git 초기화(그리고 .gitignore 파일 설정)와 파일 추가/커밋/체크아웃을 설명하고, 4장은 분산 작업을 위한 인터넷/인트라넷/노출된 저장소 공유 방법을 설명하고, 5장은 git 로그 보기와 태깅 방법을 설명하고, 6장은 병합과 충돌을 설명하고, 7장은 분기 방법을 설명한다. 이게 전부며 이 책의 엄청난 장점(초보자용)이다. 마지막 장인 8장에서 깃의 원리를 설명하려 애를 썼지만 (참으로 어중간하게 끝나버리는 바람에) 사실상 실패로 돌아갔기 때문에 앞서 소개한 프로 Git을 읽는 편이 정신 건강에 이롭다는 주의 사항을 언급한다.

이 책의 장점은 참으로 이해하기 쉬운 예제다. 실제 프로그래밍과 100만 광년 떨어진 정말 단순한 예제라 손발이 오그라들긴 하지만, 간단하게 이해하기에는 오히려 더 적합할지도 모르겠다. 하지만 단순한 예제를 응용하는 작업이 독자 몫이므로 남기 때문에 자신이 직접 간단한 실제 프로그램을 만들면서 연습을 해봐야 나중에 실전에서 눈물을 덜 흘릴 것이다.

결론: git을 처음 배우는 분들이 처음 접하기에 적합한 책이다. 이 책에서 소개한 기초 내용을 알면 기존 파일 저장소 관점에서 svn 수준으로 작업하기에 큰 어려움이 없을 것이다.

EOB

화요일, 7월 01, 2014

[독서광] 경제학자도 풀지 못한 조직의 비밀: 왜 우리에게 조직이 필요한가

간만에 경제/경영 블로그답게 오늘은 '경영' 관련 양서를 하나 추천하려 한다. 오늘의 주인공은 제목이 상당히 긴 "경제학자도 풀지 못한 조직의 비밀"이다. 부제인 "왜 우리에게 조직이 필요한가"가 이 책의 특성을 가장 잘 나타내는 문구가 아닌가 싶다. 에필로그에도 나오지만 솔직히 우리가 인생의 1/3을 보내는 곳이 조직인데, 사람들은 일단 '조직'이라는 단어가 나오면 알레르기 반응부터 보이며 '정치'와 더불어 없어져야 하는 양대 악의 축으로 보는 경향이 있다. 하지만 과연 그럴까?

이 책은 바로 말도 많고 탈도 많은 '조직'에 대해 여러 가지 각도에서 바라본다. 조직의 존재 가치를 기업인 입장에서 합리화하려는 시도였다면 아마 이렇게 서평을 쓰고 있지는 않을테다(1/3 정도 읽다가 조용히 책을 쓰레기통에 넣거나, 아니면 강력한 서평(?)을 써서 독자 여러분들의 피같은 돈을 절약하게 만들었을 것이다). 이 책은 조직이 만들어지는 이유로 시작해서, 이 과정에서 일어나는 여러 가지 현상과 문제점과 (긍정적이든 부정적이든) 부작용에 대해 다양한 사례와 이론을 전개한다. 이 책에서 가장 강력한 부분은 1장 "애덤 스미스가 풀지 못한 문제: 조직은 어떻게 만들어지는가"이며, 시장의 효율성을 넘어 조직이 위력을 발휘하는 이유에 대해 명쾌하게 설명하고 있다.

애덤 스미스가 '보이지 않는 손'을 이야기하며 시장의 효율성에 대해 강조한 이후부터 많은 경제학자들을 고민에 빠지게 만든 요인은 바로 '조직'이다. '보이지 않는 손'이 모든 것을 지배한다면 그야말로 온갖 역기능을 초래하는 조직이 존재할 이유가 없지 않겠는가? 하지만 조직은 없어질 기미를 보이지 않으며, 오히려 번성하고 있다(수 많은 회사들은 물론이고 심지어 비영리단체조차도 조직 형태로 운영된다!). 이 책에서는 로널드 코스가 주장한 '거래 비용(transactional cost)'을 중심으로 조직의 중요성에 대해 합리적인 설명을 시도한다. 독자 여러분을 위해 간략히 정리하겠다. 물건 구입 비용 이외에 우리가 치뤄야할 다른 비용(가장 저렴한 상점을 찾기 위해 투자한 비용, 이 상점에서 우리가 원하는 물건이 재고로 존재한다는 사실을 알기 위해 투자한 비용)은 '보이지 않는 손'이라는 시장 이론에서 숨어 있으며, 개인 대 개인의 거래를 넘어서 기업 대 기업으로 사업을 전개하려면 이런 거래 비용이 엄청나게 커지기 때문에 필연적으로 보이지 않는 세상에 마찰과 불화가 일어나기 마련이다. 즉, 회사는 되도록 복잡하고 위험하고 돈이 많이 드는 외부 거래를 줄이고 내부에서 처리하기를 원하며, 내부 거래 비용이 외부 거래 비용을 능가하는 지점에서 시장에 굴복한다는 내용으로 정리가 가능하다. 내부에서 모든 것을 다 처리하려 들 경우 지불해야 하는 비용은 사업의 확장에 따른 인력 충원과 이런 인력을 관리하기 위한 관리자 충원과 이런 관리자를 지원하기 위한 스태프 충원이라는 연쇄 반응에서 비롯된다. 반면 외부에서 모든 것을 다 처리하려 들 경우 신뢰할 수 있는 협력 업체를 찾고 이를 관리하기 위한 비용을 지불해야 한다. 결국 기업이 내부에서 처리하느냐 외부에서 처리하느냐를 결정하는 기준은 조직 비용과 거래 비용에 달려있다.

우와, 뭔가 머리에 번개가 번쩍하지 않는가? 심지어 개인과 개인의 거래에서조차도 거래 비용이 무척 중요한 경우가 생긴다. 난생 처음 간 곳(예: 영국)에서 점심을 먹어야 한다면, 거래 비용 관점에서 맥도널드가 최선의 선택이 아닐 수 없다(나머지 다른 음식점에 용감하게 뛰어들었다면 행운을 빈다). 맥도널드와 같은 프렌차이즈 음식점은 일관된 음식 맛과 서비스 형태를 유지함으로써 사용자에게 최상은 아니더라도 균일한 경험을 제공하기에 서비스 가격이 조금 비싸더라도 거래 비용을 낮춰주는 효과가 있다.

자, 그리고 나서 이 책은 열심히 조직의 여러 가지 특징을 이리저리 뒤집기 시작한다. 조직에서 평가, 정의, 실행이 왜 이렇게 엉망진창으로 형편없이 수행되는 듯이(실제로는 최선이라는 이야기다) 보이는지, 매출을 높이기 위해 조직 형태가 어떻게 바뀌는지, 혁신과 규율이 조직 내에서 얼마나 팽팽한 긴장감을 유지하는지(조직은 혁신만 강조해도 망하고 규율만 강조해도 망한다), 돈만 먹는 듯이 보이는 고루한 관리자가 회사를 살리는 이유가 무엇인지,CEO와 평사원은 도대체 하는 일에 어떤 차이점이 있는지, 탁월한 조직을 구축하는 과정에서 문화가 얼마나 중요한지를 다양한 사례를 들어 설명하고 있다.

이 책을 꼭 읽어야 할 독자는 '조직에 대해 불평 불만이 엄청나게 많고'(음, 아주 조금 찔리는 구석이 있다. T_T), '이상적인 비전과 열의로 가득찬' 사람이라는 생각이다. 이 책 에필로그에 나오는 좋은 문구를 정리하면서 마무리하겠다.

조직의 경계는 조직 내에서 물건을 만드는 비용과 그것을 거래해서 얻는 이득의 맞교환을 통해 정의된다.
모든 변화에는 비용과 혜택이 동반된다. 공상적 비전을 추구하는 사람들은 비용에는 눈을 감은 것 같다. 그러나 조직 생활은 그런 식으로 돌아가지 않는다.
주여, 우리에게 우리가 바꿀 수 없는 것을 평온하게 받아들이는 은혜와 바꿔야 할 것을 바꿀 수 있는 용기, 그리고 이 둘을 분별하는 지혜를 허락하소서.

결론: '조직'의 부정적인 측면에 사로잡힌 분들이라면 균형잡힌 시각을 확보하기 위해 이 책을 꼭 읽어보시라(물론 직접 조직을 한번 만들어보면 이 책에서 이야기하는 내용을 넘어서 훨씬 더 현실을 제대로 알게 되겠지만...).

EOB