토요일, 6월 21, 2014

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

금주에도 풍성한 소식을 전해드려서 무척 기쁘다.

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

화요일, 6월 17, 2014

[독서광] 창문 넘어 도망친 100세 노인

1990년대 중반에 개봉한 포레스트 검프라는 영화를 알고 계신 분이 많으실테다. 우연히 20세기 미국 역사의 격변기마다 얼굴을 내미는 주인공(톰 행크스)의 이야기인데, 소설을 영화로 만들어 흥행과 비평 양쪽으로 공전의 히트를 쳤다. 그런데, 할배판 '포레스트 검프'라는 평을 듣고 있는 책이 있어 6월 연휴를 틈타 번개처럼 읽어봤다. 세계 각국에서 인기를 끌었으며 영화로도 만들어진 "창문 넘어 도망친 100세 노인"이 오늘 소개할 책이다.

이 책의 가장 큰 특징은 100세 노인의 현재 기행과 과거 경험이 절묘하게 교차 편집되며 20세기를 관통하는 데 있다. 포레스트 검프 못지 않게 알란 칼손(100세 노인)도 세계 역사의 격변기마다 얼굴을 내밀며 예상치 못한 흐름을 창조해낸다. 검프가 지능 지수가 낮다는 핸디캡이 있다면 칼손은 가족 사정상 아홉살 때 학업을 중단하고 고달픈 노동의 현장으로 뛰어들었다는 핸디캡이 있다. 하지만 특유의 낙천적이면서 질러놓고 보는 성향으로 인해 칼손은 여기저기서 사랑(응?)을 받아 수 많은 역경을 해쳐나간다.

아무래도 한국사람이다 보니 가장 흥미로웠던 부분은 한국의 김일성과 김정일을 만나는 과정에서 절대절명의 위기에 처하는 장면이었다. 북한에서 이 책이 확실히 금서로 지정될 것 같다는 생각이 들었다(스포일러 방지를 위해 자세한 설명은 생략).

마침 한국에서는 2013년 말에 만들어진 동명의 영화까지 개봉한다는 소식이 있다. 며칠 전 서점에 가보니 책 표지가 모두 영화 포스터처럼 바뀌었다는...

결론: 개인적인 일이 있어 마산에 다녀왔는데, 버스 안에서 시간 가는 줄 모르고 읽었다. 여름 휴가에 최적의 친구라는 생각!

뱀다리: 책 표지 종이를 펼쳐보기 바란다. 꼼꼼함에 놀랄지도!

EOB

토요일, 6월 14, 2014

[B급 프로그래머] (Quora) 정말로 코드 작성을 "좋아하지" 않더라도 전산을 전공해야 하나요?

Quora에 다음과 같은 질문이 올라왔다.

Should I major in computer science if I don't really "love" writing code?

한글로 번역하자면, "정말로 코드 작성을 "좋아하지" 않더라도 전산을 전공해야 하나요?"

인기를 끈 대답을 정리해보았다


당연합니다. 다음과 같이, 배울 수 있는 수 많은 지식이 존재합니다.

저도 코드 작성은 좋아하지 않지만, 전산과에 들어와서 기쁘답니다. 위에서 열거한 모든 지식을 배우게 도와주었기 때문입니다.


위에 소개한 내용이 궁금해지기 시작했는가? 그렇다면 작년에 소개한 [독서광] 미래를 바꾼 아홉 가지 알고리즘을 읽어보기 바란다. 아주 재미있고 알찬 내용이 들어있음을 보증한다.

EOB

화요일, 6월 10, 2014

[독서광] Sublime Text 따라잡기

워낙 vi에 익숙하다보니(vim도 아니고 오리지널 vi!), 솔직히 급할 때 운영체제에 기본으로 설치된 텍스트 편집기 이외에 다른 텍스트 편집기를 잘 사용하지 않는다(아, 딱 한 가지 예외로... 김성동님이 만드신 acroedit는 윈도우에서 종종 쓰곤 했었구나...). 하지만 서브라임 텍스트라는 프로그래머용 텍스트 편집기가 있다는 이야기를 듣고 맥에 설치를 했으나... 사실상 vi에 밀려 먼지만 덮어쓰고 있었다. 하지만 이제 슬슬 vi를 대신해 vi와 함께 사용하는 텍스트 편집기를 찾아봐야겠다는 생각이 들기도 한다. 이런 와중에서 출판사 놀러갔다가 선물 받은 Sublime Text 따라잡기라는 책을 번개처럼 읽은 소감을 정리해보겠다.

Sublime Text 따라잡기는 130페이지라는 짧은 분량으로 '서브라임 텍스트'라는 요즘 뜨는 편집기에 접근하기 위한 기초 지식을 빠짐없이 전달하기에 진입 장벽을 낮춰준다는 생각이 들었다. 목차를 잠시 볼까?

  1. 서브라임 텍스트 설치: 프로그램 설치에 필요한 필수적인 설명(특히 데이터 디렉터리와 패키지 컨트롤 설치하기에 주목하자)
  2. 코드 편집: 찾기와 바꾸기, 컬럼과 다중 선택, 필수 플러그인 소개, 단축키 소개(Goto Anything에 주목하자)
  3. 스니펫과 매크로, 키 바인딩: 코드 조각을 자동으로 채워넣는 스니펫, 반복 작업을 단순하게 만들어주는 매크로, 그리고 자주 쓰는 명령을 단축 키에 할당하는 키 바인딩 소개
  4. 사용자 설정과 테마 개발: 사용자 설정과 관련한 기초 지식 소개
  5. 빈티지 모드 사용: 서브라임 텍스트를 vi처럼 사용하는 방법 소개
  6. 코드 테스트: PHP, 파이썬, 루비에서 단위 테스트 수행 방법 소개
  7. 디버깅: PHP, 자바스크립트, C/C++ 디버깅 방법 소개
  8. 플러그인 개발: 간단한 루이 온 레일스 플러그인 개발

목차를 보면 알겠지만, 서브라임 텍스트를 사용하기 위해 필요한 최소한의 지식을 담고 있으므로 공력이 높은 고급 개발자가 아니라 도대체 서브라임 텍스트가 어떤 편집기인지 맛을 보고 싶은 개발자에게 적합하다. 일단 이 책을 읽고나면 LISP 해석기가 내장된 emacs 대신 파이썬 해석기가 내장된 서브라임 텍스트를 어떻게 확장하고 활용할지 감이 오리라는 생각이다. 추가로 몇 가지 유용한 정보를 공유하니 서브라임 텍스트에 관심이 많다면 읽어보면 좋겠다.

깜짝 반전: 이 글을 쓰는 시점에서 서브라임 텍스트는 공짜가 아니다. 다운로드해서 평가할 때까지만 공짜이며 계속 사용하려면 돈을 내야 한다. 따라서 회사에서 서브라임 텍스트를 사용하려는 분들께서는 각별히 주의하시기 바란다.

Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use. There is no enforced time limit for the evaluation.
EOB

토요일, 6월 07, 2014

[B급 프로그래머] (Quora) 페이스북에서 '고급' 소프트웨어 엔지니어란?

Quora에 다음과 같은 질문이 올라왔다.

What does it take to be a "Senior" Software Engineer at Facebook?

한글로 번역하자면, "페이스북에서 '고급' 소프트웨어 엔지니어란?"

인기를 끈 대답을 정리해보았다

페이스북에서 아주 영향력이 큰 끝내주는 엔지니어를 만날 때, 몇 가지 공통적인 특질을 목격했다. 이런 엔지니어들은 더 많은 자율성으로 더 많은 영향력을 미칠 만한 능력이 있는 사람으로 압축된다.

  • 남들이 풀 생각도 풀 능력도 없는 기술적인 문제를 풀 수 있다.
  • 특정 분야를 아주 깊게 파고드는 지식이 있거나 특정 영역에서 다른 영역을 건너 다니며 쉽게 문제와 씨름하며 남들과 함께 일한다.
  • 자신들의 문제를 해결할 뿐만 아니라 다른 팀이나 회사 내 더 큰 부서가 빠르고 제대로 문제를 풀 수 있게 해법이나 프레임워크를 만들어낸다(자신들의 영향력을 크게 높이는 방법을 알고 있다).
  • 씨름할 가치가 있다고 밝혀질 때까지 어려운 문제를 여러 달이나 심지어 여러 해 동안 잡고 있어도 부끄러워하지 않는다.
  • 대다수 사람들이 자신의 인생 경력에 위험이 된다고 생각하는 범위를 벗어나며 개인적인 업무 평가에 연연하지 않는다.
  • 이런 엔지니어 중 많은 사람들은 정말 뛰어난 의사 소통자이자 조직화에 능숙한 사람이지만, 의사 소통과 친밀감이 필수 요구 사항은 아닌 듯이 보인다. 몇몇 사람은 정말로 뛰어나서 분야가 좁고 어려운 문제를 혼자 푸는 역량을 갖추고 있기 때문이다.

위에서 설명한 특질은 페이스북에서 일반적으로 볼 수 있으며, 다른 첨단 기술 회사도 마찬가지다. 계속해서 사람의 성장 관점에서 독특한 페이스북 문화를 소개한다.

  • 모호하고 바뀌는 요구 사항에 재대로 대응한다. 우리 핵심 가치 중 하나는 빠르게 움직이는 것이며, 이는 여러 회사가 자신들이 어떤 일을 해야할지 문서로 만들어 내느라 여러 달을 소비하는 동안, 우리는 프로토타입으로 넘어가 반복해서 개선함을 의미한다.이는 프론트엔드 개발자들이 여러 플랫폼(웹, 안드로이드, 아이폰, 태블릿 등)에 다양한 버전을 유지할 수 있는 능력을 갖춰야 함을 의미한다. 우리가 만드는 모든 제품은 첫날부터 바로 확장 가능해야 하므로, 벡엔드 엔지니어는 새로운 제품을 빠르게 수용할 수 있는 기반 구조나 프레임워크를 만들거나 확장 가능한 해법을 잽싸게 내놓으며, 계속해서 소프트웨어가 조금씩 바뀌어 나간다는 사실을 이해해야 한다.
  • 주고받는 피드백 관점에서 직설적이다. 페이스북의 열린 문화는 어느 누구도(어느 누구라는 단어를 사용할 때 마크 주커버그도 해당한다) 일방적으로 피드백을 주기만 하지 않는다. 열리고 솔직한 피드백은 사람들이 성장하게 만든다. 최고의 엔지니어는 피드백에 기반해 성장할 영역을 인식하는 사람들이다. 권위에 붙잡혀 있는 사람들은 가까워지기 어려우며, 피드백도 제대로 받아들이지 못한다.

덧붙이자면, 비록 가끔 이 용어를 사용해야만 하는 어쩔 수 없는 상황도 있긴 하지만, 나는 "고급(senior) 엔지니어"라는 용어를 정말 싫어한다. "고급 엔지니어"라는 용어는 기술 수준과 시간이라는 함수가 연관을 맺고 있음을 암시하기 때문이다. 하지만 솔직히 말해 페이스북에는 2년도 지나지 않아 회사를 위해 가장 중요하고 도전적인 몇 가지 작업을 수행하는 사람들도 있다.

언급하고 싶은 또 다른 주제가 있다. 많은 고급 엔지니어들이 죽치고 앉아서 "여기서 최고 엔지니어가 되려면 무엇을 해야할까?"라고 생각하며 지낸다고 믿지 않는다. 대부분은 정말 공부밖에 모르는 겸손한 사람이며, 어려운 문제들이 자신들의 관심을 끌기에 늘 깨어 있다. 보통 사람들이 잠자고 있을 때 열심히 일하고 노력하며, 뭔가 잘못되었을 때 초점을 잃지 않고, 자신들의 해법에 만족할 때까지 결코 포기하지 않는다.

만일 당신이 끝내주는 엔지니어/관리자/디자이너/PM/등이 되고 싶으면, 바로 가까이에 있는 문제에 뛰어들고, 더 큰 문제에 부딪힐 수 있게 정열과 아이디어를 집중하고, 당신이 최고로 잘하는 분야가 아닌 이상 현실에 안주하지 말기 바란다.

수요일, 6월 04, 2014

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

애플 WWDC가 있어 금주는 조금 빨리 정리된 소식을 올려드리겠다.

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

흥미로운 소식으로 3주에 찾아뵙겠다.

토요일, 5월 31, 2014

[독서광] 역사상 가장 영향력 있는 고양이 100

정말 간만에 책 한 권 소개해드리려 한다. (특히 트위터에서) 사람들의 혼을 쏙 빼놓는 고양이에 대한 책이라고 해서 냉큼 사서 읽어보았다.

