(이 글은 개인블로그에도 포스팅되었습니다. --ak)

"Designing and Engineering Time"이라는 책을 읽었습니다. 몇 달 전에 읽은 책인데 지금 잠깐 짬이 나서 독후감을 올립니다.

Designing and Engineering Time: The Psychology of Time Perception in Software


소프트웨어의 성능(performance)이라는 것은 객관적으로 측정 가능한 수치이지만 결국 성능을 경험하는 주체는 인간이다보니 성능에 대한 인식/지각에는 주관적인 요소가 포함됩니다. 이러한 주관적 요소를 잘 활용하면 더 나은 사용자 경험을 제공하는 소프트웨어/서비스를 만들 수 있겠죠.

책에서는 시간 경험에 관련된 다음 세 가지 요소를 언급하고 있습니다. 첫째는 실제 시간(actual duration)인데 이는 객관적/물리적인 수치입니다. 둘째는 인식된 시간(perceived duration)인데 이는 소프트웨어/서비스를 사용하는 사람이 "느낀" 주관적인 요소입니다. 셋째는 인내력(tolerance)인데 소프트웨어/서비스를 사용하는 사람이 현재 상황에서 얼마만큼의 시간 지연을 참아낼 수 있는가를 나타내는 용어입니다. 역시 주관적인 요소입니다.

예를 들어, 어떤 게임의 로딩 시간이 느리다고 할 때 보통은 로딩 시간을 향상시킬 수 있는 방법을 찾는 것이 유일한 해결책이라고 여깁니다. 하지만 다른 해결책들이 있죠. 1) 어떻게 하면 로딩 시간이 마치 안 느린 것처럼 느껴지게 할 수 있을까? 2) 어떻게 하면 느린 로딩 시간을 기꺼이 감내하게 만들 것인가?

(몇 달 전에 이와 관련하여 재미있는 글들을 북마크한 적이 있는데 함께 읽어보시면 좋겠습니다. 게임을 하면서 게임을 하지 않는 시간 및 이에 대한 검프님의 의견)

기존의 소프트웨어 성능 튜닝 관련 책들이 로딩 시간을 향상시킬 수 있는 방법들을 다루고 있다면 이 책은 나머지 두 가지 질문에 대한 내용을 소개하는데, 각각을 1) 인식 관리 기법 (Perception management techniques) 아홉 가지, 2) 인내력 관리 기법 (Tolerance management techniques) 여덟가지로 나누어 설명하고 있습니다.

인식 관리 기법 중 하나로 "미리 시작하기(Preemptive start)"라는 것이 있는데요, 사용자가 시작하라고 시키기 전에 미리 작업을 시작하는 트릭입니다. 이를테면 몇몇 브라우저(Google Chrome 등)는 실행 파일을 다운로드 받을 때 "정말 다운로드 하시겠습니까?"라고 물어보는데 사용자가 "Save"를 누르지 않아도 이미 다운로드를 시작합니다. "Discard"를 누르면? 받던 파일을 삭제하면 그만이죠. 또 다른 예로 구글 GMail은 사용자가 파일을 첨부하면 "Send" 버튼을 누르기도 전에 전송을 시작합니다. 어지간한 경우에는 사용자가 본문을 작성하는 동안 이미 파일 업로드가 완료됩니다. 사용자가 Discard를 누르면? 업로드된 파일을 서버에서 삭제하면 그만입니다.


인내력 관리 기법 중 하나로는 "오래 걸린다고 말하고 빨리 끝내주기(Underpromise, Overdeliver)"가 있는데, 이를테면 10초 걸릴 것으로 예상되는 작업을 12초 걸린다고 안내한 후 10초에 작업을 끝내면 사용자가 기뻐할 것이라는 내용입니다. 간단하지만 쓸만한 트릭이죠.

그 밖에도 스트리밍(Buffer and Offer)에 대해서도 소개하고 있는데요(이게 왜 인내력 관리 기법에 들어 있는지는 모르겠으나), 전체가 로딩되지 않았더라도 일부를 먼저 보여주라는 내용입니다. 유튜브 등의 일반적인 스트리밍을 떠올리면 되겠습니다. 뻔한 얘기 같지만 의외로 널리 활용되지 못하고 있습니다. 예를 들면 현재 서비스되고 있는 대부분의 MMORPG는 몇 GB에 이르는 파일을 한번에 다 다운로드 받은 후(재수없으면 또 수백 MB에 이르는 업데이트 파일을 받은 후)에야 간신히 게임을 시작할 수 있도록 되어 있는데 개선의 여지가 큽니다. 이를테면 Quake Live는 최소한의 모듈만 다운로드 받으면 바로 게임이 실행되며 사용자가 닉네임을 입력하고 캐릭터를 선택하는 동안 백그라운드로 추가 다운로드를 진행합니다. Unity 3D 같은 게임 엔진도 유사한 방식의 웹 기반 스트리밍을 지원하도록 설계되어 있고요.

한편, 책에서 소개하고 있는 기술을 의도적으로 어겨서 시간이 더 길게 느껴지게 하거나, 인내력을 낮추는 방법에 대해서도 언급하고 있습니다. 자주 써먹을 일은 없겠지만 몇몇 분야(특히 게임 기획)에서는 요긴하게 활용할 수 있겠지요.

개인적으로는 이 책에서 소개하는 개개의 기법들 보다는 시간 경험을 기획하기 위한 전체적인 틀(실제 시간, 인식된 시간, 인내력)에서 더 큰 도움을 받았습니다. 여러가지로 응용할 수 있을 것이라고 생각해요.

책 본문에 대한 자세한 인용은 개인 위키( http://jania.pe.kr/aw/moin.cgi/DesigningAndEngineeringTime )를 참고하세요.

--ak

'독서 소감' 카테고리의 다른 글

관계의 심리학  (0) 2009.12.19
시나리오 가이드  (0) 2009.12.13
동시성의 과학 싱크  (0) 2009.12.01
린 소프트웨어 개발  (0) 2009.11.16
맛있는 그림 혀끝으로 읽는 미술이야기  (1) 2009.11.09
Posted by alankang
,