책 소개
요약
소프트웨어 개발자, 디자이너, IT 관련 업무 종사자라면 누구나 사용하기 어렵거나, 오류가 잦거나, 결함이 있는 소프트웨어 때문에 골머리를 앓은 경험이 있을 것이다. MIT 컴퓨터과학과 교수 다니엘 잭슨은 이러한 문제의 근본 원인을 해결하기 위해 소프트웨어 디자인에 대한 혁신적인 '콘셉트' 기반 접근법을 제시한다. 이 책은 소프트웨어를 상호작용하는 '콘셉트'들의 집합으로 보고, 이를 통해 복잡성을 줄이고 사용자 경험을 향상시키며 오류를 줄이는 방법을 제시한다. 구글, 애플, 마이크로소프트 등 유명 기업의 소프트웨어 사례를 통해 '콘셉트'를 식별하고 정의하고 보존하고 재사용하는 방법을 배운다. 현직 디자이너뿐만 아니라 소프트웨어 디자인에 첫발을 내딛는 초보자에게도 유용한 이 책은, 소프트웨어 디자인에 대한 새로운 접근 방식을 제시하며 더 나은 소프트웨어를 만들 수 있도록 안내한다.
이 책의 대상 독자
소프트웨어의 디자인이나 사용성에 관심이 있는 모든 사람을 대상으로 하는 책이다. 독자는 프로그래머일 수도 있고 소프트웨어 아키텍트, 유저 인터랙션 디자이너, 컨설턴트나 분석가, 프로그램 매니저, 마케팅 전략 담당자, 컴퓨터 공학 전공생, 교사, 연구자일 수도 있다. 또한 나와 마찬가지로 어떤 디자인은 왜 큰 성공을 거두는데 다른 것은 크게 실패하는지를 궁금해하는 사람일 수도 있다.
이 책에서 소개하는 많은 원칙은 정교한 논리를 다루지만, 컴퓨터 과학이나 수학에 대한 지식 없이도 내용을 이해하는 데 지장이 없을 것이다. 되도록 많은 독자를 위해 워드프로세서부터 소셜 미디어 앱에 이르기까지 유명한 앱을 예제로 많이 사용했다. 비록 일부 독자에게는 약간 어려울 수도 있겠지만, 대부분은 쉽게 따라 할 수 있을 것이다. 독자가 현재 사용하고는 있지만 완전히 이해하지 못하는 앱에 대해서도 확실하게 이해하는 기회가 되길 바란다.
이 책의 구성
1부는 동기부여와 관련된 세 개의 장으로 이뤄졌다. 1장은 이 책의 도입부로, 이 책을 쓰게 된 이유와 다른 분야(인간-컴퓨터 상호작용, 소프트웨어 공학과 디자인 씽킹)에서 아직 해결되지 않은 문제에 대해 설명한다. 2장은 콘셉트의 첫 번째 사례와 사용성에 미치는 영향을 살펴보고 사용자 경험 디자인 계층의 최상위에 해당하는 콘셉트 디자인을 다룬다. 3장은 제품 차별화 요소에서 디지털 전환의 핵심 요소에 이르기까지 콘셉트가 갖는 다양한 역할에 대해 간략히 설명한다.
2부는 이 책의 핵심이다. 4장은 콘셉트가 정확히 무엇이고 어떻게 구조화할 수 있는지를 설명한다. 5장은 콘셉트의 목적을 동기와 척도라는 기본 아이디어로 살펴본다. 6장은 단순하지만 강력한 동기화 메커니즘을 사용해 앱이나 시스템을 콘셉트 구성의 관점에서 이해하는 방법을 알려 준다. 그리고 과대-동기화나 과소-동기화가 사용성을 어떻게 손상시키는지를 설명하고 기존에는 복잡해서 나눌 수 없다고 여겨지는 기능들을 별개 콘셉트의 융합으로 시너지를 내는 방법도 알아본다. 7장은 사용자 인터페이스와 콘셉트를 대응시키는 것이 생각처럼 간단하지 않고 때로는 디자인 문제가 콘셉트 자체가 아니라 버튼이나 디스플레이를 구현하는 데 있다는 것을 보여 준다. 8장은 매우 높은 수준에서 서로 의존하는 콘셉트의 집합으로써 소프트웨어의 구조를 생각하는 방법을 소개한다. 즉, 어떤 콘셉트가 제대로 동작하기 위해 다른 콘셉트에 의존하는 방식이 아니라 콘셉트의 특정 결합을 통해 앱의 기능을 구성하는 방법을 소개한다.
3부는 콘셉트 디자인의 세 가지 핵심 원칙을 하나씩 다룬다. 즉, 콘셉트는 구체적이어야 하고(9장), 친숙해야 하며(10장), 합쳐졌을 때도 무결성이 유지돼야 한다(11장)는 내용을 설명한다.
목차
목차
- 01. 집필 동기
- 소프트웨어 디자인에 대한 관심
- 컴퓨터 과학 및 타 분야에서의 디자인
- 디자인의 명확성과 단순성
- 프로젝트를 시작하게 된 동기
- 이 책의 목표: 대화의 물꼬 트기
- 02. 콘셉트의 발견
- 첫 번째 사례: 당황스러운 백업 동작
- 드롭박스의 착각
- 드롭박스의 설명
- 이것은 어떤 종류의 결함일까?
- 디자인 계층
- 멘탈 모델과 콘셉트 디자인
- 핵심 정리 및 실천사항
- 03. 콘셉트가 도움을 주는 방법
- 앱을 특징 짓는 콘셉트
- 제품군을 특징 짓는 콘셉트
- 제품을 차별화하는 콘셉트
- 복잡함을 드러내는 콘셉트
- 비즈니스를 정의하는 콘셉트
- 비용과 이익을 결정하는 콘셉트
- 콘셉트는 관심사를 분리한다
- 콘셉트는 재사용할 수 있다
- 콘셉트는 사용성 장애를 식별하는 데 도움이 된다
- 콘셉트는 안전과 보안을 보장한다
- 콘셉트는 디자인 비평의 근거가 된다
- 핵심 정리 및 실천사항
- 2부. 본질
- 04. 콘셉트의 구조
- 애플의 킬러 콘셉트: 휴지통
- ‘휴지통’ 콘셉트: 마침내 수정된 디자인 결함
- 데스크톱 출판의 기본 콘셉트: 스타일
- 유사 스타일
- 19세기 콘셉트: 예약
- 디자이너의 예약
- 핵심 정리 및 실천사항
- 05. 콘셉트의 목적
- 목적: 명확성을 위한 첫 단계
- 목적의 기준
- 목적은 디자인 난제를 해결한다
- 목적 없는 콘셉트: 수전 및 에디터 버퍼
- 목적이 불분명한 콘셉트: 트위터의 ‘마음에 들어요’ 기능
- 혼란스러운 콘셉트 악용: 베이비시터 사기
- 이 콘셉트가 정말 그렇게 어려울까? 이미지의 크기에 관한 이야기
- 누구의 목적인가? 내 것 또는 당신 것?
- 기만적인 목적
- 부적합: 목적이 달성되지 않을 때
- 잘못된 디자인에 따른 치명적인 부적합
- 상황 변화에 따른 부적합
- 과거의 부적합으로 회귀
- 핵심 정리 및 실천사항
- 06. 콘셉트의 구성
- 왜 기존 구성은 동작하지 않을까?
- 새로운 종류의 구성
- 자유 구성
- 협업 구성
- 시너지 구성
- 휴지통과 폴더의 아름다운 시너지 효과
- 시너지는 완벽하지 않다
- 과대-동기화 및 과소-동기화
- 과대-동기화 및 취소된 세미나의 이상한 사례
- 과소-동기화 및 가입할 수 없는 그룹
- 핵심 정리 및 실천사항
- 07. 콘셉트의 의존성
- 콘셉트를 점진적으로 확장하기
- 콘셉트 인벤토리 구축
- 일반 콘셉트의 목록
- 콘셉트 의존성 다이어그램
- 앱 구조 분석 사례
- 핵심 정리 및 실천사항
- 08. 콘셉트의 매핑
- 간단한 개념을 어렵게 만드는 방법
- 인터페이스에 사용자 매뉴얼 포함
- 다크 패턴: 의도적 난독화
- 복잡한 매핑 구성: 지메일 레이블의 미스터리
- 이해할 수는 있지만, 쓸모 없는: 백블레이즈 복원
- 실시간 필터링의 수수께끼
- 모호한 액션 해결
- 표준 위젯으로 충분하지 않을 때: ‘값 없음’으로 설정
- 핵심 정리 및 실천사항
- 3부. 원칙
- 09. 콘셉트의 구체성
- 목적 없는 콘셉트
- 콘셉트 없는 목적
- 중복 콘셉트
- 콘셉트 과부화
- 잘못된 통합에 따른 과부하
- 거부된 목적에 따른 과부하
- 새로운 목적에 의한 과부하
- 피기백에 따른 과부하
- 목적의 세분성 및 일관성
- 일관성 기준 적용: 페이스북의 ‘좋아요’ 콘셉트
- 콘셉트 분할: 페이스북의 ‘좋아요’ 콘셉트
- 핵심 정리 및 실천사항
- 10. 콘셉트의 친숙성
- 성공적인 콘셉트 재사용
- 슬라이드 그룹화: 발명하지 않기
- 프리셋 내보내기: 확장이 익숙함을 깨뜨릴 때
- 콘셉트 구현의 적합성
- 핵심 정리 및 실천사항
- 11. 콘셉트의 무결성
- 노골적인 위반: 복수심에 불타는 식당 주인
- 글꼴 서식: 오랜 디자인 문제
- 구글 드라이브에서 평생의 작업물 잃어버리기
- 핵심 정리 및 실천사항
- 12. 기억해야 할 질문
- 전략가, 분석가, 컨설턴트를 대상으로 한 질문
- 인터랙션 디자이너 및 제품 관리자를 대상으로 한 질문
- 기술 문서 작성자, 트레이너 및 마케터를 대상으로 한 질문
- 프로그래머와 아키텍트 대상 질문
- 연구자 및 소프트웨어 철학자를 대상으로 한 질문
- 맺음말
- 감사의 말
- 리소스
- 둘러보기