책 내용은 인류의 문화와 문명에 영향을 끼친 여러 고양이에 대한 짧은 일화를 담고 있다. 자연/과학, 정치/역사, 예술/문학, 대중 문화, 용감 무쌍이라는 다섯 분야에 걸쳐 맹활약한 고양이들이 100마리나 등장하므로 멍멍이에 비해 상대적으로 푸대접을 받은 야옹이들의 지위 개선에 조금이라도 도움이 될 듯이 보인다. 개인적으로는 예술/문학 분야의 고양이들이 가장 놀라웠다. 주로 뮤즈가 나타나려면 술의 힘을 빌어야 한다고 생각했었는데, 고양이도 장난이 아니다(최근 모 교수님의 책 표지에 키우는 고양이가 등장해 화제가 되었었는데, 충분히 이해가 간다. ㅋㅋ).

책에 나온 고양이들도 무척 흥미롭지만... 아직도 기억에 생생하게 남는 일화는 바로 대부의 돈 꼴레오네 무릎 위에 올라간 고양이다. 언제부터 영화속 악당들은 고양이를 쓰다듬게 되었을까?에서 가져온 사진을 한번 보자.

Vito's cat에도 숨겨진 일화가 나오지만, 고양이의 가르렁거리는 소리 때문에 대부의 목소리가 잘 안 들리는 문제가 생겼음에도 불구하고 용케 편집에서 잘리지 않고 살아남은 모양이다(프란시스 포드 코플라 감독님이 장면이 잘 나와서 봐주신 듯.). 고양이가 대부의 숨겨진 표정 뒤에 숨어있는 발톱을 상징한다고 생각하면 아찔한 생각이 들지도 모르겠다. 실제 재개봉 당시 영화관의 큰 화면에서 고양이를 봤을 때 깜짝 놀란 기억이 아직도 생생하다(좁아터진 티비에서 볼 때는 잘 모르고 넘어갔었다. T_T). 보너스로 잠시 재미있는(!) 동영상을 하나 감상해보자(자막 보면 포복절도...).

고양이랑 노는 장면이 예사롭지 않다는 분들께 말론 브란도가 엄청난 애묘가라는 사실을 살짝 귀띔해드린다.

초 간단 결론: 이 책은 고양이 애호가들에게 추천!

EOB

수요일, 5월 28, 2014

[B급 프로그래머] (Quora) 나쁜 소프트웨어 엔지니어의 특성은?

Quora에 다음과 같은 질문이 올라왔다.

What are the characteristics of a bad software engineer?

한글로 번역하자면, "나쁜 소프트웨어 엔지니어의 특성은?"

인기를 끈 대답을 정리해보았다

  1. StackOverflow 봇: 이 친구는 오류를 만나면 잽싸게 구글 검색을 열어 발견한 첫째 대답을 적용한다. 여기서 문제는 스택오버플로우에서 복사하는 행위가 아니다. 어떤 참조 문헌이나 매뉴얼보다 스택오버플로우에 많은 해법이 있다고 생각한다. 오해하지 말기 바란다. 스택오버플로우는 최고는 아니지만 좋은 자원이니까. 문제는 추이를 생각하지 않고 복사기처럼 행동하는 데 있다. 현재 풀려는 문제에 적용할 수 있을지 맥락을 완전히 이해하지 않은 상태에서 섣부르게 응용하면 문제가 생긴다. 종종 직접 확인한 내용이 아니라 온라인 포럼에서 본 내용을 더 신뢰하는 사람들을 목격해왔다.
  2. 저는 테스터가 아닙니다: 코드를 테스트할 필요가 없으며, 이런 작업은 테스터 몫이다. 성숙한 애자일 방법론의 시대에도 이런 태도가 줄어든다고 생각하지 않는다. 여전히 코드를 테스트하는 작업에 대항하는 타성이 존재한다. 테스트 환경 설정에 무관심하거나 테스팅에 대한 논리 정연한 지식 부족 때문이라 생각한다(개발 공통체에서 테스터에게 뒤집어 씌운 오명도 일부 원인이긴 하다).
  3. 문서화를 싫어합니다: 몇몇 개발자들은 코드 문서가 문학이라 믿기에 이런 기술이 부족하다고 생각하며, 따라서 자신들의 일이 아니라 여긴다. 내 의견에 따르면 이런 생각은 지속적인 소프트웨어의 주적이다. 훌륭한 소프트웨어는 백만 가지에 이르는 좋은 기능을 제공하는 데 있지 않다. 훌륭한 소프트웨어는 많은 사람들이 일관성있게 사용 가능한 몇 가지 좋은 기능을 많은 개발자들이 읽고/수정하고/갱신할 수 있어야 한다. 이런 훌륭한 소프트웨어 개발자들은 기술적인 의사소통 보다는 정확하고 상세한 문서화가 회사의 성공에 가장 큰 버팀목이 되리라 믿는다.
  4. 동작하지만 보기 흉한 코드: x, flag, str, arr과 같은 변수 이름, 모든 것을 다 넣은 거대한 메소드, 코딩 관례나 스타일의 일관성 부재, 들여쓰기 부재, 전역 변수(다이아몬드 목걸이가 타이타닉 잔해에 묻혀 있다면, 어느 누구도 찾지 못하고, 깨끗하게 씻지 못하고, 착용하지 못하고, 사용하지 못할 것이다.)
  5. 단기 투자가: 코드를 만들고 배포하고 다음으로 넘어간다. 문제를 배우려는 시도는 없다. 업무 영역에는 관심도 없다. 단순히 코드만 주면, 밤새 묵묵하게 일한 다음 완성해서 넘길 것이다. 소프트웨어를 수정하고 만든다. 여기서 어떤 업적도 달성하지 못한다. 종종 개발자의 이기적인 태도가 중요하지만, 마감일 뿐만 아니라 개발 과정에서 무엇을 얻을지도 신경써야 한다.
  6. 시위자: "저는 이 일은 안 합니다.", "나쁘게 보이네요.", "제 문제가 아닙니다." "제 수정과 관련이 없고, 저기 누군가 실수를 했습니다.", "싫다구요!(하루에 10번 이상 반복한다)", "이 문제는 제가 수정할 수 없습니다. 만든 사람에게 시키세요."
  7. 독재자: "협조하거나 꺼지거나"가 모토다. "자신들의 아이디어"와 "당신의 아이디어"만 있고 "프로젝트 아이디어"는 없다. "자신들의 해법"이거나 "당신의 해법"뿐이다. 이런 사람은 생산성에 있어 큰 병목이며, 압력하에 바스러지거나 남을 비난하기 시작할 첫 사람이다. 개발자로서 경험이 있고 좋을지는 몰라도 함께 일하는 팀에 있어 좋은 사람은 아니다.
  8. 지나치게 조심하는 개발자: 파이썬 스크립트를 작성해야 한다는 사실을 알았을 때 멘붕이 온 자바 개발자가 있다. 레지스트리 변경이 필요하다는 사실을 알았을 때 공포에 질린 개발자가 있다. 데이터베이스에 뭔가를 입력해야 한다는 사실에 당혹해하는 개발자가 있다. 이런 개발자들은 안락한 영역에서 벗어나지 않기 위해 뭐든 할 것이다. 이런 개발자들에게는 시스템의 특정 영역을 건드리는 작업과 관련해 기묘한 미신이 있다. 개인적인 경험에서 보면 새로운 개발자에게 흔히 보이는 현상이며, 좋은 개발자들은 탐구 과정에서 차근차근 이런 안락한 영역으로부터 벗어나려는 경향을 보인다.
  9. 부주의: 백업과 스냅샷에 신경쓰지 않으며, 코드를 여러 작업 디렉터리에 분산하며, System.out.println을 상용 코드에 남겨 둔다. 새로운 개발자에게 흔히 보이는 현상이며, 전문적인 환경을 접하면 나아진다.
  10. 게으른 가짜 해커: 시스템을 동작하게 만드는 트릭에 자부심을 느낀다. 완벽한 해법을 위한 마법을 찾는다. 경험에 따르면 이는 십중 팔구 빚좋은 개살구다. 가짜 해킹은 나쁘며, 조만간 망가지며, 수습에 더 많은 비용과 시간이 든다.

자, 그렇다면 여러분들이 뽑은 나쁜 소프트웨어 엔지니어의 특성은 어떤가? 댓글로 공유하면 감사하겠다.

토요일, 5월 24, 2014

[번역은 즐거워] 바꿀 수 있는 사안에 대한 걱정(링크드인 펄스 블로그에서)

오늘은 걱정에 대한 글을 번역해 소개하겠다.


당신은 걱정을 달고 사는 사람인가? 작은 일, 큰 일, 모든 일을 걱정한다는 사실을 걱정하는가? 문제는 걱정이 시간과 에너지를 많이 소비한다는 점이다. 이를 다른 곳에 더 좋게 사용할 수 있으므로 가능하면 걱정을 떨쳐버리기 바란다.

걱정은 결과가 불확실하거나 통제권이 없는 상황에서 뭔가 사건이 터질 경우 일어나는 인간의 공통적인 감정이다. 잠시 통제에 대해 생각해보자.

통제 역시 걱정의 대상이다. 문제에 대해 통제력이 있는가? 문제를 바꿀 수 있는가? 걱정하는 바를 전혀 통제하지 못하며, 변경할 수도 없다면 걱정하지 마라.

모든 것을 통제할 수 있어야 한다고 생각하면, 누가 당신에게 우주를 관리하는 임무를 맡겼을까?

사건이나 다른 사람을 통제하지 못할지도 모른다. 하지만 당신은 당신의 감정을 통제할 수 있다. 걱정을 통제할 수 있고, 원한다면, 걱정을 인생에서 지울 수도 있다. 그러니 걱정 마시라.

아무 걱정이 없다는 생각이 당신을 걱정하게 만드는가?

아마도 당신은 염려와 걱정이 시간을 소비하고 당신이 무엇을 하든 아무 가치도 부가하지 않는다는 사실을 이미 알고 있을 것이다. 그렇다면 걱정을 왜 하는가?

일과 관련된 사항만 걱정하는가 아니면 염려가 개인적인 삶에도 영향을 미치는가? 건강이나 결혼과 같은 특정 사안에 대한 걱정에 시달리는가 아니면 당신이 영향력을 미치지 못하는 온갖 종류의 일에 대해 '자유롭게 떠돌아 다니는 염려'에 시달리는가 아니면 일반적인 사안에 대해 걱정하는가? 내가 여기서 제시할 수 있는 범위를 넘어서 더 많은 도움이 필요할지도 모른다는 사실을 자각하고 있을지도 모르겠다. 지금부터는 당신의 계속되는 사소한 걱정을 누그러뜨리고 걱정하는 경향을 통제하는데 도움을 주는 내용을 정리한다.

만일 당신이 걱정하고 있다면, 원인이 무엇일까?

컬럼비아 대학교의 딘 호키스 학장은 "결정의 근거가 되는 충분한 지식을 갖추기 전에 결정을 내리려 시도하는 사람들이 세상 걱정의 절반을 일으킨다"라고 말한 적이 있다.

그는 아주 설득력 있는 논점을 제시했다. 따라서 사실을 수집하고 경중을 따져 결정을 내리자. 일단 결정을 내린 다음에 해야 할 가장 중요한 작업은 실천이다. 질질 끌지 마라. 잘못될 수 있는 일에 대해 걱정하느라 시간을 낭비하지 마라. 그대신 긍정적인 면을 보고 거기에 초점을 맞춰라. 문제에 대해 걱정하려는 유혹에 빠지기 앞서 문제를 다시 한 번 신중하게 생각하고 다음 질문을 스스로에게 해보라.

  • 문제가 무엇인가?
  • 문제를 초래한 원인이 무엇인가?
  • 가능한 해법이 있는가?
  • 최상의 해법이 무엇인가?

초기의 '걱정'이 얼마나 단순해지며, 얼마나 쉽게 풀릴 수 있는지에 놀랄 것이다.

만일 이런 접근 방법이 통하지 않는다면, 한 단계 더 나가 최악의 상황에 영합할 수도 있다. 최악의 시나리오를 받아들이자. 다음 세 가지 질문을 스스로에게 해보자.

  • 일어날 수 있는 절대적인 최악의 상황은 무엇인가?
  • 실제로 이런 최악의 상황이 일어날 수 있는 가능성은 얼마인가?
  • 이런 최악의 상황이 벌어졌을 때, 당신이 해야 하거나 할 수 있는 일이 무엇인가?

