Archive for May, 2008


칼퇴근의 신화

Tuesday, May 27th, 2008

며칠전에 미국에서 일하고 온 친구를 대학동기들과 만났습니다. 일하고 온 친구뿐만 아니라 모두 오랜만에 만났기 때문에 다양한 이야기로 즐거운 시간을 보냈습니다. 이런 저런 이야기를 하다가, 일하고 온 친구가 미국 배관공 이야기를 했습니다.

물이 새서 배관공을 불렀는데, 이 친구가 퇴근시간이 되자 일도 안 끝났는데 집에 가버리는 거야. 말이 안 통해서 별 이야기 안 했지만 조금 황당하더라고.

이 이야기를 듣고 저와 제 친구들은 어떤 반응을 보였을까요? 첫 번째 반응은 ‘역시 미국 배관공은 살만하구나’는 것이었고, 두 번째 반응은 ‘먹고 살만하니까 서비스가 개판이다’는 것, 마지막 반응은 ‘역시 대한민국이 살기 좋은 나라(?)’라는 것이었습니다.

***

오늘 ‘한국인 최장노동은 상사눈치 때문’이라는 기사가 떴습니다. 기사의 내용은 OECD가입국 가운데 대한민국이 2357시간으로 노동시간이 가장 긴데, 그 이유가 상사눈치를 보느라고, 상사가 퇴근할 때까지 회사에서 머물기 때문이랍니다. 이 기사가 통계적으로 얼마나 의미 있는지 잘 모르겠지만, 지난 직장생활을 돌이켜 보면, 제 경험상 상당히 그럴 듯한 기사입니다.

직장에서 MBO를 세우고, 객관적으로 인사평가를 하려고 노력하지만, 정량적으로 평가하기 어렵습니다. 연말 인사고과는 정량적인 실적보다 직장상사와 정성적인 관계에 의해 평가받는 경향이 있습니다. 결국 근면이라든지, 성실이라든지, 조직 충성도라든지, 상당히 주관적인 평가지표에 의해 평가를 받고… 결국 이런 주관적인 평가가 남발할 수 밖에 없는 상황에서 관리자가 정량적으로 평가할 수 있는 것은 얼마나 회사에 오래 남아 있느냐죠.

6시에 모두 일을 마치고 칼퇴근을 하면 모든 사람에게 혜택이 돌아가지만, 연대의식이나 장치가 없는 대한민국의 직장인은 일종의 죄수의 딜레마에 빠져 있기에, 상사눈치 보기라는 경쟁체제에 돌입할 수 밖에 없는 듯합니다. 즉, 괘씸죄라는 명목으로 벌을 받지 않기 위해 노력한 덕분에, 대한민국은 OECD가입국 최장노동시간이라는 타이틀을 얻은 것 같습니다.

자신의 편의를 위해 고객 불편은 관심도 없는 미쿡 배관공의 직업의식이 옳은지 그른지 단죄할 생각은 없습니다. 즉, 저도 최장노동시간의 대한민국에 살고 있는 노동자이기 때문입니다(저도 죄수의 딜레마에 빠져 본 경험이 있기에).

다만, 자신이 할 일을 다하고 여가를 즐기기 위해 퇴근하는 동료를 향해, 겉으로든 속으로든 ‘저 친구 요즘 살만하군’이라는 말을 되뇌이는 직장인이 줄어든다면, 대한민국은 조금 더 여유로운 나라가 될 것 같습니다. 그러나 이게 쉽지만은 않죠.

진짜! 진짜! 좋은 디자인이란? 8부 : 내 마음을 읽어봐!

Saturday, May 17th, 2008

조엘이 stackoverflow라는 사이트를 만들고 있답니다. 일종의 프로그램 관련 Q&A사이트인데, 아직 준비 단계지만, 사이트 이름으로 블로그를 개설했습니다. 이 블로그에서 조엘의 podcast을 들을 수 있습니다. 물론 IT관련된 podcast죠.

첫 번째 podcast를 듣다가, Launchy라는 프로그램에 대한 이야기가 나왔는데, 조엘답지? 않게 이 프로그램에 대해서 칭찬을 하더군요. 그래서, 어떤 프로그램인지 검색해 봤습니다. 국내에서도, 여러 분들이 이미 설치해서 쓰고 계시더군요.

Launchy

이 유틸리티가 무엇에 쓰는 물건인가 하면, ’바탕 화면’이나 ’빠른 실행’에 없는 프로그램을 실행하려면, ‘시작’버튼을 눌러서 쭉 찾아 들어가야 합니다. ‘시작’버튼 UI의 단점은, 자주 사용하지 않는 프로그램 아이콘을 감춰 놓기에, 이런 프로그램을 실행하려면 한참 동안 뒤져야 한다는 것입니다.

