Ari 님의 블로그에서 꽤 전에 봤던 글인데, 생각난 김에 트랙백을 달기로 했다.
*
클래스는 공처럼 만들라.
내가 그 망할(...) 기숙사 관리 프로그램을 만들면서 가장 고생했던 것이 바로 클래스였다. v1.0에서 자료 구조를 표현하는 클래스들을 너무 딱딱하게 설계하는 바람에 개발 도중 선생님이 추가 요구를 하실 때마다 전면적인 수정이 이루어지지 않으면 안 되었다.
물론, Visual Basic이 상속이 불가능하다는 결정적인 태생적 한계가 있었던 것도 한 몫 했지만(Collection의 extended wrapper인 Collection2 개체를 상속받아 여러 클래스를 만들어야 하는데 그게 불가능하니 일일이 코드를 복사해서...-_-), 애초에 설계를 깊게 하지 않았던 탓도 있었다.
그전까지는, 내가 개인적인 필요나 흥미에 의해 프로그램을 만들었고 규모도 크지 않았었다. 그냥 생각나는 대로 만들면 별다른 버그 없이 잘 돌아갔고 원하는 기능이 구현되었다.
그러나 기숙사 관리 프로그램과 같이 실제적으로 이용되는 것을 만들려고 보니까 참으로 고려해야 할 것이 많았다. IE의 WebBrowser 컨트롤을 잘 구워삶아 인터페이스만 화려하게 바꾸는 정도에서 갑자기 대형 프로그램으로 전환했으니 갑자기 내 용량 한계를 넘어선 것은 당연하다고 볼 수 있겠다.
사실 그건 나 혼자 개발했기 때문에 ari 님의 비유와는 상황이 조금 다르다. 클래스를 만드는 것도 나요, 클래스를 사용하는 것도 나였기 때문이다. 그럼에도 불구하고, 내가 만든 클래스를 내가 이용하기가 왜 그리도 불편하던지...
가장 단순한 인터페이스. 생각해 보면 그것이 가장 사용하기 편하다. 그리고 프로그래밍의 효율을 높여준다.
*
가장 단순한 인터페이스, 이것은 프로그래밍뿐만 아니라 User Interface의 개념이 적용될 수 있는 모든 것ㅡ각종 산업 제품들에 이르기까지 모두 적용된다.
요즘에 나오는 핸드폰들은 얼마나 많은 기능을 가지고 있는가? 전화 통화와 문자 메시지는 이미 석기 시대적 이야기이고 디지털 카메라, mp3, 무선인터넷, 사진 앨범... 점점 더 많은 기능이 조그마한 휴대 전화 속으로 들어가고 있다.
기술이 더욱 발전하면, 한 10년 쯤 후에는 내가 지금 노트북으로 할 수 있는 것들을 핸드폰으로 들고 다니며 할 수 있을지도 모를 일이다.
너무 많은 기능이 탑재되면서 오히려 그에 적응하지 못하는 사람들도 있고 불필요하게 느끼는 사람들도 있다. 그런데 대부분의 제품들이 그런 방향으로 가니 어쩔 수 없이 쓰지도 않는 기능들이 들어간 제품을 사야 한다.
핸드폰이 우리에게 필요한 이유가 무엇인가? 그 점에 더 집중해서 제품을 만들었으면 좋겠다. 모든 핸드폰이 모든 기능을 통합하려고 하는 것보다는, 일부는 그렇게 가고, 또 일부는 mp3 기능을 강화하고, 일부는 무선인터넷 기능을 강화하는 등 좀더 각각이 특화되었으면 하는 개인적인 바람이다.
하나의 기기로 모든 사람의 입맛을 맞추려고 하는 것은 더욱 복잡한 인터페이스를 낳을 뿐이다. 핸드폰 UI 설계가 그래서 어렵다고 했던가.
다음을 다시 음미해 보자.
클래스를 만들 때 사용하는 사람이 마음에 드는 걸로 골라 쓸 수 있게 비슷한 용도의 함수를 여러개 만들거나, 혹은 함수의 인자를 추가해서 다양한 방식으로 동작하게 만드는 것을 그 클래스의 사용자를 위한 것이라 착각해선 안된다. 정말 사용자가 원하는 것은 가능한 적은 멤버 함수에 적은 인자 갯수이다. 고무공에는 어떠한 스위치도 달려있지 않지만 그 자체로 완벽한 인터페이스를 가지고 있다. 고무공에 뭔가 조절하기 위한 스위치가 없다고 불만을 가지는 사람은 아무도 없다.
그리고, 가장 단순한 인터페이스는, 마치 고무공과 유리 시계의 비유처럼, 더 내구성을 높이기 쉬워진다.
고무공은 3살짜리 어린아이라도 일단 손에 잡고 던지고 그것이 튕기는 것을 보면 그 물체가 뭔지 파악할 수 있다. 그리고, 신나게 벽에 던지면서 놀 수 있다. 게다가 아무리 벽에 던져대도, 벽은 고무공으로 인해 조금의 상처도 남지 않는다. 하지만, 유리 시계는 어딘가에 던졌다간 시계도 깨지고 그 대상에도 상처가 남고, 또 깨진 시계 조각을 밟으면 발에도 상처가 남는다.
너무 복잡해지기만 하는 세상. 그럴수록 세상은 점점 적응력과 유연성이 떨어지고 약해진다. 문명이 진화하면 재난도 진화한다고 한다. 어쩌면, 아이작 아시모프의 <파운데이션>에 나오는 은하제국의 몰락도 그와 같은 맥락일 수 있다.