최악의 시나리오를 생각할 때, 여기에 대한 해법을 마음 속에 그려보고 찾는 작업은 불안을 다루기 위한 가장 좋은 방법 중 하나다. 일어날 수도 있는 최악의 상황이 해결하지 못하는 문제가 아니라는 사실을 발견할지도 모른다. 아니면, 실제로 상황을 조감할 때 당신의 걱정이 얼마나 우스꽝스러운지 알고 웃을지도 모르겠다.

  • 잭: 하느님 맙소사! 장모님 생일 잔치를 잊어버렸구나. 나는 이제 죽었다! 집에 갈 수도 없는데, 이제 어떻게 해야 하나?
  • 질: 일어날 수 있는 최악의 상황이 무엇이에요?
  • 잭: 장모님은 저랑 다시 이야기도 안 하실지도 몰라요!
  • 질: 그게 최악의 상황이네요. 장모님이 말도 안 건넨다.
  • 잭: 맞아요. 잠시만 아니에요. 그건 그렇게 나쁘지 않아요.
  • 질: 좋아요. 그렇다면 뭐가 최악의 상황이에요?
  • 잭: 제 마누라가 저를 죽일지도 몰라요.
  • 질: 정말 그래요? 어떻게 부인이 당신을 죽일까요?
  • 잭: 고통스럽게. 아 어떻게라고 말했나요? 음. 잠시만 기다려봐요. 그게 말이에요.

해법에 초점을 맞추자. 당신의 기업가적인 창의성은 심지어 가장 험한 시나리오에 대한 해법도 찾아낼 수 있을 것이다. 이런 연습은 당신의 가장 치명적인 공포를 편안하게 다스리게 도와주며, 더 중요하게 이에 대한 실질적인 해법을 제공할 것이다. 일단 일어날 수 있는 가장 최악의 상황을 밝혀내는 계획을 수립하고 나면, 문제와 불확실성은 최소로 줄어든다. 이게 가능하면 전진할 수 있다.

최악의 시나리오를 고려한 다음에, 만일 여기에 대해 할 수 있는 일이 없다는 사실을 발견하면, 확실성을 받아들여라. 선택의 책임에서 벗어나며, 불가피함을 감수할 수 있다. 만일 뭔가 일어나고 있고 바꿀 수 없다면, 이를 감수하라! 할 수 있는 다른 일이 없다면 여정과 학습을 즐겨라.

또 다른 공통적인 문제는 과거에 대한 걱정이다. 한창 잘 나가던 시절에 아주 똑똑한 사람들을 만나왔다. 하지만 과거로 돌아갈 수 있는 누군가를 만나지는 못했다. 지나간 과거에 대한 걱정으로 시간을 낭비하지 마라. 이에 대해 할 수 있는 일은 딱히 없다. 과거에서 배워 미래를 향해 전진할 수 있을 뿐이다. 도움이 되지 않는 감정은 과거에 원래 있던 곳에 남겨두자. 무엇이 일어났는지를 반성하자. 일어난 일에 대해 무엇을 배웠는지 반성하자. 미래에 어떻게 다르게 행동할지 결정하자. 위대한 학습의 기회로 포용하고 앞으로 나가자.

긍정적인 정신적 태도를 계발하자. 우리가 걱정하는 뭔가를 고치거나 문제에 대해 조치를 취하려면 시간과 노력이 많이 필요하다. 물론 여기에 대해 걱정을 하더라도 시간과 노력이 많이 필요하다. 앉아서 걱정하는 대신, 뭔가를 실행하고 정리하자!

걱정은 당신의 삶에 아무런 가치도 부가하지 않는다. 만일 어쨌든 걱정을 꼭 해야겠다면, 시간에 제약을 두고 걱정하는 시간을 최소로 줄이는 프로세스를 만들자. 좋다, 여기에 대해 5분만 걱정하고 다음으로 넘어간다. 결론에 도달하거나 해법을 찾거나 현실을 받아들일 때까지 체계적으로 걱정하자. 5분 안에 말이다!

무엇보다, 상황을 바꿀 수 있는 당신의 역할을 인식하자. 뭔가 할 수 있다면, 정말 멋지다. 당장 실천하자.

만일 그럴 수 없으면, 여기에 대해 생각하느라 에너지를 낭비하지 말기 바란다. 당신이 할 수 있는 긍정적인 면을 생각하라. 인생은 너무나도 짧다!

추천도서:

  • Feel the Fear and Do it Anyway by Susan Jeffers (Amazon Link UK, US)
  • The Power of Now by Eckhart Tolle (Amazon Link UK, US)
  • How to Stop Worrying and Start Living by Dale Carnegie (Amazon Link UK, US)

저자: 마크 윈


EOB

토요일, 5월 17, 2014

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

금주에도 푸짐한 소식으로 여러분들을 찾아뵐 수 있어서 뿌듯하다.

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

수요일, 5월 14, 2014

[번역은 즐거워] 신뢰: 모든 것이 만들어지는 초석(링크드인 펄스 블로그에서)

신뢰가 무너진 사회가 어떤 모습인지 지난 몇 주 동안 충분히 목격하고 있다. 관련있는 주제라고 생각되어 '신뢰'에 대한 글을 하나 번역해 올려드린다.


성공적인 관계, 팀, 조직을 이끄는 가장 중요한 원동력을 하나만 찍어 달라고 요청 받으면, 신뢰를 선택하겠다. 신뢰는 다른 모든 것이 구축되는 토대다.

신뢰는 "누군가 혹은 뭔가의 안정성, 진실, 능력, 힘에 있어 확고한 믿음"이다. 단순하게 들릴지도 모르겠다. 하지만 신뢰를 쌓기란 어렵지만, 잃어버리기는 놀랄 만큼 쉽다. 이런 중요성에도 불구하고, 신뢰를 육성하거나 신뢰에 초점을 맞추는 경우가 드물다.

신뢰가 중요한 이유는?

  1. 신뢰는 투명성을 이끈다. 동반자 관계나 조직을 위해 마음 속으로 최선을 다한 당신의 언급이 액면 그대로 받아들여질 것이라 신뢰하지 못하면, 의도하지 않은 결과에 공포를 느낄 것이다. 당신은 아무 말도 하지 않는다. 투명성 없이는 "다섯 가지 팀의 기능 장애"라는 책에서 패트릭 렌시오니가 적었듯이, 당신은 마음을 연 상태에서 정직한 논쟁을 벌이거나, 최적화된 해법, 책임감, 뒤따르는 약속에서 이익을 얻지 못한다. 투명성이 없다면, 짚고 넘어가야 할 문제는 그대로 남아있게 되며, 토론이나 주장 역시 찾아볼 수 없다.
  2. 신뢰는 자율성을 이끈다. 개인이 스스로의 말을 지키는 모습을 더 많이 보여줄수록, 관리자들은 방해가 안 되게 비켜나서 전문성이 빛나게 만들며, 책임질 영역을 점점 더 많이 이양한다. 모든 사람이 승자가 된다. 다니엘 핑크가 "추진력: 우리에게 동기를 유발하는 놀라운 진실"에서 밝히듯 자율성은 동기를 유발하는 가장 큰 기여 요소다.
  3. 신뢰는 관계를 강화한다. 누군가 뭔가를 말한 다음 말을 바꾸면, 향후에 관계를 유지하고 싶지 않을 것이다. 문제는 다음과 같다. 조직 내 팀은 상호 의존성이 매우 강하므로, (특히 고위 직급에서) 연결이 깨진다면, 균열을 회피할 목적으로 차선의 경로를 택한 모든 개인에게 엄청난 영향을 미친다.

아주 좋다. 이제 감을 잡았다. 신뢰는 중요하다. 그렇다면 신뢰를 구축하기 위해 우리는 어떻게 해야할까?

  1. 신뢰를 규범으로 확립한다. 신뢰가 중요한 이유를 설명하고, 팀 사이에서 이를 공유하게 만든다. 안전한 토론을 위한 한도와 함께 새로운 표준을 수립한다. 동반자 한 명이든 다섯 명으로 구성된 작업 팀이든, 천 명 짜리 조직이든 이런 작업을 누구와 하든 상관 없다. 당신에게는 남들과 다른 차이를 만들어 내는 능력이 있다.
  2. 투명해져라. 모든 사람이 볼 수 있게 카드를 테이블에 펼쳐라. 모든 사람이 이해하는 내용이 일치하게 기대치를 명확히 밝혀라. 솔직히 말하고, 존중하고, 골치 아픈 문제에 대해 결코 입을 닫고 있지 마라. 편안해야 할 필요는 없으나 정직해야 할 필요는 있다.
  3. 무엇을 하려는지 말하라. 약속하고, 명확하게 기대치를 설정하고, 실행하기만 하면 된다. 상황이 바뀌어, 최선을 다하더라도 더 이상 약속을 지키지 못하게 되면, 정직하게 바뀐 상황을 관련자들에게 초기에 전달한다.
  4. 다른 사람들에게 책임을 지우라. 일단 새로운 규범을 전달했으면, 이를 지키지 않을 경우 뭐가 잘못되었는지 자신과 다른 사람들에게 질문하고 언제 문제가 생겼는지 사람들이 인식할 수 있게 알릴 필요가 있다.

신뢰를 구축하기 위한 방법에 초점을 맞춰 주의를 기울인 결과, 나는 신뢰가 팀의 성공을 이끄는 아주 강력한 원동력일 뿐만이 아니라, 개인적인 진실성과 원칙의 핵심 구성요소라는 사실을 알게 되었다.

신뢰와 관련해 여러분의 경험을 듣고 싶다. 댓글로 공유하면 좋겠다.

저자: 케빈 사이먼


EOB

토요일, 5월 10, 2014

[B급 프로그래머] (Quora) 1~2주일만에 가능한 흥미로운 코딩 프로젝트는?

Quora에 다음과 같은 질문이 올라왔다.

What are some interesting coding projects that I can complete in 7-14 days to build my resume for a summer internship?

한글로 번역하자면, "방학 인턴으로 이력서에 올릴만한 1~2주일만에 끝낼 수 있는 흥미로운 코딩 프로젝트는 무엇일까요?"

여기 대해 좋은 대답이 올라와서 간단하게 정리해봤다.

  • 기존보다 더 잘 끝낼 수 있다고 생각하는(또는 의도에 잘 맞다고 생각하는) 스마트폰/컴퓨터용 앱을 작성한다.
  • 구글 스프레드시트나 애버노트와 연동되는 할일 목록(API 사용)
  • 스타트업 아이디어를 잽싸게 기록해 놓았다 목록(또는 일부 목록)을 친구와 공유하게 만들어주는 "아이디어 추적" 모바일 앱. 구글 스프레드시트와 연동이 핵심 포인트다.
  • 대화 중에 "가지"를 치게 허용하는 챗 위젯. 대화하는 도중에 누군가 끼여들어 다른 주제를 제시하는 경우 어떻게 해야할까? 새로운 대화로 가지를 치면 어떨까?
  • 오픈 테이블에서 Yelp 후기를 겹쳐 보여주는 크롬 확장
  • "동적으로 생성하는 포럼": 링크를 보내기만 해도 동적으로 포럼을 잽싸게 만드는 프로그램. 대화 스레드를 지원한다.
  • 소셜 북 추천기: 직전에 무엇을 구매했는지 아마존 영수증을 스캔해 이메일로 보내거나 아마존의 과거 구매 내용을 스크린샷으로 잡아 보내면, 친구가 가장 많이 구입한 책이 무엇인지 보여준다.

그렇다면 여러분의 추천 프로젝트는 무엇인가? 댓글로 공유해주면 좋겠다.

EOB

토요일, 5월 03, 2014

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

많은 분들께서 프로그래밍 소식지에 관심을 보여주셨기에 감사드린다. 여느 때와 마찬가지로 개발 관련 각종 소식을 정리해보았다.

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

목요일, 5월 01, 2014

[번역은 즐거워] 가상 현실의 미래(오큘러스 블로그에서)

분위기도 쇄신할 겸 정말 몇 년 만에 블로그에 새로운 카테고리를 만들어봤다. '[번역은 즐거워]'라는 표제로 시작하며, 독자 여러분들께 도움이 될만한 글들을 번역해 올려드리겠다. 오늘은 1번 타자로 오큘러스 블로그에 실린 The Future of Virtual Reality라는 글을 소개하겠다.


나는 늘 게임을 좋아했다. 게임은 우리에게 환상적인 여행이 가능하게 만드는 세상으로 이끄는 창이었다. 가상 현실 분야에 들어가려는 시도는 게임 경험을 강화하고 환상적인 세상으로 이끄는 창이 아니라 도구를 만들어 환상적인 세상으로 실제로 들어가려는 욕구에서 출발했다. 시간이 지남에 따라, 가상 현실 기술은 가능성을 넘어서 거의 주류로 뛰어들 준비가 된 상태라는 사실을 자각했다. 정말 필요한 것은 제대로 된 추진력이었다.

우리는 가상 현실을 일반화하고 접근성을 높여 누구나 불가능을 경험하게 만든다는 비전으로 오큘러스 VR을 시작했다. 믿기 힘든 공동체의 도움 덕분에 전 세계 게임 개발자, 컨텐트 제작자, 예술가들로부터 7만 5천에 이르는 개발 킷을 주문 받았다.

페이스북이 처음 동반자 관계를 모색하려 접근했을 때, 나는 회의적이었다. 하지만 페이스북과 페이스북의 비전에 대해 더 많이 이해하게 되고 마크와 이야기를 나누면서, 동반자 관계는 실현 가능성을 넘어 가상 현실을 모든 사람에게 전달하는 명백하고 확실한 경로가 되었다. 페이스북은 세상을 더욱 연결된 장소로 만든다는 비전으로 설립되었다. 가상 현실은 예전에 결코 가능하지 않았던 방식으로 다른 사람들과 경험을 공유하게 만드는 매체다.

페이스북은 오큘러스 문화와 보조를 맞추는 개방된 방식으로 운영된다. 지난 10년 동안, 마크와 페이스북은 개방형 소프트웨어와 하드웨어 분야에서 챔피언이 되어 왔고, 전체 기술 업계를 대상으로 혁신의 한계를 초월했다. 페이스북이 성장함에 따라, 페이스북은 오픈 컴퓨터 프로젝트와 같은 노력에 투자했다. 오픈 컴퓨터 프로젝트는 업계 전반에 걸쳐 컴퓨터 기반에 투입되는 비용을 줄이고 창의력을 이끌어낼 목적으로 시작되었다. 용감하게 미래에 판돈을 건 팀이었다.

결국 나는 우리가 오큘러스에서 매일 자문했던 질문으로 돌아갔다. 가상 현실의 미래를 위한 최선의 노력은 무엇일까? 마크와 페이스북 팀과 동반자 관계를 맺는 기회는 특별하고 강력하다. 동반자 관계는 우리의 비전을 가속화하며, 가장 창의적인 아이디어를 실천에 옮기게 도와주며, 동반자 관계가 아니면 불가능한 위험을 짊어지게 만들어준다. 한 가지 더 중요한 사실이 있다. 동반자 관계는 우리의 기대치보다 훨씬 빨리 훨씬 적은 타협으로 오큘러스 리프트를 더 좋게 만들어준다는 사실을 의미한다.

우리가 올바른 팀을 구축하기 위해 상당히 많은 자원을 투입했음에도 불구하고 오큘러스의 일상은 거의 변화가 없었다. 컴퓨터 비전, 그래픽, 입력 장치, 오디오와 관련해 어려운 문제를 풀기 원한다면 언제든 오큘러스에 지원하라!

게임 업계에 특별한 순간이 왔다. 오큘러스의 다소 불투명한 미래가 수정처럼 맑아졌다. 가상 현실이 다가오고 있으며, 그 결과 우리가 게임하는 방식을 영원히 바꿀 것이다.

나는 가상 현실에 푹 빠져 있었다. 낮에는 일을 추진하며, 밤에는 우리가 가는 목적지를 꿈꿨다. 심지어 무모한 꿈속에서조차 그렇게 멀리 그렇게 빨리 목적지에 도달하리라고는 결코 상상하지 않았다.

이런 공동체 일원이 되어 자랑스럽다. 가상 현실과 게임 사업 추진에 도움을 주고 제품 출시에 대해 신뢰를 보여준 모든 분들께 감사한다. 우리는 여러분들을 실망시키지 않을 것이다.

– 팔머 럭키, 창립자, 오큘러스


EOB

수요일, 4월 30, 2014

[일상다반사] 원칙 없는 사회

트윗을 읽다가 다음과 같은 아주 핵심을 찌르는 @HyeYunLee님의 글이 눈에 띄여 소개한다.

오늘 미국에서 오래 거주한 한국인과의 대화. "미국은 안 되는건 안 되는데. 한국은 안 되는걸 되게 하거나 될 수도 있게 하는 것이 가장 문제" 세월호 뿐만이 아니라 한국사회 전반적으로 깔려있는 원칙을 어기고 일을 진행하는 것이 능력으로 포장된건 아닌지

이 글을 읽다보니 몇 년 전에 미국에서 오래 거주한 지인(한국 사람이다)이 해준 비슷하지만 조금 다른 이야기가 생각나서 간략하게라도 정리하고 넘어가지 않을 수 없다.

미국에 가보면(뭐 예상하겠지만... EU에 속해 좀 잘 나간다 하는 유럽 국가도 마찬가지다), 공항, 상점, 음식점, 공공기관, .... 등에서 현장 직원들의 서비스 수준에 놀랄 때가 많을 것이다. 외국에 나가서 융통성이라고는 정말 개미 눈꼽만큼도 없는 서비스를 받으며 속이 터진 경험을 누구나 한번씩 해봤을 것이니 여기서 다양한 사례는 과감하게 생략하고 바로 본론으로 들어가겠다. 여기서 현상을 탓하지 말고 이유를 생각해보자. 왜 그럴까? 왜 선진국은 한국처럼 서비스를 번개처럼 멋지게(커피 나오셨습니다?) 하지 못할까?

지인이 분석한 결과는 너무나도 흥미로웠다. 지인의 주장에 따르면, 미국은 철저하게 능력 중심으로 승진이 일어나기 때문에(물론 안 그런 경우도 있지만 일반적으로 그렇다는 말이다) 정말 똑똑하고 싹싹하고 뛰어난 친구들은 승진에 승진을 거듭해 조직의 위쪽에 올라가 있기 때문에 현장에서 볼 수 없기 때문이란다. 이런 능력있는 친구들은 자신들이 아는 바를 총동원해 아주 평범하고 일반적인 사람도 고민하지 않고 일을 할 수 있게 원칙과 절차를 만드는 작업에 투입되므로 융통성을 희생하더라도 어떻게든 일은 진행되는 시스템을 구축할 수 있게 된다. 일을 처리하면서 예상하지 못했던 예외는 예외대로 모아 별도의 전문가(말 그대로 전문가)에게 위임해버리는 방법을 사용한다. 하지만 한국은 미국과 정반대로 현장의 아르바이트 직원은 아무리 똑똑하고 싹싹하고 뛰어나더라도 승진을 기대하지 못한다(아주 드물게 점장까지 하는 사람도 있지만... 창업주의 일가 친척이 아닌 이상 조직이라는 사다리의 꼭대기로는 절대 올라가지 못한다). 생존을 위해 융통성을 극대화하고 필요에 따라서는 규칙과 원칙도 과감하게 위반해야 한다. 그 결과 역설적으로 한국에 살고 계신 여러분들은 (원칙이니 규칙을 잘 지키는지는 아무 관심 없고...) 현장에서 똑똑한 사람들이 제공하는 융통성이 극대화된 최상의 서비스를 받을 수 있는 것이다. T_T

와, 정말 그럴싸한 이야기가 아닐까? 하지만, 여기서부터 파생되는 결과가 더 중요하다. 미국은 일선 직원들에게 매뉴얼에 명기된 권한과 책임을 명확하게 부여한다. 한국은 좋은 것이 좋은 것이므로 권한과 책임을 명확하게 구분하지 않는다. 그 결과 평상시에는 미국보다 한국이 월등히 높은 효율을 낼 수 있다. 현장에서 실행하는 사람들의 수준에서 차이가 날뿐더러 규칙과 원칙대로 하다보면 아무래도 시간도 오래 걸리고 사람도 많이 필요하게 되는 등 간접 경비(overhead)가 커지기 마련이니까. 자, 그렇다면 평상시가 아니라 비상시가 되면 어떻게 될까? 가용한 모든 자원을 집중하기 위해 적극적인 리더십이 필요한 상황이라면 어떻게 될까? 몇몇 똑똑한 비정규직 직원만으로 방어가 가능할까? 피해를 줄이거나 사전에 위험을 최대한 회피할 수 있을까? 답은 이미 우리 모두가 알고 있다. 연일 뉴스와 신문에서 대문짝만하게 사고 소식을 보도하고 있으므로 여기서 더 이상 언급하지 않겠다.

합리적인 선을 넘어서 원칙적으로 안 되는 것을 되게 만든 영웅담이 회자(아니 미화)되지만 정작 이로 인해 심각한 문제가 생겨 누군가 책임질 상황이 닥치면 미개한(응?) 아래 것들만 주리를 틀어 책임을 떠넘기며 꼬리를 자르고 도망가는 행태가 반복되는 상황에서 무엇을 더 기대할 수 있을지 모르겠다. 이번 사고 후에 별의별 희한한 온갖 종류의 대책이 다 나올텐데 백약이 무효라는 데 한 표 던진다. 향후 문제점이 개선될 가능성은 그리 높지 않으며 유사한 재난은 앞으로도 반복되리라는 사실이 사람들을 더욱 암울하게 만드는 진짜 이유다. 원칙대로 해도 융통성 없는 병신이라는 소리를 듣지 않는 사회가 되어야만 제대로 풀릴 문제다. 어떻게 보면 몇 푼 아끼느라, 조금이라도 빨리 하기 위해, 나 하나 편하자고 원칙 없는 사회를 만드는데 직간접으로 일조한 우리 모두가 자초한 결과다. 정말 부끄럽다.

EOB

화요일, 4월 29, 2014

[일상다반사] 아파치 Solr 4 구축과 관리 : 오픈소스 루씬 기반 엔터프라이즈 검색 플랫폼

해 님께서 열심히 작업해주신 덕분에 번개처럼 무사히(!) 번역을 끝낸 아파치 Solr 4 구축과 관리 : 오픈소스 루씬 기반 엔터프라이즈 검색 플랫폼이 절찬리에 예약 판매 중이다. 사회 초년생 때 검색 엔진 팀에 속해 KMS(지식 관리 시스템) 등을 만들고 나서 거의 10년 만에 검색 엔진 관련 서적을 손에 쥐니 기술의 발전사를 온 몸으로 느낄 수 있었다. 기존에 루씬을 사용한 경험이 있다면, 엔터프라이즈에 적합하게 기능과 확장성이 강화된 Solr에 한번 쯤 관심을 보이면 의외의 수확을 거둘 수 있을 것이다.

Solr는 톰캣, Jetty와 같은 서블릿 컨테이너로 배포가 가능하므로, 프로그래밍 지식이 크게 필요하지 않다는 점에서 프로그래밍이 필요한 루씬과 결정적인 차이점을 보인다. 루씬이 엔진이라면, Solr는 자동차다. 검색 기능이 필요한 단독형 애플리케이션을 제작한다면 루씬이 적합하지만, 엔터프라이즈용 검색 기능을 서비스에 추가한다면 Solr가 정답이다. 루씬을 사용할지 Solr를 사용할지 고민하는 분들이라면 답을 정해드리겠다. 십중팔구 여러분이 원하는 해법은 Solr다.

자, 그렇다면 Solr는 루씬에 어떤 기능을 더 추가했을까? 간략하게 추가된 기능을 정리하면 다음과 같다(세부 기능이 궁금하다면 공식 Apache Solr 페이지를 방문하기 바란다).

  • XML/HTTP와 JSON API
  • 검색 결과 강조(highlight)
  • 패싯 검색과 필터링
  • 공간 지리 검색
  • 빠른 점진적인 갱신과 색인 복제
  • 캐시
  • ZooKeeper를 사용한 클러스터 구성(고가용성)
  • 복제
  • 분산 색인/샤딩
  • 모니터링 인터페이스와 AJAX 기반 웹 관리도구

'아파치 Solr 4 구축과 관리'에서는 위에서 소개한 기능에 대해 빠르고 쉽게 접근하는 지름길을 제시한다. 책에 대한 역자의 간략한 소개는 역자 소개를 살펴보시고(분량상 소개는 생략한다), 상세 목차는 목차를 살펴보시면(역시 분량상 정리는 생략한다) 이 책이 추구하는 방향을 알 수 있을 것이다. 아무쪼록 이 책이 Solr 4를 탐험하는 데 있어 도움이 되기를 바란다.

EOB

토요일, 4월 26, 2014

[독서광] 당신은 사업가입니까

계속해서 경제/경영 블로그답게, 오늘도 경영 관련 서적을 하나 소개하고자 한다. 오늘 소개할 책은 '창업 전 스스로에게 물어야할 질문들'이라는 부제가 붙은 '당신은 사업가입니까'라는 책이다. 일반적인 창업 관련 서적들의 특징을 요약하자면 '꿈과 희망'이다. 아주 잘 된 사례를 중심으로 나도 어떻게 하면 저렇게 멋지게 사업을 할 수 있을지에 대한 방법을 나열하므로 '뽐뿌질'을 하기 마련이다. 물론 중간 중간에 어려운 난관이나 역경도 소개하지만 어디까지나 멋진 결과를 얻기 위한 중간 단계에 지나지 않는다. 이런 유형의 책들이 서가에 차고 넘치는 이유는 창업을 마음먹은 사람에게 올바른 말을 해봐야 잔소리로 들릴테고 결국 사람들이 듣고 싶어하는 말만 나열해야 책이 잘 팔릴테니 상업적인 특성을 고려하지 않을 수 없기 때문이다.

