brunch

You can make anything
by writing

C.S.Lewis

by 김의선 Aug 27. 2022

훌륭한 소프트웨어의 조건


맥스 카넷 알렉산더의 저서 '심플 소프트웨어'에 따르면 훌륭한 소프트웨어의 조건은 3가지가 있다.

이번 글에서는 이 3가지의 조건을 소개하고자 한다.


사용자의 명령을 정확하게 따른다.

사용자가 예상한 대로 작동한다.

사용자의 의도 전달을 막지 않는다.


사용자의 명령을 정확하게 따른다.


훌륭한 프로그램의 가장 기본적인 조건은 사용자의 명령을 정확하게 수행해야 한다는 것이다. 명령 이외에 다른 기능이 작동해서는 안 된다. 사용자가 이메일 전송 버튼을 눌렀을 때 메일을 보내야 하고, 수정 버튼을 눌렀을 때 수정되어야 한다. 사용자가 시킨 대로 작동하지 않으면 그 근본 원인이 어디에 존재하느냐와 상관없이 사용자에게 나쁜 평가를 받게 된다.


난 항상 이 문구를 볼 때마다 라이온에어 610편 추락사고를 떠올리게 된다. 

이 사고는 수동 조종 상태에서 특정 상황을 가정하여 실속 하는 케이스를 우려하여 만든 MCAS라는 소프트웨어 기능으로부터 비롯되었는데, 사용자의 명령과 상관없이 기체 내 컴퓨터가 자동적으로 기수를 아래로 내리도록 만들며, 정상 상태를 회복할 때까지 이 동작을 반복하게 된다.(결국 조종사는 끝까지 원인을 찾지 못했고 기체는 추락, 탑승자는 전원 사망했다.)


아무리 안전운행에 도움이 되게끔 만든 소프트웨어라 하더라도, 사용자의 명령을 따르지 않는 소프트웨어는 쓸모가 없음을 말해준다. 애초에 아무리 보조적인 도움 수단이라도 수동모드에서는 조종사의 명령이 우선이 되었어야 하지 않았을까?



당시 사고기인 라이언에어의 737-max기종. 


사용자가 예상한 대로 작동한다.

사용자가 예상한 대로 작동해야 한다는 것은 사용자의 의도에 따라 움직여야 한다는 뜻이다. 또한 사용자가 완료 버튼을 눌렀을 때 완료되어야 하고, 종료 버튼을 눌렀을 때 정상적으로 종료되어야 한다는 뜻이다.


일반적으로 훌륭한 소프트웨어라면 사용자가 설명서를 읽지 않고도 편하게 사용할 수 있어야 한다. 우리가 아이폰의 iOS를 훌륭한 소프트웨어라고 생각하는 이유도 여기에 있다. 우리는 설명서를 읽지 않고도 아이폰 기능의 대부분을 조작할 수 있다. (스마트폰 초창기 삼성의 스마트폰을 사용했던 사람은 제품에 같이 들어있던 두꺼운 설명서를 기억할 것이다.) 


게다가 아이폰이 훌륭한 이유는 '이렇게 하면 이렇게 작동할 것 같은데'라고 기대하고 명령하면 거의 대부분 그대로 작동한다는 데에 있다. 절대로 의도치 않은 기능이 작동할 거라고 걱정할 필요가 없다. 하지만 우리는 생각보다 많은 제품에서 원하는 대로 기능을 작동시키기 위해서 매뉴얼을 정독하거나 인터넷을 검색해야 하는 경우가 많다. 


간혹 이 원칙이 '사용자의 명령을 정확하게 따른다'와 상충될 때가 있는데, 그럴 때는 언제나 사용자가 시킨 대로 해야 한다는 원칙이 우선이다. 프로그램은 사용자를 위해 존재한다는 것을 기억해야 한다.



사용자의 의도 전달을 막지 않는다.

사용자가 본인의 의도를 최대한 쉽게 전달할 수 있게 하라는 뜻이다. 다시 말하면 간편한 인터페이스 정도 되겠다. 사용법이 최대한 심플해야 한다는 뜻도 된다. 


이에 대한 가장 훌륭한 예시가 되는 프로그램은 메모장이다. 컴퓨터를 처음 접하는 사람도, 20년 이상 경력의 프로그래머도 메모장 프로그램은 쓴다. 사용법이 단순하고 원하는 '메모'라는 목적을 정확하게 달성하게 해 주기 때문이다. 메모장의 기능은 단순하다. 메모를 할 수 있으면 된다. 그 외에 기능은 부가적인 기능일 뿐이다. 그 주변 기능이 메모장의 핵심 기능인 메모를 방해해서는 안 된다. 


사용자가 시키지도 않은 일을 하는 소프트웨어는 단순하지도 훌륭하지도 않다. 



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari