[책] 소프트웨어, 누가 이렇게 개떡같이 만든거야?
2016 / 02 / 26
뜨끔. 코딩을 해봤다면 절대 자유로울 수 없는 책 제목입니다. 개떡같은 제목을 가진 이 책은 한국에선 2008년에 출간했습니다. 작가가 책을 쓴 연도는 2006년인데, 윈도우XP가 출시되고 5년이 지난 시점입니다. 꽤나 오래된 책이라 전문 지식 획득을 위한 용도로는 부적절합니다. 작가가 이미 책을 쓸 때도 일반인을 대상으로 쓰기도 했습니다.
작가는 십여권이 넘는 프로그래밍 책을 저술했습니다. 마이크로소프트(MS) 진영에서 활발히 활동했던 사람이지만 MS의 직원은 아니었습니다. 그래서 MS를 사랑하는 마음으로 신랄하게 비판하고 조롱합니다. 또 그는 Geek, Nerd라고 불리는 괴짜들의 심리를 잘 알고 있습니다.
이 책을 한 줄로 요약한다면: 괴짜가 일반인과 어떻게 소통할 해야 하는지 알려주고 경고하는 책. 목차만 봐도 읽고싶어질 것입니다.
바보를 부르는 그대는 누구인가?
문제의 기원
왜 여전히 개떡같은가
제어와 사용 편의성
프로그램이 어떻게 동작하는지에는 관심이 없다니까
나쁜 기능과 좋은 기능
진보를 가로막는 어리석음
임상 실험
우리의 위치,우리가 할 수 있는 일
웹에 얽혀들다
문제의 기원
웹의 작동 원리
왜 여전히 개떡같은가
고객 중심의 설계와 서버 중심의 설계
커피는 어디 있는거야?
명확하다고? 전혀!
스플래시, 플래시, 애니메이션
임상 실험
우리가 할 수 있는 일
나를 안전하게 지켜줘
예전에는
개떡같은 이유
프로그래머가 알아야 하지만 모르는 것들
인간의 조작
참을성의 한도
사용자는 게으르다
사회 공학
보안에서 가장 중요한 것
우리가 할 수 있는 일
대체 넌 누구야?
문제의 기원
왜 여전히 개떡같은가
상호 모순적 요구사항
좋아,그래서 어떡하라고?
누굴 보고 있는 거야?
그래, 그들은 당신을 알지
왜 전보다도 더 개떡 같아졌나?
사용자는 어떤 것이 위험한지 모른다
그들이 처음 아는 것
쿠키로 개인정보 짜내기?
무의미한 개인정보 보호 정책
당신의 자취 감추기
구글 수수께기
해결방법
졸트 콜라에 환장하는 만 명의 컴퓨터 괴짜들
자연적 습성으로 본 컴퓨터 괴짜들
이 모든 괴짜들
누가 언제 무엇을 발표하나
판촉
다음 세대의 괴짜들이 알아야 할 것
그래서 이 미친 놈들은 뭔데?
호모 로지쿠스
남성 호르몬 중독
제어와 만족
모델 만들기
괴짜와 운동선수
은어(전문 용어)
두뇌와 제약조건
괴짜들의 일곱 가지 습관
마이크로소프트: 같이 살 수도 없고, 없애 버릴 수도 없고
마이크로소프트, 세상을 움직이다
저와 마이크로소프트와의 관계
문제의 기원
개떡같은 이유
해도 문제고, 안 해도 문제고
우리는 마이크로소프트를 싫어하길 좋아한다
바꿔 봤자 똑같구먼
어른이 되는 고통
우리가 할 수 있는 일
요약
우리의 대응
구입하기
말하기
조롱하기
신뢰하기
조작하기
개떡같은 소프트웨어를 사용하는 보통 사람들의 답답한 마음을 작가는 아주 잘 알고 있습니다. CLI(Command Line Interface)에 익숙한 개발자가 절대 이해하지 못할 사용자의 고충을 짚어주는데, 저같은 예비 개발자들에게 추천하고 싶은 책입니다. 두껍지 않은 책이고 이해하기도 쉽습니다. 게다가 재밌습니다. 개발을 할 때 사용자의 입장에서 생각하라는 교훈이 있는 책입니다.
작가는 ‘개떡(suck)’같은 홈페이지와 기능들을 소개하면서 이것이 왜 개떡같은지 이유를 조목조목 짚어줍니다. 그리고 개발자들에게 ‘네가 만든 소프트웨어는 진짜 개떡같다!’라는 메세지를 보내라고 독려합니다. 심지어 홈페이지를 만들어 개떡같은 웹페이지나 소프트웨어를 신고해달라고 합니다!(http://www.whysoftwaresucks.com)
여러모로 즐거운 책, 자신을 괴짜라고 느낀다면 재밌게 읽으실 수 있습니다.
이 책이 정의한 괴짜에 따르면 저는 어릴 때부터 괴짜였습니다. 체육 시간에 축구를 하면 저는 구석에 쭈그려 앉아 흙장난을 하곤 했었습니다. 컴퓨터 게임을 하는 것, 컴퓨터를 가지고 노는 것만이 제가 가장 좋아하는 취미였습니다. 대학에 국어교육과로 진학했지만 결국 컴퓨터전공으로 전과했습니다. 괴짜가 필요한 곳, 괴짜만이 할 수 있는 일이 분명 있을 것입니다. 남들의 이상한 시선을 즐기면서, 스스로를 풍자하면서 살려고 합니다.
요즘 소프트웨어는 개떡 같습니다. 달리 좋게 말할 방도가 없습니다.
무엇보다도 프로그래머들은 바보로 보이는 것을 싫어합니다. 추하고, 발기불능에다, 애들과 작은 동물들에게 불친절하고… 그들은 이런 것들에는 신경도 쓰지 않습니다. 그렇지만 멍청하다고 하면? 신이시여, 우리에게 자비를 베푸소서. 그들은 지능을 다른 어떤 것보다도 중요하게 생각합니다. 프로그래머가 뭔가를 만들게 해야 하는데 말을 안 듣는다면, 대중 앞에서 그가 멍청해 보인다는 것을 확인시켜주면 됩니다.
따라서 다음 번에 개떡같이 설계된 사용자 인터페이스를 보면 잠시 멈추고 살펴보십시오. 잠시 가지고 놀면서 프로그램이 왜 마음에 안 들고 어떻게 개선할 수 있을지, 정확하게 특정 부분을 콕 찍어 생각해 보기 바랍니다. 그리고 이런 목적을 위해 있는 ‘부끄러움의 전당(Hall of Shame)’ 웹사이트에 개떡 같은 설계에 대한 글을 올리는 겁니다. 이 책의 웹사이트인 ‘www.whysoftwaresucks.com’이 좋은 시작이 될 수 있습니다. 그러고 나서 애플리케이션 개발사에 메일을 보내 당신의 평가를 볼 수 있게 알려줍니다. 더 바보 같은 것을 찾아낼수록, 그게 공개되는 것에 더 크게 당황할 것입니다. 그리고 결국은 사용자가 자신들과는 다르다는 것을 이해하게 될 것입니다.
저는 오해를 하고 있는 모든 팀에게 설명하기 위해 많은 노력을 했습니다. 컴퓨팅은 더 이상 기술 분야가 아니라, 사람과 관련된 분야입니다. 제가 테크에드(Microsoft Tech Ed)에서 한 여러 가지 것들 중에서 가장 중요한 것은 주의 깊은 문제 정의에는 보상을 하고 기술 자체를 위한 기술 활용은 응징했다는 것입니다. 저는 그것이 감수성이 예민한 학생들에게 중요한 영향을 끼쳤다고 생각하는데, 정말 그렇게 되었길 바랍니다. 그것이 제가 업계에 기여할 수 있는 최상의 노력이었을 것입니다. 물론 여러분이 읽고 있는 이 책과는 별개로 말입니다.
괴짜(Geek) [명사]
종종 다른 사람들이 생각하기에 지나치다 싶을 정도로 과도하게 컴퓨터나 다른 기술의 사용을 즐기고 이에 자부심을 갖는 사람.
– 마이크로소프트 구내 매장에 걸려있는 티셔츠에서
괴짜들은 항상 자신들이 상황을 통제하고 있다는 느낌을 갖고 싶어합니다. 이런 욕구는 아마 초등학교 때부터 생겼을 겁니다. 운동도 잘 못하고 여자들도 그들에게는 말을 걸지 않았지만, 그들은 원할 때면 언제고 구석에 앉아서 큐빅 퍼즐을 마음대로 맞춰낼 수 있었습니다. 그리고 그들이 정말 하려는 것이 무엇이었는지를 깊숙이 파고들어가 보면 그것은 퍼즐을 사용설명서대로 마음껏 주무르는 것이었을 겁니다. 제가 1장에서 설명했듯이, 괴짜들은 수동 기어 자동차를 좋아합니다. 뭔가를 마음대로 제어할 때의 느낌을 좋아하기 때문입니다. 그 방법을 배워야 하는 것, 그리고 운전을 하면서 지속적으로 기어를 바꿔야 하는 것과 같은 부가적은 일에는 신경을 쓰지 않습니다. 그들은 이런 것이 상당히 괜찮은 트레이드오프라고(그리고 자동차라면 당연히 그래야 한다고)생각하며, 그걸 인식하고 그렇게 할 수 있을 정도로 똑똑하다는 것에 대해 스스로 자부심을 느낍니다. 그들도(추상적으로는) 어떤 사람들은 그들과 생각이 다르다는 것을 알지만 그런 사람의 비율은 그리 높지 않을 거라 생각합니다. 그리고 그런 사람들이 왜 그렇게 느끼는지에 대해서도 이해하지 못할 뿐 아니라, 그런 사람은 얼마 안 될 것이라 생각했다가 사실은 대부분의 사람들이 그렇다는 것을 알게 되면 깜짝 놀라고 맙니다.
...
프로그래머는 소프트웨어를 조금 더 좋게(그들이 더 좋다고 생각하는 것은 종종 사용자들의 생각과는 다르지만) 만들려 하면서 하루를 보내고, 다음 날에도 조금 더 좋게, 그 다음 날에도 조금 더 좋게 만들려고 합니다. 그들은 그런 사람입니다. 이런 성향은 그들의 머릿속에 뿌리 박혀 있어 그들이 작업하고 있는 동안 그런 생각을 멈추는 것은 불가능합니다. 심지어는 아침을 먹으면서도 뭔가 더 좋은 방법이 없을까 생각하기도 합니다. 자신들만큼 똑똑한 사람들이 그걸 볼 수 있게 말입니다. 여기 닐 스테펜슨(Neal Stephenson)의 괴짜 소설 「Cryptonomicon」^1^ (Arrow, 2000)에서 나오는 예가 있습니다.
“세계적 수준의 시리얼 먹기에는 교묘한 타협이 필요하다. 엄청나게 쌓인 불어 터진 시리얼과 넘칠듯한 우유를 생각한다면 이는 초보자임을 뜻할 뿐이다. 이상적으로는 바짝 마른 시리얼과 온도가 낮은 우유의 접촉을 최소화하면서 입으로 넣고, 시리얼과 우유의 모든 반응은 입안에서 일어나야 한다. 랜디(괴짜 주인공)는 특별한 ‘시리얼 먹기 전용 스푼’의 설계도를 마음속으로 그렸는데, 그 스푼에는 손잡이뿐 아니라 소형 모터가 장착된 튜브가 달려 있어 우유를 퍼 올릴 수 있었다. 이제 그릇에서 바짝 마른 시리얼을 스푼으로 퍼 올리고 손가락으로 버튼을 눌러 스푼 안으로 우유가 쏟아지게 해 입으로 들어가게 한다. 차선책은 조금씩 작업하는 방법으로, 캡틴 크런치를 한 번에 조금씩 그릇에 넣고 불기 전에 먹어 치우는 것인데, 캡틴 크런치의 경우 그 시간은 대략 30초 내외다.”
괴짜들은 보통 DLL(Dynamic Link Library, 윈도우에서 많이 볼 수 있습니다). SDK(Software Development Kit)과 같은 약자를 많이 사용합니다. 그러나 우리 괴짜들은 한걸음 더 나아가서 다음과 같은 약자를 만들어내기도 합니다. DLL, SDK와 같은 약어를 TLA라 부르는데 TLA는 Three Letter Acronym(3글자로 된 약어)을 뜻합니다. 물론 TLA 자체도 TLA입니다.
우리는 괴짜로서 26글자 알파벳으로는 TLA로 사용할 수 있는 약자수가 17,567개밖에 안 되며, 마이크로소프트가 지난 여름에 다 써버렸다는 것을 깨달았습니다. 따라서 괴짜들은 약자의 글자수를 늘려 WSDL(Web Service Descriptor Language), SOAP(Simple Object Access Protocol)^2^과 같은 용어를 만들어냈습니다. 이런 종류의 약자는 이름이 없었는데, 1998년 뉴스레터 기사에서 제가 이런 약자의 이름을 FLAP이라고 선언했습니다. 이는 Four-Letter Acronym Package(네 글자로 된 약어)^3^를 뜻하며, 물론 FLAP 자체도 하나의 FLAP입니다.
네 글자 약어는 456,976개의 조합이 가능한데, 컴퓨터가 64,000 문자를 저장할 수 있는 메모리에서 이것보다 64,000배, 즉 40억 개 문자를 저장할 수 있게 확장되는 데 20년도 채 안 걸린 것을 고려하면, FLAP으로 가능한 조합도 얼마 안 가서 바닥을 보일 것입니다. 따라서 미리 준비해 두는 차원에서 저는 FLEAP(Five-Letter Extended Acronym Package, FLEAP자체도 FLEAP입니다)란 용어를 만들었는데, 거의 1천 2백만 개의 조합이 가능합니다. 괴짜들이 사용해온 OLEDB(이것의 정의가 뭔지를 설명하느라 여러분을 지루하게 하지는 않겠습니다)나 우리의 오랜 친구는 SNAFU, FUBAR등도 FLEAP입니다. 그리고 FLEAP를 다 써버려도 우리는 SLEAPE(‘sleepy’로 발음되며 Six-Letter Extended Acronym Package, Eh?의 약자입니다)를 사용할 수 있습니다. 캐나다에 다녀오면서 생각해낸 것입니다. SLEAPE는 3억 개 이상의 조합이 가능하며, 이 정도면 당분간은 걱정하지 않아도 될 듯 합니다. SLEAPE를 시험한 초창기 약어는 재미있는 단어를 가진 MOOTWA(Military Operation Other Than War)인데, 이라크 재건 사업이나 루이지애나의 허리케인 구호활동 등을 이렇게 부릅니다. 그러나 마지막 A가 자신만의 단어 첫 글자가 아니기 때문에 이것을 SLEAPE로 쳐도 될지 확신이 없습니다. 괴짜들을 위한 SLEAPE로는 PCMCIA가 있는데 원래는 노트북 PC를 위해 확장된 카드의 일종을 뜻했지만, 곧 ‘People Can’t Memorise Computer Industry Acronyms’^4^를 뜻하게 되었습니다. 아, 물론 SLEAPE 자체 역시 SLEAPE입니다.
Cryptonomicon는 그 분량(900페이지 이상)뿐 아니라 괴짜적 특성, 암호학, 고급 수학 이론과 관련된 구성에도 불구하고 뉴욕 타임즈 베스트셀러 12위까지 올라갔었고, 저 또한 이 책을 읽어보라고 강력히 추천합니다. 여러분이 이 책(소프트웨어, 누가 이렇게 개떡같이 만드는거야?)을 좋아한다면 아마 Cryptonomicon도 좋아할 겁니다. (역자 주) 번역서:「크립토노미콘 1, 2, 3, 4」
신성로마제국이 신성하지도 않았고 로마도 아니었고 제국도 아니엇던 것처럼, Simple Object Access Protocol이라 불리는 것도 절대 간단하지 않고 객체(인기 있는 프로그래밍 기법)와는 상관도 없는 것입니다. 괴짜들은 멋있어 보이는 약어에 약합니다. 설사 그게 완전하게 정확하지 않더라도 말입니다.
(역자 주)뒤에 Package는 약어를 네 글자로 만들어 FLAP 자체가 FLAP이 되도록 하기 위해 붙인 것이며 Package에 중요한 의미가 있는 것은 아닙니다. 괴짜들은 이렇게 재귀적인 것을 좋아합니다. 대표적인 예로 GNU(GNU is Not Unix)가 있습니다.
(역자 주)사람들은 컴퓨터 업계의 약자를 기억할 수 없어요