그런데, 오늘 소개할 책은... 아마 읽고 나면 내가 정말 창업을 해아할지 말아야할지 심각한 고민에 빠지게 만들어준다는 점에서 기존 서적과 확실하게 스스로를 차별화한다. 창업하고 나서 멋진 사무실로 출근해 고급 커피 한 잔을 마시며 우아하게 비서가 건내주는 하루 일정표를 살펴보며 아침을 여는 따위의 소설은 이 책에 나와있지 않다. 그 대신 화장실 청소부터 시작해 비용을 줄이기 위해 고군분투하며 부모 속을 긁듯 사장님 속을 박박 긁은 직원들을 잘 다독이며 기존 또라이보다 100배는 더 또라이인 주변 이해 관계자들을 통제해나가며, 시어머니보다 더 무서운 고객을 상대하며, 복사 용지 한 묶음을 사더라도 현금 흐름을 생각하지 않을 수 없는 시궁창 같은 현실에 대해 속 시원하게 열거하고 있다. '오늘이라도 당장 회사를 때려치우고 창업을 해야겠다'라는 생각이 드는 분이라면, '멘붕'을 일으킬 정도로 아주 직설적인 표현도 많이 등장하므로 눈에 잘 띄는 곳에 놓아두고(물론 회사가 아니라 집이 안전할 것이다) 틈나는 대로 읽으면 많은 도움이 될 것이다.

이 책에서 가장 마음에 드는 부분은 바로 '창업가'로 나서기 전에 가장 먼저 던저야 하는 다음과 같은 질문이었다.

사업가의 리스크와 보상 사이의 역학 관계를 평가하는 동안 당신은 "내가 사업가가 될 수 있을까?"가 아닌, "내가 사업가가 되어야만할까?"라는 질문을 자신에게 던져야 한다. 베리 몰츠는 '바운스 에서 이렇게 말했다. "많은 사업가들이 부담하는 리스크는 매우 크다. 그들의 잠재적인 수익은 그토록 낮은 성공 확률을 감당할 만큼 크지 않다. 그들은 자신들의 열정에 눈이 멀어 있다."

내가 사업가의 자질이 있는지 없는지의 자질도 무척 중요하지만, 내가 정말 사업을 해야할지 말아야할지에 대한 고민이 더욱 중요하다. 솔직히 이런 근본적인 질문을 던지지 않고서 사업을 시작하면 100전 100패라고 보면 틀림이 없다. 물론 부모의 정보력과 재력을 등에 업거나 엄청난 운이 작용해 엄청난 성공을 거둘 수도 있지만, "나는 운이 좋은 편이고 지금 바보처럼 사업하는 남들과 확실히 달라" 정도의 헛된 희망 고문으로 시작하면 대재앙이 닥치기 마련이다.

본문에 나오는 좋은 이야기를 정리해보겠다.

어떤 사업의 기술적인 업무를 이해하는 것이 곧 그 사업을 이해하는 것이라는 생각은 오해다.
당신이 사업을 시작한다면 당신의 직업은 이제 '사업체를 경영하는 것'이 된다.
당신이 사업체를 소유하면 누군가의 직원일 때보다도 권한이 줄어든다.
사업을 시작한다면 적어도 수백 가지의 이유로 누군가로부터 뼈저린 거절을 경함하게 된다는 사실을 명심하라.
좋은 아이디어도 실패할 수 있고 나쁜 아이디어라 해서 성공할 수 없는 것은 아니다.
사업 아이디어 자체는 아무런 가치가 없으며, 사업 아이디어로부터 보상받으려는 생각은 부질없다.
사업을 하게 되면 좋아하는 일을 즐길 시간이 적어질 수밖에 없다.
만약 당신이 최고 수준의 급여를 약속하지 못한다면 최고 수준의 직원을 채용하기 어려울 것이고, 당신은 보통 수준의 지원자에 만족해야 한다.
직원들은 당신의 모든 것이라 할 수 있는 사업의 성공과 실패를 좌우하는 중요한 패를 가지고 있다.
시간은 돈보다 가치 있는 자원이다. 돈은 모을 수 있지만 우리가 쓸 수 있는 시간은 그저 사라질 뿐이다.
사업을 성공시키는 데 필요한 블록 조각을 얻으려면 먼저 '충분히 경험하라'. 너무 늙어서 배울 기력이 없다는 말은 절대로 하지 마라. 인생이라는 학교는 끊임없이 배우는 과정이다.
만일 아무런 인맥이 없다면 당신은 좀 더 많은 친구들(바라건대 부유하고 인맥이 좋으)을 사귀어야 한다. 당신이 현재의 직장을 그만두겠다고 결심하기 전에 말이다.
사업가가 된다는 것은 일찍이 본 적 없던 최고 난이도의 롤러코스터를 타는 것과 같다. 무엇보다 당신은 당신 돈을 들여 롤러코스터를 손수 만들거나 사야 할뿐더러, 그것을 만들면서도 직접 타기 전까지는 어떤 모양일지 알 수조차 없다.
사업이라는 롤러코스터는 세상에서 탑승 시간이 가장 길고 한 번 올라타면 중간에 빠져나올 수 없다는 말은 굳이 하지 않겠다.
당신이 좋은 상황을 즐기는 동안, 나쁜 상황은 악화되어 당신의 모든 것을 위험에 빠뜨릴 것처럼 보일 것이다.
실제로 사업은 행운에 좌우되는 경우가 많지만, 행운은 신속하게 의사결정을 내리고 직접 팔을 걷어붙이며 일에 전력을 기울일 때만 가능하다. 기적이나 비전 선언문, 그럴싸한 소망이나 바람만으로는 결코 사업을 성공시킬 수 없다.
사업 초기 단계에 있는 사업가들 거의 모두가 사업을 시작하고 운영하는 비용을 과소평가한다는 사실이다.
그들은 사업가들이 사업 개시 후 곧바로 매출을 일으킬 수 있다고 기대한다면 향후에 경악을 금치 못할 거라고 경고한다.
사업이라는 모험이 성공하려면 사업에 관한 재무적인 스토리를 이해하고 파악하는 것이 무엇보다 중요하다.
당신이 어느 정도 참신한 아이디어를 찾아내 사업을 시작했다면, 똑같거나 비슷한 아이디어를 가진 사람들이 이미 시장에 수십 명이나 존재할 가능성이 크다.
당신이 성공할수록, 당신이 더 많은 재능을 가지고 있을수록 사업운영은 더 어려워진다.
당신이 책임을 회피하거나 다른 이들을 자주 비난하는 사람이라면, 혹은 자청하여 모든 책임을 맡기보다 다른 사람들과 책임을 나눠 갖는 것을 더 편안해하는 사람이라면 사업가로 가는 길은 매우 힘들고 불편해질 것이다.
직원을 고용할 때 발생하는 또 다른 부담감은 감정적인 것인데, 당신이 직원에 대해 갖는 책임감이 바로 그것이다.
현금 흐름 관리는 사업운영 시 가장 까다로운 업무라서, 세계에서 가장 크고 가장 성공한 기업들조차 사업의 다른 측면은 잘 운영하면서도 이 부분을 관리하지 못해 발이 꼬여 넘어지는 경우가 있다.
사업 추진을 위해 잠재적 리스크와 보상을 평가할 시에는 반드시 최악의 시나리오를 포함한 모든 리스크를 빠짐없이 검토해야 한다.

결론: 이 책을 읽고 나면 (이 책 저자가 입버릇처럼 이야기하는 후렴구인) "지금 다니는 직장이 훨씬 좋아 보이지 않는가? 안 그런가?"에 대해 어떤 대답을 내릴지는 안 봐도 블루레이다. 창업을 생각한 사람들에게 조건없는 필독서로 추천한다!

토요일, 4월 19, 2014

[B급 프로그래머] 4월 3주 소식 정리

간단한 공지 하나: 혹시 다른 사람들과 나누고 싶은 개발 관련 소식이 있으면 트위터 @jrogue로 mention 부탁드린다.

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

수요일, 4월 16, 2014

[독서광] 확신의 덫

간만에 경영/경제 블로그다운 멋진 책 한 권을 독자 여러분께 소개하려 한다. 오늘 소개할 책은 지난번 소개드린 기업을 죽이고 살리는 리더 간의 갈등 관리와 유사한 주제를 다루지만 좀더 기업 현실에 초점을 맞춘 '확신의 덫'이다. 이 책이 다루는 주제는 리더 간의 갈등이 아니라 상사와 부하 직원 사이에서 벌어지는 갈등과 오해 상황이다. 물론 좀더 넓게 봐서 상사와 부하뿐만 아니라 선생님과 학생, 부부, 부모와 자식 사이에도 적용 가능한 내용으로 봐도 좋겠다.

이 책은 뛰어난 관리자와 상사들이 어떻게 부하 직원을 망치기 시작하고 그 결과가 어떤지 다양한 사례와 이론을 들어 설명하고 있다. 대다수 관리자들은 부지불식간에 (어떤 면에서는 선의로) 성과가 나쁜 부하 직원을 돕든다는 명목하게 통제에 들어가는 유혹에 쉽게 빠지는 데, 부하 직원은 자신이 열등하다고 낙인찍은 상사의 기대를 저버리지 않기 위해(응?) 성과를 떨어뜨리는 동시에 관리자의 불공정함과 쪼잔함에 대한 불평불만을 주변 사람들에게 퍼트리기 시작한다. 결국 이런 악순환이 거듭되면서 점차 강도가 높아지며 서로를 나쁜 놈으로 프레이밍한 결과 최종적으로 상사와 부하 직원 모두가 패배자가 되는 결과를 초래한다. 독자에 따라 다르겠지만, 이 책은 아주 지루하다는 느낌이 들 가능성도 있다. 이 책에서 엇비슷한 사례와 비슷한 내용이 반복되는 이유는 관리자들이 자신의 문제점을 깨닫게 만들기 위해 저자들이 거의 필사적으로 설득 작업에 나서기 때문이다. 모두가 패배자로 전락하는 문제는 관리자와 부하 직원이 손에 손을 잡고 함께 만들었지만, 문제를 시작하고 해결하는 열쇠는 관리자가 쥐고 있기 때문에 관리자 입장에서 문제를 인식하느냐 마느냐가 무엇보다 중요하다. 몰라서 생기는 문제가 아니라 안다고 착각하기 때문에 생기는 문제이기 때문에 세상을 바라보는 관점 자체를 바꿔야 한다. 이게 얼마나 어려운지는 더 이상 언급하지 않겠다.

자, 문제의 원인과 미치는 파장을 알았다고 치자. 현 상황을 파악했으면 해결에 나서야 한다. 이 책에서는 현재까지 연구된 다양한 심리학적인 연구 결과를 바탕으로 관리자와 직원 모두가 패배한다는 필패 신드롬에 빠지는 이유와 여기서 벗어나 건설적인 관계를 만드는 해법을 설명하고 있지만, 아니나다를까 책에서 제시하는 실천이라는 난제는 어렵고 험난하기만 하다는 생각이 든다. 책 가장 마지막 부분에 배움을 잃어버린 사람들에게 강력하게 경고하는 다음과 같은 가슴 뜨끔한 경구가 나온다.

반드시 배워야할 필요는 없지만, 반드시 살아야 할 필요도 없다. - 품질 전문가 애드워드 데밍

수 많은 관리자들이 테니스/골프를 비롯한 육체적인 운동에 엄청난 시간을 쏟고 인맥 쌓기와 정보 수집에 엄청난 시간과 노력과 정열을 투자하는 반면, 자신의 부하 직원들과 소통하며 상승작용을 높이기 위해 어떤 노력(아니면 어떤 반대 노력)을 했는지 되돌아보면 거의 절망적인 생각이 들지도 모르겠다. 자기 합리화를 위해 '게으르고, 느리고, 능력이 부족하고, 건방지고, 자기 통제가 안 되는' 직원 탓만 늘어놓고 있다면 해당 관리자나 상사는 '필패 신드롬 상'을 받을 후보로 손색이 없다.

결론: 2014년 상반기 #1 추천 도서로 평가한다. 당신이 또라이 상사 아래에 있다면 이 책을 2번 읽어라. 당신이 부하 직원들에게 지극히 공정하고 합리적인 관리자나 상사라고 생각 착각한다면 이 책을 10번 읽어라.

EOB

토요일, 4월 05, 2014

[B급 프로그래머] 4월 1주 소식 정리

