기본에 충실한 소프트웨어 디자인_Software Desionbased on Basics

Dec 5, 2015 | ID Column, Know-理知

정연우_ Jung, yeonwoo

정연우_ Jung, yeonwoo

연세대학교 산업디자인 05학번
넷앤드휴먼인터페이스 마케팅팀 대리

Accordingly, designer should understand that it is natural structure where development excluding planning process of function definition is unnecessary, instead of blaming on no existence of developer, who is a good communicator. Therefore, to apply ‘completely’ innovative design is unrealistic. Of course, if customers’ needs is on innovative design, design should be developed with more innovative solution, however in the opposite case, such design must be an redundant that only lengthens development period. If there’s some points that have been given through experiencing several projects, designer’s role is not in innovative design creation, but in ‘faithful to the basic design’ development. That means, instead of producing more nice design, it is important to conduct design guide necessary for the right place. If there’s a new project on them, they cannot but move by focusing on modification easiness, management easiness, and high stability. Therefore, the factors as user experience, etc. takes the lower part of development order of priority.

소프트웨어 회사에서 UI디자인을 해 온지 3년이 되었다. 학생 때 홈페이지 디자인에 관심이 많아 아르바이트를 해왔던것이 인연이 되어 지금까지 이어져 온 것이라 생각된다. 아직 UI디자인에 관해 논하기에는 부족한 한참 부족하지만, 아는 범위에서 여러 고민을 공유하자 하는 마음으로 기고하기로 하였다. 소프트웨어 디자인은 타 UI디자인과 조금 다를 수 있음을 염두에 두고 읽어주길 바란다.

소프트웨어의 디자인은 사용자 경험을 기반으로 해야 한다는 말은 이제 두말하면 잔소리다. 어떤 소프트웨어도 사용하는 사람이 불편하거나 어려우면 이제 외면 받을 수 없다. 특히 지금과 같이 무수히 많은 좋은 UI가 쏟아지는 시대엔, 필수 사항이라고 볼 수 있다. 하지만, 개발자가 많은 무수한 소프트웨어 회사에서 디자이너와 개발자가 서로 사용자중심이란 개념을 공유하여 개발하기엔 심각한 괴리가 있을 수 밖에 없다. 그 이유에 대해 살펴보자.

우선, 다음은 개발자들이 배우는 좋은 소프트웨어 개발의 요건들이다.

  • 이해 용이성(Understandability) : 전체 소프트웨어나 개별 구성 요소에 대해 쉽게 이해할 수 있어야 한다.
  • 수정 용이성(Modifiability 또는 Flexibility) : 요구 사항의 변경에 따른 수정이 용이해야 한다.
  • 관리 용이성(Maintainability) : 소프트웨어 유지, 보수, 관리 단계에서 버그 수정이나 장애 대처, 요구 사항 변경, 성능 향상 등의 이유로 소프트웨어를 수정해야 할 경우 이를 쉽게 수행할 수 있어야 한다.
  • 재사용 용이성(Reusability) : 개발된 소프트웨어 구성 요소들을 다른 소프트웨어를 개발할 때 쉽게 재사용 가능해야 한다.
  • 테스트 용이성(Testability) : 소프트웨어가 원하는 동작이나 기능을 수행하는지 테스트하기 쉬워야 한다.
  • 높은 안정성(Reliability) : 소프트웨어가 오류없이 원하는 작업을 수행할 수 있는 확률이 충분히 높아야 한다.

이 모든 것을 다 고려하여 개발하면 좋겠지만, 고객사의 수많은 커스터마이징 요구와 버그 수정에 진절머리가 난 개발자들은 작은 버그 확률에도 민감할 수 밖에 없다. 그들에게 새로운 프로젝트가 생기면, 수정 용이성, 관리 용이성, 높은 안정성에 큰 비중을 두고 움직일 수 밖에 없다. 따라서 사용자 경험 등의 요소는 개발 우선순위 최 하위를 차지한다. 게다가 이윤을 중시하는 회사 사정상 개발 일정은 항상 촉박할 수 밖에 없으며, 개발 및 관리 효율 중심으로 움직일 수밖에 없는 사회 구조다.

화면 정리가 완벽히 되지 않아, 디자이너가 보기엔 심각한 문제처럼 보이더라도, 사용하는데 불편함이 없으면 괜찮다고 생각한다. 설령 직관적이지 않게 되더라도 소프트웨어의 특성상 쓰는 사람들은 다 배워서 쓴다는 이유다. 더 좋은 사용자 경험에 대해 심도 있게 생각해 보지 않고서야 어떻게 이해할 것인가? 오히려 이해하길 바라는 것은 디자이너의 헛된 바람일 수 있다. 따라서 디자이너는 소통이 잘 되는 개발자가 없다고 탓하기 보다는 기획 프로세스나 기능 정의서 이외의 개발은 필요가 없는 당연한 구조임을 이해해야 한다.