‘alt’+’space’키를 누르면 Launchy가 뜨는데, 실행하고 싶은 프로그램 이름을 강아지 떡처럼 입력해도 잘 찾아서 자알~ 실행해 줍니다. 물론, 맥에서 사용하는 QuickSilver를 보고 만든 따라쟁이 유틸리티지만, 맥을 사용하지 않는 제 입장에서 상당히 착한 유틸리티입니다.

Quicksilver나 Launchy같은 프로그램이 뛰어난 이유는 뭘까요?

프로그램을 사용해서 경험하는 즐거움은 차치하고, 작업의 목적에서 바라보면, 어떤 프로그램을 쓰느냐는 그다지 중요하지 않습니다. 즉, 워드를 쓰건 아래한글을 쓰건, 보고서를 만든다는 관점에서 본다면, 프로그램은 목적을 위한 수단일 뿐입니다. 물론, 현실에서 어떤 도구를 사용하느냐에 따라, 작업 결과의 품질과 효율성에서 차이가 나지만, 궁극적으로 진화한 도구의 경우 매우 직관적이기에, 도구를 배우는데 필요한 학습비용이 매우 낮습니다.

‘시작’버튼으로 프로그램을 찾으려면, 시작버튼을 누르고 다시 프로그램 항목으로 가서, 글자순으로 정리되어 있지 않을 때 나열된 프로그램 목록을 한참 뒤져야 합니다. 즉, 내 마음 속에는 어떤 프로그램을 실행하고 싶은지 그 정답이 있는데도, ‘시작’버튼이 그런 식으로 구성되어 있기에, 실행하고픈 프로그램을 찾기 위한 노동을 해야 합니다.

하지만, 런치는 간단합니다. 이미 내 머릿속에 떠오른 프로그램 이름을 대충 명령창에 적어주면 됩니다. 하! 이 얼마나 진화적인 발전입니까? 즉, ‘시작’버튼은 ‘실행하고픈 프로그램’과 ‘진짜 프로그램’ 사이의 거리를 백만광년 정도로 벌려 놨다면, Lauchy는 ‘대뇌작용’과 ‘CPU위에서 일하는 프로그램’ 사이의 거리를 나노미터 정도로 좁힌 셈입니다.

***

발표자료를 만들 때면, 부하직원과 항상 같이 작업하는 부장님이 있었습니다. 이 부장님의 문서작업 방법은 이렇습니다. 우선, 프로젝터가 있는 회의실을 예약하고, 부하직원에게 노트북을 가져오라고 지시합니다. 부하직원은 노트북을 프로젝터에 연결해서, 파워포인트를 띄우죠. 이때부터 부장님의 문서작업이 본격적으로 시작됩니다.

“김대리, 지난번 만들었던 템플릿 띄워봐!”

“겉표지는 조금 있다 만들고, 목차부터 적어봐. 목차는 …… “

“폰트가 별로다. 가는고딕으로 바꿔봐. 글자도 좀 키우고.”

“가운데 정렬로 하고, 박스들 오른쪽으로 조금 옮겨. 아니 너무 옮겼다. 그래 그 정도, 좋아.”

부장님 입장에서, 입력장치는 키보드와 마우스가 아닌, 인공지능자연지능이 장착된 부하직원입니다. 문서작업의 효율성을 중요하게 생각하는 사람에게, 상당히 비효율적으로 보이지만. 부장님과 짝지가 되어 오랫동안 수련한 부하직원은, 이 부장님의 스타일을 완전히 파악하고, ‘아’라고 말해도 ‘어’라고 자동적으로 교정하도록 완벽하게 튜닝되었기에, 이 부장님에게 상당히 효과적인 작업 방식입니다.

***

실력있는 장인이 사용하는 도구는 대부분 단순합니다. 장인이 사용하는 도구가 단순하지만 효과적인 이유는, 한가지 목적을 위해 도구가 만들어졌기 때문입니다. 즉, 사용자 인터페이스가 단순하고 직관적이죠. 하지만, 일반 소비자에게 제품이 어필하려면, 필연적으로? 기능이 많아집니다. 기능이 많아진다는 이야기는, 반대로 사용자 인터페이스가 복잡해지고, 이런 제품의 UI는 사용자가 좌절하게 합니다.