이번 주는 아주 푸짐한 소식으로 여러분들을 찾아 뵐 수 있어 만족스럽다. :)

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

금요일, 4월 04, 2014

[독서광] 만화와 함께 하는 즐거운 통계학

간만에 수학책 하나 소개하겠다. 그런데, 일반적인 수학책은 아니고 _만화_로 표현한 _통계학_ 책이다. 만화와 통계학이라는 서로 어울리지 않는 단어가 어떻게 하나로 합쳐지는지 참으로 궁금한 독자를 위해 일단 본문 중 내용을 에이콘 출판사 책 소개 페이지에서 가져와봤다.

따분한(통계 시간에 졸다가 'C'를 받은 기억이 아직도 생생하다. T_T) 통계 관련 내용을 알기 쉽게 풀어 설명하기 위해 만화 형식을 빌었는데, 중간 중간 나오는 위트가 보통이 아니다. 수식만 나오면 '아아악' 비명을 지르며 도망가는 장면은 이 책의 전매 특허로 자리잡아도 될 것 같다. 물론 기분 좋게 읽고 나서 아무 것도 남지 않는다면 허무하기에 부록 '수학 동굴'에서 수학적인 관점으로 본문에 나왔던 용어와 설명을 수식을 사용해 정리하고 있으므로, 본문 중간 중간이나 책을 한번 다 읽고 나서 이론적으로 이해하는 작업을 도와준다.

이 책은 모집단을 모두 알 수 없는 상태에서 표본을 수집하고 해석하기 위한 기초를 쌓는 '통계치 모으기'와, 정규분포와 중심 극한 정리를 시작으로 통계치를 바탕으로 추론하고 신뢰구간을 계산하며, 가설을 검증하는 '모수를 찾아서'라는 두 부분으로 나눠진다. 따분한 공식이나 정리로 이뤄진 일반적인 통계학 교과서와는 달리, 우리가 무엇을 하고 싶은데 어떻게 해야할지를 단계별로 나눠 이해하기 쉬운 예를 들어 설명하므로 일단 이 책을 읽고 나면 일상 생활에서 흔히 접하는 기초적인 통계 용어가 나오더라도 뒤에 숨은 뜻이 무엇인지 파악할 수 있을 것이다(직설적으로 말하자면, 통계의 장난에 덜 속게 된다!).

이 책에서 가장 마음에 들었던 부분은 통계의 본질적인 숙명에 대해 명확하게 설명하는 다음 내용이다.

통계가 목표로 하는 것은 확실성이 아니라 확률이다.

위에서 정리한 문구 하나만 기억하더라도 세상의 많은 오해가 풀리리라 생각한다.

결론: 통계를 처음 접하는 분들이나 기초적인 내용은 알지만 한걸음 더 나가고 싶은 분들께 강력 추천한다. 호기심으로 책을 잡는 순간 내려 놓기가 곤란한 자신을 발견할 것이다. :)

EOB

토요일, 3월 29, 2014

[독서광] 레너드 번스타인의 음악의 즐거움

오늘은 정말 간만에 문화를 다루는 책(출판사에서 선물을 받았다는 사실을 미리 언급한다) 하나를 소개해드리겠다. 음악 애호가라면 레너드 번스타인이라는 이름을 한번쯤 들어봤을텐데, 바로 여러분이 알고 있는 그 번스타인이 지은 책이다. 물론 번스타인의 정치적 성향과 사생활을 고려할 때 한국에서 당연히 금서(응?)가 될 가능성이 높지만 내용 자체가 워낙 훌륭하기에 (특히) 클래식 애호가들이라면 꼭 한 번 읽고 넘어갈 필독서라는 생각이 든다. 물론 '클래식'이라는 단어만 봐도 몰려오는 졸음을 느끼는 분들일지라도 이 책을 읽으면 여러 차례 화들짝 놀랄 정도로 재미있고 이해하기 쉽게 쓰여져 있으므로 음악에 대한 수준과 지식은 문제가 되지 않는다. 이 책 초판이 1959년에 나왔음에도 불구하고 여전히 증쇄를 거듭하고 있으며 심지어 번역서까지 나온 것을 보면 고전의 반열에 올라섰다는 느낌이다. 실제로 다루는 내용이나 전개와 표현 방식이 1950년대 쓰여진 책이라고 도저히 믿기지 않을 정도로 전혀 촌스럽거나 어색하지 않다.

이 책은 크게 두 부분으로 나뉘어지는데, 1부는 '상상의 대화'라는 제목으로 번스타인과 상상의 인물 사이에 주고 받는 편지 형식으로 번스타인이 평상시 생각하던 음악에 대한 이야기 보따리를 풀어놓는다. 2부는 CBS에서 포드 재단의 후원으로 시작한 예술 프로그램인 옴니버스 방송 대본(총 7개)을 그대로 가져왔다. "'악보'를 읽을 수 있으면 얼마나 좋을까?"라는 고민을 평상시 해본 적이 없는데, 이 책을 읽으면서 많이 후회를 하고 말았다. 악보라는 이해하지 못하는 언어의 장벽 앞에서 무릎을 꿇고 텍스트만 읽어야 했으니까 말이다. 혹시 악보를 이해하는 분들이라면 감동이 배가 되리라 확신한다. 뭐 그렇다고 바로 포기하지 마시고, 유튜브에 올라온 방송 내용 발췌본을 보고 들으며 당시 분위기를 느껴보시기 바란다.

베토벤 운명 교향곡

재즈의 세계

지휘의 기술

미국의 뮤지컬 코메디

현대 음악으로의 초대

요한 제비스티안 바흐의 음악

그랜드 오페라의 찬란함

짧은 비디오 클립만 봐도 알겠지만, 뛰어난 지휘자이자 작곡자이자 연주가(피아노)인 번스타인이 각 주제에 대해 아주 적절하게 기존 사례와 이를 뒷받침하는 역사/이론과 _연주_와 자기 경험을 녹여 놓는 기술은 실로 경이롭기까지 하다. 여기에 열정까지 느껴지니 할 말 다한 셈이다.

본문 중 흥미로웠던 부분을 정리해보겠다.

모든 작곡가는 두 가지 면에서 고뇌합니다. 하나는 주제를 이루는 적확한 음들을 찾아내는 것입니다. 다른 하나는 주제를 이어받아 하나의 '교향곡'의 주제로 세울 수 있는 적확한 음들을 찾아내는 것이지요.
운명 2악장의 서두를 위해 베토벤이 공책에 써 둔 선율이 최소 열네 가지 버전에 이른다는 사실이 베토벤의 고뇌를 잘 말해줍니다.
오늘날 운명을 듣는 많은 이들이 이렇게 생각합니다. 이 작품은 처음부터 명료하고 적확하게 베토벤에게서 쏟아져 나와 단방에 완성되었을 게 분명하다고요. 천만에요. 베토벤은 아래 수고와 비슷한 악보를 몇 장이고 썼다 버렸습니다. 그 양이 책 한 권에 달할 정도입니다.
재즈에서는 연주자가 곧 작곡자이고 창작자의 지위, 고로 더 위엄있는 지위를 차지함을 의미합니다.
즉흥 연주, 이것이 모든 재즈 음악의 진면모입니다.
지휘자의 악기는 100명의 '인간'입니다. 자기 의지를 가진 전문 연주자 100명으로 마치 하나의 의지로 하나의 악기를 연주하듯 음악을 만들어 내야 합니다.
템포는 지휘자마다 다릅니다. 같은 작품을 지휘자 여섯 명의 연주로 들어 보면 서로 다른 여섯 가지의 템포를 확인할 수 있습니다.
지휘자는 악보를 눈으로 보는 동시에 머리속으로 듣습니다.
바흐는 가로 낱말과 세로 낱말이 서로 맞물리면서 모든 것이 그 자리에 있음으로써 맞아떨어지는 퍼즐, 즉 '음표'로 이뤄진 최고의 가로세로 퍼즐을 고안한 것입니다.
바흐에게 음표는 단순히 음향이 아니라 작품 그 자체였습니다. 바흐는 음표를 이용해 십자가를 형상화하거나 예수의 손짓을 묘사하거나 천상으로 올라가는 영혼의 움직임을 나타나는 데 기쁨을 느끼는 사람이었습니다.

결론: 클래식 음악에 대해 뭔가 기초를 제대로 알고 싶다면 이 책을 꼭 읽어보기 바란다. 강력 추천!

EOB

토요일, 3월 22, 2014

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

3월 2주 소식을 정리해봤다. 이번 주는 소식이 조금 적다.

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

좋은 소식을 물고 4월 초에 다시 뵙겠다.

EOB

토요일, 3월 15, 2014

[독서광] The Performance of Open Source Applications

오랫동안 '독서광'을 기다려주신 독자 여러분들께 기쁜 소식 하나 전하겠다. 이번 주부터 격주로 '독서광' 섹션을 다시 열어 독자 여러분들께 좋은 책을 소개하려 계획 중이다. 오늘은 복귀 기념으로 지난 번에 올려드린 The Architecture of Open Source Applications Volume II의 후속 작품인 The Performance of Open Source Applications를 소개드리겠다.

이 책이 나오게 된 배경은 서문에 나오는 다음 한 문장으로 충분히 설명이 가능하다 본다

However, while hundreds of textbooks explain the basics of operating systems, networks, computer graphics, and databases, few (if any) explain how to find and fix things in real applications that are simply too damn slow.

그렇다. 수 많은 책이 운영체제, 네트워크, 컴퓨터 그래픽, 데이터베이스에 대한 기초 지식을 설명했지만, 실제 애플리케이션이 빌어먹을 정도로 너무 느릴 경우 문제를 찾아 수정하는 방법은 설명하지 않았다. T_T

제목을 보면 알겠지만, 이 (전자)책은 오픈소스 소프트웨어의 성능 부분을 집중적으로 파고든다. 처음 목차를 보고서 직전 AOSA 볼륨 I/II에 비해 꼭지도 줄어들고 슬쩍 넘겨보니 페이지도 얼마 되지 않았기에 큰 기대를 하지 않았는데, 하나씩 읽으면서 개발자들의 숨은 고민과 해법이 많이 나와 은근한 재미를 느꼈다. 본문 중 특히 마음에 들었던 내용은 가장 먼저 나오는 'High Performance Networking in Chrome"으로 구글 크롬이 왜 그렇게 다른 브라우저에 비해 엄청나게 빠른지 숨겨진 비밀을 속 시원하게 설명하고 있다. 이 글을 읽고 나서 크롬 창에서 URL을 입력할 때마다 내부 동작이 자꾸 떠오르는 부작용이 생겼지만 덕분에 웹브라우저에 대한 이해도가 아주 조금 올라간 느낌이다.

이 책은 네트워크, 메모리, 실행 속력, 동기화 등 여러 측면에서 성능을 고민한다. 프로그래밍 언어도 C/C++, 자바, 자바스크립트, Erlang, Haskell 등을 다루고 있으므로, 각 언어별 최적화 관련 특성을 비교하며 읽을 수 있다. 애플리케이션 분야도 웹 브라우저, 웹 서버, 빌드 시스템, XML 파서, 테스트 프레임워크, 분산 프레임워크 등 다양한 부문을 망라하므로 자신의 주요 분야가 아닌 다른 분야에서 성능 개선을 위해 어떤 노력을 했고 어떤 성과를 거뒀는지 엿볼 수 있다. 기존 성능 관련 책이 알고리즘이나 프로그래밍 최적화 쪽에 초점을 맞췄다면, 이 책은 실제 오픈소스 아키텍처 설계와 구현 과정에서 성능을 높이기 위한 실무적인 접근 방법을 소개하고 있으므로 상당히 현실적이다. 오픈소스 소프트웨어 설계자와 개발자들의 고충과 고민, 그리고 시행착오를 엿볼 수 있기에 더욱 공감이 갈 것이다.

결론: 성능과 관련해 고민이 많은 개발자라면 이 책을 꼭 읽어보기 바란다. 강력 추천!

EOB

토요일, 3월 08, 2014

[B급 프로그래머] 3월 1주 소식 정리

드디어 봄이 온 듯이 보인다. 봄맞이 새소식 정리~

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

3주에 다시 찾아뵙기로 하며, 오늘은 여기까지.

EOB

토요일, 3월 01, 2014

[B급 프로그래머] 아주 뛰어난 프로그래머 사이에서 평균적인 프로그래머로 사는 느낌이 어떤가요?

Quora에 다음과 같은 질문이 올라왔다.

Computer Programmers: What does it feel like to be an average programmer among very talented ones?

한글로 번역하자면, "컴퓨터 프로그래머분들께: 아주 뛰어난 프로그래머 사이에서 평균적인 프로그래머로 사는 느낌이 어떤가요?"

