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