그래서 ‘완전히’ 혁신적인 디자인을 적용하는 것은 현실성이 떨어진다 할 수 있다. 물론 고객의 니즈(needs)가 혁신적인 디자인에 있다면, 디자인이 더 혁신적인 솔루션이 개발되어야 하겠지만, 그렇지 않은 경우엔 그런 디자인은 개발 기간만 길게 만드는 사족일 수 있다. 몇 가지 프로젝트를 경험하며 느낀 점이 있다면, 디자이너의 역할이 혁신적 디자인 창출에 있다기보다는 ‘기본에 충실한 디자인’ 개발에 있다는 것이다. 더 멋진 디자인을 생산하는 것보다 오히려 적재적소에 필요한 디자인 가이드를 해주는 것이 중요하다는 뜻이다.

그렇다면 어떻게 UI디자인을 할 것인가? UI에서 중시하는 수많은 가치 중, 그래도 지켜져야 하는 기본적인 가치들에 대해서 몇 가지 이야기해 보려고 한다.

화면 #1
  1. 정보의 명확한 시각적 구분. (Clear zoning of visual info)
    화면#1을 보자. 자주 보는 네이버 메일 화면이다. 다른 서비스로 이동할 수 있는 상단 메뉴, 한 서비스 내에서 이동할 수 있도록 한 좌측 메뉴, 화면 데이터를 조작할 수 있는 버튼요소, 그리고 데이터 화면이 배경색과 간단한 테두리고 명확히 구분되어 있다. 많은 요소가 있지만 이렇게 잘 구분해 놓음으로써 사용자 실수를 방지하고 직관성을 높혀 준다.
    여기서 버튼 요소들이 왼쪽 정렬되어 있는데, 마우스 동선을 고려한 것을 눈여겨 보자.
  2. 공간적인 제약에서 탈피. (Free to Spatial constraints)
    사용 디바이스가 정해져 있는 소프트웨어를 제외하고 대부분의 UI사용자들은 다양한 환경에서 서비스를 이용하게 된다. 모두가 1920 x 1080 해상도로 접했으면 좋겠지만, 실제 회사에서 1024 x 800 해상도를 접하게 되는 경우도 많다고들 한다. 이 사용자들도 소프트웨어를 불편하지 않게 사용할 수 있도록 작업화면을 충분히 확보해 주는 것이 중요하다. 메뉴가 있다면 메뉴를 숨길 수 있게 하거나, 상단 메뉴를 충분히 좁게 디자인해 주는 것이 좋다. 어플리케이션인 경우 태블릿과 앱을 반응형 하나로 디자인하기 보다는 각각에 맞도록 따로 디자인 하는 것을 추천한다.
  3. 시스템으로의 쉬운 접근성. (Easy Access to system) :
    시스템으로 접근과 관련된 가치 중 초기사용자를 위한 배려도 중요한 부분을 차지한다. 화면#3을 보면 소프트웨어 설치 후, 구성에 관한 간단한 설명 페이지가 출력 된다. 이 설명 페이지를 넣어 줌으로써 사용자가 새로운 소프트웨어를 접했을 때의 답답함을 어느 정도 해소 할 수 있으며, 실제 화면 내에서 가이드에 관련된 요소를 제거하여 화면을 더 심플하게 구성할 수 있다.
  4. 업무에 대한 동기를 부여. (Motivative workplace) :
    어떤 페이지에 들어왔을 때 빈 페이지가 펼쳐져 있다면 도대체 뭘 해야 할지 난감할 것이다. 하지만 내가 봐야 하는 정보와 어떻게 처리할 수 있는지 직관적으로 설명된다면, 좋은 소프트웨어라 할 수 있겠다. 어떤 해야 할 업무를 충분히 강조하고, 업무가 끝났는지 확실히 피드백하고, 업무를 끝나면 끝난 상태로 표시해 주자. 이러한 일련의 작업들이 페이지에 머무는 시간을 줄여줄 것이다. (화면#4)
  5. 고유한 아이덴티티의 일관된 반영. (unique identity) :
    제품에는 고유의 브랜딩이 있다. 브랜딩을 통한 컬러, 형태, 패턴 등을 일관적으로 반영한다. 하지만 요소들의 적용 과정에서 적용 범위와 형태 사이에서 많은 사람들과 부딛힐 수 있다. 하지만 프로젝트 중간에 브랜딩이 변하는 일이 있지 않도록 충분히 팀원과 공감하고 시안을 검토하는 작업을 해야 한다.
화면 #3

위에 언급한 것들이 어떻게 보면 너무 당연할 수 있다. 이런 당연한 것을 어떻게 구현해 낼 것인가가 관건이다. 회사는 트랜디한 디자인에 목매는 불란만 만드는 디자이너보다는 기본에 충실하고, 서포트를 확실히 해줄 수 있는 디자이너를 원하며, 팀웤이 좋고, 커뮤니케이션이 잘 된다고 평가한다. UI디자인도 다른 디자인과 같이 정답은 없다. 많은 예시를 접하고, 정리해두고, 필요할 때 꺼내 쓸 수 있도록 하는 것이 경쟁력을 키우는 첫걸음이 되지 않을까 생각한다.

마지막으로 덧붙이자면 코딩은 꼭 배우라고 말하고 싶다. 코딩을 완벽히 마스터하라는 뜻은 아니다. 코딩으로 개발할 정도가 아니라도 어떻게 개발되는지 개발 공정 정도는 이해하고 있어야 한다는 뜻이다. 개발자와 대화할 때 코딩에 대한 공감 없이 대화하는 것은 대화를 진행하기 힘들 정도다.

You May Also Like: Insights from Leading Design Thinkers