이런 상황에, 일종의 모순이 있습니다. 즉, 사용자를 유혹하기 위해 넣은 기능이 많아지기 때문에 사용성이 떨어지고, 역설적으로 이런 기능 때문에 ‘잡스러운 제품’이 됩니다. 아직까지 이런 모순을 해결하는 방법은 두 가지 정도입니다. 애플처럼 쓸데없는 기능을 다이어트하고, 제품의 사용성을 높이거나… 주로 쓰는 기능을 핵심 인터페이스와 매칭하고, 안 쓰는 기능은 구석에다 감추는 방법입니다. 숨긴 기능은 사용자를 유혹하는 데 역할을 다했으면, 회사 입장에서 그걸로 충분합니다. 그 기능을 쓰건 말건, 그건 사용자의 몫이라는 생각이죠.

쓸려면 찾아서 쓰고 아니면 말고 식의 전략보다는, ‘단순한 기능 멋진 디자인이라는 전략’이 소비자를 감동하게 할 가능성이 높습니다. 하지만, 문제는 단순화 전략도 시장에 어느정도 노출이 되어 약간 식상하기도 하고, 애플식의 단순화 전략이 심플하지만, 그걸 일반 회사가 실행하는 건 매우 어렵다는 것입니다.

이건 뭐 어쩌라는 건지? 자! 그렇다면 기능을 많이 넣으면서도, 어떻게 하면 사용자가 필요할 때마다 원하는 기능을 찾아 쓰도록 할까요?

해답은, 사용자의 마음을 읽으면 됩니다. 헉! 인공지능도 요원한 일인데, 독심술 기능을 제품에 내장하라는 이야기인데, 이거 너무 무리수를 두는 포스트가 아니라는 의문도 들지만. 앞서 소개한 Launchy나 부장님의 작업방식을 떠올리면, 이런 제 주장이 그렇게 헛소리처럼 들리지 않을 듯합니다. 그리고, 사용성의 대가인 도널드 노먼 교수가 이런 맥락에서 새로운 책을 내기도 했으니까요.

인지부조화 때문에 꼰대가 되어버릴 때

Wednesday, May 14th, 2008

스스로를 이성적이라고 말하려면, 자신이 생각하고 말한 것이 틀렸다는 것을 입증할 만한 것이 나타났을 때, 제로 베이스에서 스스로가 다시 생각해 볼 수 있느냐가 관건이다. 그런데 이게 쉽지 않다. 특히, 똑똑한 사람일수록 자신이 틀렸다는 걸 인정하기가 무척 어렵다#. 이런 이유로, 아이러니하게도 똑똑할수록 비이성적일 확률이 높다.

인지부조화라는 심리적인 현상을 언급하지 않아도, 사람은 자신이 뱉어놓은 말에 따라서 자신의 행동을 일치시킨다는 것을 본능적으로 알 수 있다. 고로, 누군가가 자신이 이성적이라고 말하려면, 이런 인지부조화 때문에 스스로를 매몰시켜서는 안 된다.

뭐, 광우병 사태는 인지부조화라는 개념만으로 재단하기에는 복잡다단한 문제이지만. 가끔 식은땀을 흘리면서도 뻔한 변명 아닌 변명으로 일관하는 당국자를 보면, 왠지 인지부조화라는 현상의 단면도 보이는 듯하다.

광우병 이야기는 곁가지이고, 사실 이야기하고 싶은 것은, 관리자(프로젝트 관리자)에 대한 인지부조화다. 가만히 생각해보면 인지부조화에 걸리지 않는 방법은, 말을 아예 하지 않는 것이다. 뱉은 것도 없기에, 행동을 맞추어야 할 말도 없기 때문이다. 면벽수련하는 수도사도 아닌데, 어찌 입에 반창고를 붙이고 살 수 있을까? 특히, 프로젝트 관리자라면 본업이 말하는 것인데.

관리자라면 말이 많아지기 때문에, 인지부조화 현상으로 꼰대가 되어버린 가능성이 농후한데, 결국 훌륭한 관리자가 되려면 우선 이성적이어야 하고, 말이 적어야 한다는 결론을 대충 얻을 수 있다.

# 통계적으로 검증되지 않았습니다. 일종의 가설입니다. 먼산을 바라보며……

임베디드 서적 몇 권 소개.

Monday, May 12th, 2008

SI 동네는 엔터프라이즈 스택에서 보자면 꼭대기 층에 해당하죠. 꼭대기 층이라고, 팬트하우스처럼 집값이 비싼 건 아니지만요. 팬트하우스에 살다보면, SI 개발자는 현실감각이 떨어지기도 합니다. 여기서 말하는 현실감각이란, 윗동네에서 말하는 것이라기 보다, CPU근처에서 돌아가는 코드 수준의 현실감각이죠.

타계하신 박경리선생님이 인터뷰에서 말씀하셨던 것처럼, 진실해지려면 땅에 두발을 단단히 박고 살아야 하는데, 먹고 살다보니일하다 보니 밥벌이 중력에 이끌려 아랫동네, 즉 하드웨어 세상과 멀어지게 되었습니다.

