![]() | |||
|
Joel on Software 조엘 온 소프트웨어
| |||
글 : Joel Spolsky 번역 : AhnLab 년 4월 11일 화요일 어떤 사용자가 어떤 프로그램을 처음 사용한다고 할 때, 그 프로그램에 대해 완전히 백지 상태로 접근하는 것은 아니다. 그들은 그 프로그램이 어떤 방식으로 작동될 것인가에 대해 자기 나름대로의 기대를 갖는다. 만일 예전에 비슷한 소프트웨어를 사용해본 적이 있다면 그것과 비슷한 방식으로 작동되리라 예상할 것이다. 만일 그 이전에 어떤 소프트웨어도 사용해본 적이 없다면 그 프로그램이 일정한 보편적 규칙에 따라 움직이리라 예상하게 될 것이다. UI가 어떻게 움직일 것인가에 대한 사용자들의 예측이 적중할 수도 있다. 이와 같이 어떤 프로그램이 자신에게 무엇을 해줄 것인가에 대한 사용자의 심리적 이해를 가리켜 사용자모델이라 한다. 프로그램에게도 “심리적 모델”은 있다. 다만, 이것은 비트 단위의 코딩으로 구현되며, CPU에 의해 집행된다. 이를 가리켜 프로그램모델이라 한다. 여기서 법칙이 등장한다. 즉, 제 1부에서 배운 대원칙에 따르면, 프로그램 모델이 사용자 모델과 일치할 때 그 사용자 인터페이스는 성공적이라 말할 수 있다. 사례를 들어보자. 마이크로소프트 워드 프로그램에서 (그 외의 대부분의 워드 프로그램에서도), 사용자가 워드 문서에 그림을 삽입하는 경우 이 그림은 해당 문서 파일에 직접 내장된다. 즉, 사용자가 그림을 만든 다음 이것을 문서에 붙여넣고 원래의그림파일을삭제하더라도 워드 문서에는 여전히 그 그림이 남아있는 것이다. 하지만, HTML의 경우에는 이야기가 달라진다. HTML 문서에서는 이 그림을 별도의 파일에 저장해 두어야만 한다. 워드프로세서를 사용하는 데에는 익숙하지만 HTML에 대해서는 아는 것이 없는 사용자를 데려다가 FrontPage 같은 WYSIWYG HTML 에디터 앞에 앉혀놓으면, 이들은 아마 그림이 파일 내에 저장된다고 생각하게 될 것이다. 이런 현상을 사용자모델관성이라고 하자. 여기서 사용자 모델 (그림이 파일에 내장될 것이다)과 프로그램 모델 (그림은 별도의 파일에 저장되어야 한다)이 서로 충돌하게 되며, UI는 문제를 야기하게 된다. FrontPage 같은 프로그램을 설계하고 있는 프로그래머라면, 이미 첫번째 UI 문제를 발견했을 것이다. 프로그래머가 HTML을 바꿀 수는 없다. 그러므로, 프로그램 모델을 사용자 모델과 일치시킬 무언가가 필요한 것이다. 프로그래머가 여기서 선택할 수 있는 옵션은 두 가지다. 그 하나는 사용자 모델을 바꾸기 위해 노력하는 것이다. 하지만 이것은 매우 어려운 일이다. 매뉴얼을 통해 사용자에게 그림을 별도로 저장해야 한다는 사실을 설명할 수도 있다. 그러나, 사용자들은 매뉴얼을 읽지 않으며 또, 매뉴얼을 읽어야 할 의무도 없다는 것은 누구나 다 아는 사실이다. 그렇다면, 매뉴얼 대신 대화상자를 화면에 띄워서 그림 파일이 내장되지 않는다는 사실을 일러줄 수도 있다. 하지만, 이 경우에도 역시 문제점이 두가지 있다. 숙달된 고급 사용자에게는 이 대화상자가 방해만 될 것이라는 점과 사용자들은 대화상자도 제대로 읽지 않는다는 점이 그것이다 (이런 문제에 대해서는 6부에서 자세히 이야기하기로 하자). 자, 정녕 저 산이 마호메트에게 오려 하지 않는다면... 이제 남은 옵션은 사용자 모델 대신 프로그램 모델을 바꾸는 것이다. 가령, 사용자가 그림을 문서에 삽입할 때 문서 파일 하의 서브디렉토리에 이 그림의 사본이 저장되도록 프로그래밍 하는 것이다. 이 경우, 적어도 그림을 복사했다는 사용자의 인식은 충족시킬 수 있다 (그리고 나서 원본 그림은 안전하게 삭제할 수 있다). 사용자모델을파악할수있는방법은무엇인가? 답은 의외로 단순하다. 그냥 사용자들한테 물어보면 된다! 직장 동료나 친구, 혹은 가족들 중에서 임의로 다섯 명만 골라서 여러분의 프로그램에 대해 간단히 이야기하라 (“이건 웹 페이지 저작 프로그램이야”). 그런 다음, 다음과 같은 상황을 설명하라. “넌 지금 웹 페이지를 만들고 있고, 여기 Picture.JPG라는 이름의 그림 파일이 하나 있어. 넌 이 그림을 웹 페이지에 삽입할 거야.” 그리고 나서, 이렇게 물어보라. “그럼, 이 그림은 어디에 있을까? 네가 Picture.JPG 파일을 삭제해도 그 웹 페이지엔 그림이 그대로 남아있을까?” 이런 과정을 통해 그들의 사용자 모델을 짐작할 수 있다. 필자의 친구 중에 포토앨범 애플리케이션을 개발중인 프로그래머가 있다. 사용자가 사진을 삽입하면, 이 애플리케이션은 각각의 사진을 조그맣게 축소한 이미지인 썸네일(thumbnail)을 보여준다. 사진이 많아질 경우, 이 썸네일을 생성하는 데에만도 상당한 시간이 소요되기 때문에 필자의 친구는 썸네일을 하드드라이브의 어딘가에 저장해두려 한다. 이렇게 하면 썸네일을 한번만 생성하면 되기 때문이다. 여기서 이 친구가 선택할 수 있는 옵션은 여러 가지가 있다. 모든 썸네일은 Thumbnails라는 이름의 커다란 파일 하나에 저장해둘 수도 있고, 각각을 별도의 파일에 저장한 후 Thumbnails라는 서브디렉토리에 | |||