프로그래머도 다르지 않다, 단순한 UI가 필요하다
며칠째 API 두어 개를 제대로 만드는 데 매달리고 있습니다. 모듈에 관한 API와 새로운 Redis 자료형에 대한 것들입니다. API 때문에 *며칠*을 쓰고 있다고 하면 정말 말 그대로 며칠이라는 뜻입니다. 초안을 쓰고, 자료구조와 호출 방식을 잡아 구현을 시작했다가, 설계를 개선하고 사용자에게 노출되는 부분을 더 좋게 만들기 위해 다시 처음부터 갈아엎고 더 나은 방식으로 반복하는 일을 계속하고 있습니다.
왜 그렇게까지 하면서 기능 출시를 몇 주씩 미루는 걸까요? 정말 그렇게 중요한 일일까요? 프로그래머는 엔지니어이니, 어쩌면 그냥 시스템을 만드는 쪽에서 내보내기 편한 API에 맞춰 적응하면 되는 것 아닐까요?
굳이 이런 수사적 질문에 답해야 할까요? 오늘날에는 더 이상 그럴 필요가 없습니다. 그 자체로 큰 진전입니다.
이제는 모두가 당연하게 받아들이고 있다고 전제하고 싶습니다. 프로그래머에게도 사용자 인터페이스가 있고, 그 인터페이스가 시스템을 바라보는 관점 자체를 완전히 바꿔놓을 만큼 중요하다는 사실을 말입니다. 데이터베이스 질의 언어, 라이브러리 호출, 프로그래밍 언어, 유닉스 커맨드라인 도구는 모두 사용자 인터페이스라는 측면을 가지고 있습니다. 매일 사용하는 사람에게는 그 어떤 것보다 바로 그 인터페이스가 UI입니다.
그렇다면 이게 다 잘 알려진 사실인데 왜 굳이 이 글을 쓰고 있는 걸까요? 그래픽 UI에서뿐 아니라 프로그래머를 위해 설계된 UI에서도 단순함이라는 개념이 얼마나 중요한지를 강조하고 싶기 때문입니다. 단순한 UI 해법을 찾기 위해 몇 번이고 반복하는 일은 완벽주의가 아니고, 헛된 자기만족도 아닙니다. 그것은 디자인 공간을 탐험하는 일에 가깝습니다. 때로 그 공간은 어마어마하게 넓어서, 아주 작은 차이가 큰 결과를 만들기도 하고, 큰 변화를 통해 관점 자체가 완전히 바뀌기도 합니다. 따라야 할 규칙 같은 것은 없고, 의지할 것은 자신의 감각뿐입니다. 물론 좋은 관행들은 있습니다. 하지만 항해해야 할 바다가 디자인이라는 *공간*일 때, 그런 관행이 좋은 나침반이 되어주지는 못합니다.
그렇다면 왜 프로그래머에게 잘 만들어지고 단순한 UI라는 특권을 주어야 할까요? 물론 잘 만들어져 다루기 편하고 딱 *맞는* 느낌을 주는 무언가를 사용할 때의 즐거움도 있습니다. 하지만 더 본질적인 이유가 있습니다. M4 매크로로 Sendmail을 설정하는 법을 배우거나 Apache 가상 호스트 설정과 씨름하는 것은 진짜 지식이 아닙니다. 그런 시스템이 언젠가 더 이상 쓰이지 않게 되면, 손에, 아니 정확히는 머릿속에 무엇이 남을까요? 아무것도 남지 않습니다. 그것은 일회성 지식입니다. 미량 영양소 없이 빈 칼로리만 가득한 정크 푸드와 같습니다.
프로그래머에게 미량 영양소는 수십 년을 가는 아이디어이지, 일회성 정크가 아닙니다. 저는 정크를 내놓고 싶지 않기에 출시하기 전에 계속 설계를 다듬을 것입니다. 여러분도 정크를 받아들여서는 안 됩니다. 여러분의 뇌는 보편적인 개념을 배우는 데 쓰는 것이 더 가치 있습니다. 물론 어느 정도는 피할 수 없습니다. 어떤 시스템이든 사용하려면 배워야 하는 비범용적인 부분이 있기 마련입니다. 그렇다면 적어도 그 일회적인 부분이라도 단순하게 만들고, 가능하다면 쓰기조차 즐거운 무언가로 만들어 봅시다.
글을 무작위로 읽기