여기에 대해 아주 좋은 대답이 올라와 간략하게 소개드리지 않을 수 없다.

Read Quote of Mattias Petter Johansson's answer to Computer Programmers: What does it feel like to be an average programmer among very talented ones? on Quora

음악이든 프로그래밍이든 주변에 뛰어난 사람이 있어야 성장할 수 있다는 말이다. 최고가 되는 순간부터 쇠락을 맞이한 사람이 어디 한둘인가? 자기가 주변 사람들에 비해 바보같다 느끼지 못하면 그렇게 느껴지는 다른 (더 좋은) 곳으로 옮겨가야 성장의 토대를 마련할 수 있게 된다. 물론 "소 꼬리보다 닭 머리가 좋습니다"라는 속담처럼 반대 의견도 있으므로 어디까지나 선택은 개인의 몫이겠지만 말이다.

보충: 본문 중 댓글에 따르면 Pat MethenyBe The Worst라 인터뷰에서 말한 내용이 원본인 듯이 보이며, 참고 자료로 The Passionate Programmer: Tip 4 Be the Worst를 추천해준다. 재미있게 읽어보시기 바란다. :)

EOB

토요일, 2월 22, 2014

[B급 프로그래머] 2월 3주 소식 정리

2월 1주 소식이 엄청난 인기를 끌었기에 기운내어 3주 소식을 정리해보았다.

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

따뜻한 3월에 다시 독자 여러분들을 찾아 뵙겠다.

EOB

토요일, 2월 15, 2014

[B급 프로그래머] 루비의 해시 기본값은?

한 동안 NULL 관련 글을 올리지 않았더니 손가락이 근질거려 도저히 못 참겠다. 그래서 오늘은 알면 별거 아니지만 모르면 멘붕이 오는 내용을 하나 소개하겠다. 먼저 다음 루비 코드를 보자.

    def initialize(server_info)
      server_default_info = {}
      server_default_info['id'] = 'root'
      server_default_info['name'] = 'root user'
      server_default_info.each() { |k, v| server_info[k] ||= v }
      @server_info = server_info
    end

위 코드가 무슨 일을 하려 드는지 독자 여러분들은 이미 알고 있을 것이다. server_info에서 넘어오는 정보에 id와 name이 없을 경우 기본값으로 채우는 간단한 작업을 한다. 뭐 더 좋은 방법도 있겠지만, 설명을 위해 단순화한 예제이므로 코드 품질에 대해서는 민원을 넣지 않기 바란다.

자, 그렇다면 5분을 줄테니 위 코드에서 문제점을 하나 찾아보자.






문제점을 발견했는가? 힌트가 필요한 독자라면 Ruby Hash Awesomeness – Part 1을 읽어보고 다시 한번 위 코드를 뚫어지게 쳐다보자.

답은 바로 다음 행이다. 어떤 경우에는 정상적으로 동작하지만 어떤 경우에는 || 메소드가 없다고 죽어버린다. 위 힌트를 읽어보면 알겠지만, 이 문제는 해시를 만들 때, 키-값을 초기화하는 방법이 두 가지기 때문이다. 하나는 특정 키에 대해 아예 값이 없는 경우({} 사용)고 다른 하나는 특정 키에 대해 빈 값이 있는 경우(new 사용)다(독자 여러분들은 다시 한번 NULL의 악몽이 떠오를 것이다).

      server_default_info.each() { |k, v| server_info[k] ||= v }

명시적으로 Hash를 만들 수 있다면 아무 문제도 없겠지만, 만일 상위 수준의 라이브러리에서 Hash를 임의로 만들 경우라면 이야기는 180도 달라진다. 구체적으로 예를 들어볼까? 루비의 YAML과 JSON 라이브러리를 사용해 파싱 결과로 Hash를 얻을 경우 Hash 생성을 위해 YAML은 new를 사용하지만 JSON은 {}를 사용한다는 사실을 알면 갑자기 등골이 오싹해질테다.

자, 이제 결론을 내릴 때가 왔다. 위 코드가 안 죽게 만들려면 어떻게 해야 할까? server_info[k]가 {} 인지 확인하는 루틴을 넣어, 참이면 그냥 값을 바로 대입하게 만들면 된다. 힌트를 아주 충분히 줬으므로 정상 동작하는 코드 수정은 독자 여러분에게 맡기겠다.

EOB

토요일, 2월 08, 2014

[B급 프로그래머] 2월 1주 소식 정리

입춘도 지나 슬슬 봄기운이 느껴지는 시점이다. 오늘도 프로그래머를 위한 각종 소식을 정리해보았다.

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

토요일, 1월 25, 2014

[일상다반사] 글로벌 페이를 사용해 페이팔로 송금하기

요즘 해외 직접 구매가 유행하면서 페이팔이라는 서비스의 인지도가 급상승했다는 생각이 들었다. 그런데, 구매뿐만 아니라 복잡한 해외 송금도 페이팔을 사용해 처리할 수 있다. 심지어 하나은행과 거래하는 국내 거주자라면 페이팔에 가입하지 않은 상태에서도 페이팔 송금이 가능하므로 팁을 정리해봤다.

이미 사용하고 계신 분들도 있으시겠지만, 하나은행에서 제공하는 글로벌 페이를 사용하면 정말 손쉽게 송금이 가능하다. 여러분이 필요한 정보는 송금 상대국(주의: 받는 분이 페이팔 계정을 열 때 지정한 국가로, 현재 글로벌 페이로는 '한국'으로 보내지 못한다)과 받는 분의 페이팔 ID만 있으면 된다. 기존 해외 송금 과정에서 요구하는 엄청나게 복잡한 정보와 비교하면 얼마나 간편한지 짐작이 가시리라. 게다가 실시간으로 전송되므로 송금 과정에서 은행 사이의 처리가 끝나기를 기다려야 하는 불편함도 없다(물론 페이팔에서 이렇게 송금받은(아니 충전된) 돈으로 바로 물건을 구매하는 대신 페이팔 계정에 연결된 은행 계좌로 돈을 옮길 경우에는 며칠 걸리기는 한다).

송금 화면을 보면 알겠지만 (심지어) 국내 송금 화면보다도 훨씬 직관적이고 단순하다.

하지만 몇 가지 주의 사항이 있다. 앞서 언급했지만, 받는 분의 페이팔 국가가 '한국'이면 안 되며, 한번 송금 시 1000불 이하만 가능(1월 1일부터 12월 31일까지 누적 1만불 이하)하며, 이메일 주소가 틀릴 경우... 다시 돌려받기가 아주 곤란해진다. 뭐 이 정도 문제는 송금의 편의성, 저렴한 수수료, 환율 우대와 같은 강력한 장점 앞에서 충분히 참을만하다는 생각이 든다. 앞으로 소액 송금(심지어 자기 자신에게 해외 송금할 경우에도 국내 거주자로 하나은행 일반 요구불 계좌를 열고 외국 페이팔 계정을 열어 자기 외국 거래 은행을 연결(참고로 은행을 연결해 놓지 않은 페이팔 계정으로는 글로벌 페이를 사용한 송금이 불가능하다는 사실도 알고 있으면 좋겠다)하면 된다)이 필요한 경우에는 글로벌페이 서비스를 추천해드린다.

그리고 페이팔로 받는 분께 이메일이 전달되는데... 위쪽 페이팔 로고 반대편에 하나은행 로고, 아래쪽에 Hana GlobalPay라는 배너가 붙는다. 국제적인(!) 마케팅 효과가 아주 좋을 듯.

EOB

토요일, 1월 18, 2014

[B급 프로그래머] 1월 3주 소식 정리

2014년 첫 소식을 정리하겠다. 연초라 기술적인 이야기거리가 적어서 출발에 의의를 두겠다. :)

  1. 웹 개발
  2. 개발/관리 도구
    • FactFinder Express: Figure out which component is causing slow performance. Using one monitoring tool. 어디서 문제가 생겼을까? 종합적으로 분석한다는 발상이 재미있음.
    • Logentries: 로그 수집 전용 서비스. (크게 기대는 안 하지만...) 성능만 받쳐주면 아주 좋을 듯.
  3. 고성능 서버/데이터베이스
  4. 기타 읽을 거리
EOB

토요일, 1월 11, 2014

[일상다반사] 모든 분야에서 다 잘하려는 생각은 접어라

어쩌다보니 이번 주도 Quora에 올라온 글을 하나 소개해야겠다. 오늘은 What is the most useful thing you know that most people do wrong?이라는 질문에 붙은 대답 중 하나를 정리한다.

본론으로 들어가기 전에 잠시 예전에 올려드렸던 [독서광] 디퍼런트를 읽어보자. 거의 도입부에 "자신의 단점을 극복하려 노력하지 말고 장점을 극대화하려고 노력하라"는 내용이 나오는데, 오늘도 이와 관련이 깊은 내용이다. 다시 질문으로 돌아가 Sandra Naylor(Author and Entrepreneur)가 올려준 답변을 읽어보면 "모든 분야에서 다 잘하려는 생각은 접어라"는 충고로 시작한다. (요즘와서 특히 더 그렇지만) 우리는 학창 시절부터 거의 모든 분야에서 높은 성적을 올리게 교육받아 왔고 심지어 사교, 운동, 봉사 분야에서도 마당발이 되어야 한다는 압박을 받아 왔다. 이러다보니 스펙형 인간 그 자체가 목표가 되어버리는 아이러니가 생기고 말았다. 이러다보니 진짜 자신(as-is)이 아닌 자기가 그렇게 되어야 한다고 믿는 자신(to-be)의 삶을 사는 것이 유행처럼 번지고 있다. 소위 잘나가는 자기타인 계발서에서 너는 잘 될거야, 너는 잘 할 수 있어, 그런데 안 되면 그건 순전히 너 탓이야를 반복해서 세뇌하고 있기에 거품이 더 커졌을지도 모르겠다. 물론 위대하고 원대하고 멋진 일을 하려면 꿈과 포부가 커야 한다는 사실을 부인하고 싶지는 않지만, 그렇다고 해서 가식적인 삶을 사는 것이 정답인지는 잘 모르겠다.

그러면 어떻게 해야하나? Naylor는 사람들이 잊어먹고 있는 두 가지 중요한 사실을 지적한다. 1) 모든 단점은 장점의 반대면이다. 물론 엄청난 단점을 장점이라 우기고 아무 생각없이 산다면 정말 답이 없긴 하지만 관점을 바꿔 단점을 어떻게 장점화할 수 있는지에 초점을 맞추다 보면 의외로 좋은 결과를 얻을 수 있다. 2) 사람마다 모두 성공의 기준이 다르다. 이는 정말로 천만 다행인 소식인데, 자신에게 정말로 중요한 사항만 골라내(남의 기준이 아니라 자신의 기준!) 우선 순위에 따라 핵심에 집중하고 나머지는 전략적으로 버리는 방법을 택함으로써 안 그래도 부족한 시간을 확보할 수 있기 때문이다.

본문 중에서 가장 마음에 와 닿았던 부분을 소개하며 마치겠다. 주인장 마음대로 내린 결론: 자신의 단점만 보려 들면 실제로 단점만 보인다.

Read Quote of Sandra Naylor's answer to Life Lessons: What is the most useful thing you know that most people do wrong? on Quora EOB

토요일, 1월 04, 2014

[일상다반사] 개인적인 성장을 가속화 하려면?

Quora에 Self-Improvement: How can I accelerate my personal growth?라는 아주 좋은 글이 올라와 독자 여러분들께 소개하지 않을 수 없다. 그 중에 가장 인기 있는 답변인 'Get In Over Your Head. Work To Get Your Head Above Water. And Do It Over And Over Again.'를 중심으로 정리해보겠다.

답변의 요지는 불안/염려와 따분함 사이의 균형이다. Csikszentmihalyi에 따르면 도전이 우리의 기량을 능가할 때 불안감을 느끼게 되며, 우리의 기량이 도전을 능가할 때 따분함을 느끼게 된다. 여기서 기량과 도전이 거의 근접하는 지점이 생기는데, 여기가 바로 불안도 따분함도 없는 flow channel(몰입 채널)이다. 위에 제시한 그림에 나와 있는 A1, A2, A3, A4를 보자. A4는 A1보다 더 좋은 위치다. 기량도 높고 도전도 높으니까. 그렇다면 A1에서 A4로 가는 방법을 고안하면 될 것이다. 독자 여러분들께서 이미 짐작하시듯 두 가지 방안이 있다.

  • 1안: 처음에 A1에서 A2로 움직인 다음 A4에 도달한다. 큰 도전 없이 새로운 기량을 계발한 다음 이런 새로운 기량에 자신감을 느끼면서 따분함이 동반될 때 더 큰 도전을 시도하는 방법이다. 수학 공부를 할 때, 쉬운 문제를 여러 개 풀어 자신감을 획득한 다음 따분해질 무렵 어려운 문제를 푸는 전략이다.
  • 2안: 처음에 A1에서 A3로 움직인 다음 A4에 도달한다. 도전에 걸맞는 기량 없이 일단 뛰어든 다음 발생하는 불안감을 사용해 도전에 맞는 기량을 쌓아올린다. 수학 공부를 할 때, 일단 가장 어려운 문제로 바로 뛰어든 다음 이런 문제를 해결하기 위한 기량을 쌓아나가는 전략이다.