현실감각을 키우기 위해 어셈블리 코드까지 통달할 필요는 없지만, 그래도 CPU에서 본인이 짠 비즈니스 로직 코드가 어떻게 돌아갈지, 컴파일러가 얼마나 최적화된 코드를 내놓는지까지(이것도 상당한 수준이지만) 알아두면 좋겠죠. 하지만, 목구멍 포도청이 아랫동네에서 노니는 것을 허락하지 않은니, 어쩔 수 없기도 합니다.

책 몇권 읽는다고 SI 개발자가 임베디드 쪽까지 기웃거리면서, 그쪽 동네 밥그릇까지 넘볼 수 없지만, 미리 준비하시는 분들에게 새로운 기회도 있고, 굳이 밥그릇 바꿀 필요가 없다고 해도, 알아두면 딱히 해가 될 것도 없기에, 시간이 되시면 임베디드 관련 서적도 읽어두시면 좋겠죠.

교양지식을 늘린다는 목적으로, 임베디드 하드웨어를 공부하려 전자회로 기초서적을 펴기에는 만만치 않습니다. 그다지 효과적이지도 않죠. 그럼 SI 개발자에게도 도움이 되면서, 임베디드 동네도 공부할만한 책은 (상당히 주관적이지만) 최적화 쪽인 듯합니다. 컴파일러가 좋아서 개떡같이 짜도 왠만하면 해당 CPU에 최적화된 소스를 내놓지만, 알아야 면장을 한다는 옛말을 생각해 볼 때, 내가 짠 소스가 어떻게 최적화될지 알아두는 것도 좋을 듯합니다.

책 소개하면서, 서두가 길었는데, 본론으로 넘어가면

우선 처음 소개드리는 책은, 한빛에서 나온 Blog2Book 시리즈 가운데 하나인 ‘임베디드 프로그래밍 C코드 최적화’입니다. 일단 이 책을 읽으시려면, C문법과 포인터에 관한 지식이 있으셔야 합니다.

한빛에서 기획한 Blog2Book 시리즈는 이 책이 처음 읽어본 것인데, 시리즈 컨셉이 괜찮습니다. ‘블로그에 담기는 양이 많고, 전문서적으로 가기에는 내용이 심도있지 않은 것’들을 모아서 책을 꾸민다는 것인데, 일종의 니치 마켓을 경향한 컨셉이죠. 내용이 깊은 책은, 마음 잡고 읽기 힘들고, 블로그에서 집중해서 글을 읽기 힘든 것을 생각해 보면요.

‘임베디드… 최적화’, 이 책도 시리즈의 컨셉을 담아냈습니다. 물론 이 책 한권을 다 읽는다고 임베디드에서 최적화를 다 알 수 없지만, 큰 줄기는 파악할 수 있습니다. 이 책에서 개요수준을 파악하셨다면, 에이콘에서 나온 Great Code 시리즈 가운데, 2권인 ‘로우레벨을 고려한 프로그램 최적화’를 읽어 보세요.

저는 Great Code 1,2권을 다 읽어봤는데, 1권에서 핵심적인 내용을 2권에서도 다루기 때문에, 굳이 1권을 보시지 않아도 됩니다(1권의 내용이 2권에서 그대로 나오는 경우도 있습니다. 일부분입니다. 하지만 흐미). 한빛 책에서 개요수준에서 다룬 최적화 기법이, Great Code 2권에서 폭넓게 다룹니다.

여기까지 읽으셔도 훌륭하지만, 최신 CPU의 동향(듀얼코어, 64비트)를 파악하고, 그런 CPU들이 나오게 된 이유를 프로그래머 관점에서 알고 싶으시다면, 에이콘에서 나온 ‘인사이드 머신’을 읽어 보세요. 보기 드물게 컬러판이기 때문에, 눈도 즐겁습니다. 물론 이 책도 개요수준이기 때문에, 이 책 한권 읽고 주름 잡기 그렇지만, 최신 CPU에 대한 마케팅용어에도 익숙해지고, 왜 그런 것들이 나오게 되었는지 감을 잡으실 수 있습니다.

이 글을 쓰면서, 책 장에 꽂혀 있는 컴퓨터 구조론에서 교과서처럼 쓰이는 ‘컴퓨터 시스템 구조’ 책이 눈에 들어오는데, 이 책을 읽어보셔도 좋지만, 설명이 조금 교과서적이어서 삼키시기가 쉽지 않습니다. 위의 세 책을 보시고 나서, 이 책을 읽고 마지막으로 정리해 보시는 것도 좋을 듯합니다.