조금더 현실적인 예를 들어보자. 어떤 기술에 대한 책이 있다 가정해보자. 1안은 이 책을 모두 다 독파한 다음 지식을 실제 현장에 적용하는 방식에 가깝다. 2안은 실제 현장에 뛰어든 다음 필요한 지식을 선별적으로 책에서 찾아내 읽는 방식에 가깝다. 하지만 맹목적으로 한 쪽만 따라가면 안 된다. 가장 좋은 효과를 보려면 어떻게 해야 하느냐 하면... 책을 가장 중요한 1/3 정도만 읽고(이렇게 하면 수위가 조금 낮아지는 효과가 있다) 실제 현장에 몸을 담근 다음 숨 쉴 공간이 충분한지 아닌지 확인하고 나서 다시 필요한 부분을 선택해 읽어나가야 한다. 이를 반복하다 보면 어느 순간 늘어난 기량을 확인할 수 있을 것이다.

요주의 사항: 개인의 천부적인 소질과 환경에 따라 최종 지점으로 가기 위해 거쳐야 하는 중간 단계와 투입되는 시간이 사람마다 다를 가능성이 아아주우 높다. 따라서 자신의 실제 능력에 대해 충분히 알고 깊이가 적당한 물에 퐁당 뛰어들어야 하는데(안 그러면 죽을 수도 있다), 시도해보기 전에는 절대 모른다는 함정이 도사리고 있다. 따라서 허둥지둥 기량 무리하게 모든 것을 한 번에 다 걸지 말고 때로는 완급을 조절할 필요도 있겠다.

공지 사항: 그런 의미에서 B급 프로그래머도 읽은 책을 토대로 기량을 높이기 위해 잠수(!)탈 계획이다. 2014년 1/4분기에 책을 0권 읽기라는 목표를 세웠으므로 당분간 [독서광] 섹션은 문을 닫는다. 1/4분기에는 서평이나 개인적인 이야기는 완전히 배제하고 기술(특히 프로그래밍)적인 부분 중에서도 스스로 꼭 기억해야 할 내용만 1~2주일에 한번 꼴로 블로그에 요약 정리할 예정이므로 갑자기 프로그래밍 관련 내용만 열거하는 모양새에 놀라지 마시길...

EOB

목요일, 1월 02, 2014

[일상다반사] 클린 코드 이벤트 사연...

지난번 [일상다반사] 클린 코드 복간 기념 이벤트 결과, 무려 세 분께서 응모해주셨다.

첫 사연은 이정*님께서 보내주셨고, 눈물 없이는 ... 도저히 못 읽는다.

----------------------------------------------
같은 책(구판)을 3회나 구매한 경험이 있어서
제 사연은 억울 쪽인듯 합니다. 


1) 첫번째 구매, (+1)
처음 책이 나오고 얼마되지 않아, 
주변의 여러분들이 좋은 책이니 읽어보고 세미나를 하자는 말에
함께 구매했습니다. 그러나 개인적이고 집단적인 문제로 스케줄 정리가 안되어 
책도 못보고, 세미나는 무산되어 채 읽지도 못한채 책장에 잠들도록 두었습니다.

2) 두번째 구매, (+1)
이후 다른 팀에서 세미나를 한다는 말에 교재를 확인하지 못하고,
단체로 구매, 책장에 잠들어 있던 책과 동일한 책이라는 것을 
나중에 책을 받고서야 확인하게 되었습니다. 
이번에도 업무로 인해 파견, 세미나 참석 못하고, 
다시 책은 고이 책장에 잠들었습니다. 

3) 첫번째 나눔, (-1)
두 권있는 책을 모두 볼 수 없어서, 
한 권을 중고책으로 판매, 중고책이고 공부를 위한 도서라서 저렴하게 판매했습니다.
잠들어 있는 것 보다는 누구라도 책을 보는 것이 좋을 것 같다는 
공유의 정신(?) 을 실천했다는 만족감이 있었습니다.

4) 세번째 구매, (+1)
올해 여름, 다시 이 책으로 세미나를 하자는 사람들의 말에, 
책이 있다고 든든해 했던 것도 잠시
책장에 모셔두었던 책에 빗물이 스며들어, 
이 책을 포함 여러권의 책이 망가지는 상황이 발생,
다시 책을 구매하려고 노력했으나, 절판사태 발생
중고서점을 여러날 여러곳 확인해서,
29,000 원짜리 책을 삼만원 넘게 주고 구매,
(저렴하게 판매한 도서가 생각나서 아쉬웠습니다.)
그런데 세미나는 다시 연기 및 무산 


개정판 출간 소식 확인 (12월초)
정가보다 비싸게 구매해서 아까운 마음도 들어 읽기는 했지만, 
매년 다른 사람들과 함께 원했던 세미나는 제대로 되지 않고,
세미나 시도만 했던, 애증의 도서입니다. 

현재는 제 책상옆에 놔두고 가끔씩 열어 보기도 합니다. 
다른 분들의 사연도 궁금한데요 
어쨌든 내년에는 
이 책의 개정판으로 마음이 맞는 여러 분들과 
세미나를 한 번 열었으면 합니다.
----------------------------------------------

다음 사연은 김*문님께서 보내주셨고, 역시 안타까운(?) 사연이다.

----------------------------------------------
클린코드 복간 버전 소식 듣고 이벤트 응모해봅니다.

자기 계발에 돈 쓰는걸 아끼지 말라.
특히 책사는건 아끼지마라라고 후배들에게 늘 얘기했습니다.
저 자신도 책 사는데 인색한 편은 아니였죠.

그런데 최근 후배들에게 도리어 되물음 당하고 있습니다.
'자기 계발에 돈 아끼지 말라며요?'

그들이 알까요? 돈을 제 뜻대로 쓰다 와이프에게  용돈 받으며 살아야함의 슬픔을.

로버트 마틴 형님 저도 참 좋아하는데요.
구판 소장하고 있고요. 근데 쥐꼬리만한 용돈 갖고 복간본 소식 들으니 소장하고 싶은데 부담이되니.. 이 안타까움 금할길 없습니다.
----------------------------------------------

마지막은 신재*님께서 보내주셨고... 인증샷이 모든 것을 설명한다. T_T

세 분 모두에게 클린 코드 복간판을 보내드리며, 이정*님께는 특별히 클린 코드 복간판 이외에 지난번에 나온 '해커스' 또는 이번에 새로 나올 '피플웨어' 중 원하시는 책 한 권을 보너스로 선물드리겠다. :) 당첨되신 분들께서는 저에게 책 받으실 주소와 전화번호(이번에는 분실(!) 위험이 없게 모두 등기 또는 택배로 보내드린다!)를 알려주세요~

EOB

토요일, 12월 28, 2013

[일상다반사] 기술과 환경

몇 년 전, 지하철을 타고 가다 급한 프로그램 수정 요청을 받아 자리에서 노트북을 꺼내 작업을 한 적이 있었다. 프로그램에 몰입한 상태라 몰랐는데, 10분 정도 지난 다음 정신을 차리고 보니 옆에 중년 신사 한 분이 뚫어지게 내가 하는 작업을 지켜보고 있었다. 그리고 어색하게 말을 거셨다.

실례지만 혹시 무슨 일을 하십니까? 지금까지 제가 본 누구보다 _타이핑_을 빨리합니다.

프로그램을 작성하다보면 정해진 키워드, 변수, 함수, 라이브러리는 거의 한 단위로 입력 가능하므로 옆에서 보기에 엄청난(음... 열악한 노트북 키보드로 500타 이상이 나오지 않을까 싶다) 타이핑 장관이 펼쳐지는 것도 당연하지만... 프로그램 작성 = 타이핑이라는 참신한 시각에 무척 놀랐던 기억이 아직도 새롭다. 하긴 어르신들 세대에 프로그래밍은 지극히 이국적인 행위였을테니 둘 사이 구분을 하지 못하는 현상을 충분히 이해한다.

갑자기 이런 이야기를 꺼내게 된 이유는 요즘 한창 마무리 작업 중인 '피플웨어'에 기술과 환경에 대한 이야기가 나왔기 때문이다. 다음 문구를 읽고나서 거의 기절초풍했다.

디즈니 특별 연구원 앨런 케이는 기술을 '지금 있는데 옛날에 없던 것'으로 정의합니다. 케이는 한 걸음 더 나가 옛날에 있던 것은 이름이 있다고 말합니다. 바로 환경입니다. 우리 세대의 기술은 다음 세대의 환경입니다.

그런데, 이와 관련해 고백을 하나 해야겠다. 컴퓨터를 처음 접한지 수십년이 지났지만 여전히 스마트폰과 태블릿을 사용하면서 뭔가 부자연스럽다는 생각이 머리를 떠나지 않는다. 어렴풋이 이유를 알고 있었지만 피플웨어에 나온 문구를 읽어보는 순간 깨달음이 오고 말았다. 바로 스마트폰과 태블릿을 자연스런 환경이 아니라 인위적인 기술로 보기 때문이다. 요즘 젊은 친구들이 스마트폰을 사용하는 모습을 볼 때마다 스마트폰을 마치 몸의 일부처럼 활용한다는 부러움이 들었는데, 중년 신사분이 내게 느낀 감정 그대로다. 나와 달리 젊은 친구들은 환경 그 자체로 받아들이고 있음이 틀림없다.

최근 초등학교부터 프로그램을 가르치자, 10만 프로그래머를 양성하자, 빅 데이터 전문가 수 천명을 배출하자는 둥 IT 업계와 관련된 여러 담론이 사방에서 나오고 있는데, IT 기술이 더 이상 첨단 기술이 아니라 자연스런 환경이 되버린 상황에서 예전 기술 우위에 입각한 사고 방식으로 얼마나 신새대를 설득할 수 있을지 참으로 궁금하다. 피플웨어에서 뒤에 이어지는 글을 계속 살펴볼까?

20세기 말에는 가정과 학교서는 찾아보기 어려우나 회사에는 존재하는 중요한 기술이 있었습니다. 이제는 그렇지 않습니다. 젊은 프로그래머들에게 컴퓨터, 스마트폰, 웹, 프로그래밍, 해킹, 소셜 네트워킹, 블로깅은 이제 기술이 아니라 환경입니다. 젊은 친구들에게 이런 주제를 놓고 제작 기술에 대해 가르치기가 어려울뿐더러 기술 사용에 따르는 윤리에 관해 떠들어 봤자 소 귀에 경 읽기입니다.

그렇다. 이 기술이 중요하다는 둥 저 기술이 중요하다는 둥 사과 심어라 배 심어라 할 시기는 이미 오래 전에 끝난 듯이 보인다. 따라서 설레발치며 다 된 밥에 재뿌리지 말고 그냥 내버려두기를 간곡하게 희망한다. 다 큰 어른들이 알고 있던 기술 시대는 이미 저물어가니까.

EOB

금요일, 12월 27, 2013

[일상다반사] 클린 코드 복간 기념 이벤트

기쁜 소식을 독자 여러분들께 전해드리겠다. 클린 코드 복간 버전이 Yes24 컴퓨터와 인터넷 부분 'YES24의 선택'에 올라 왔다(정말 얼마만인지 기억도 안 난다. T_T). 기분이 좋은 상태에서 어제 밤 출판사에서 보내준 택배 꾸러미를 열어 복간 버전을 읽어보니 예전 버전에 비해 너무 훌륭했기에 독자 여러분을 위한 이벤트를 열지 않을 수 없었다.

혹시 클린 코드 구판을 구입했는데, 너무나 억울한 사연이 있어(또는 너무나 좋은 사연이 있어) 꼭 복간 버전을 선물로 받아야겠다고 생각하시는 분들이 계시면 2014년 1월 1일 밤 11시 30분까지 jrogue 에뜨 gmail.com으로 사연과 함께 응모해주시기 바란다. 1월 2일에 멋진/슬픈 사연을 소개해드리며 당첨자(기준은 B급 프로그래머의 심금을 울리는 정도에 따라 결정된다)를 발표하겠다.

보너스: 클린코드 애독자라면 책 내용을 정말 일목요연하게 정리한 커닝 페이퍼도 꼭 챙기시기 바란다.

EOB