'즐거운 교류'에 해당하는 글 5건

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
작년에 진행했던 프로젝트에는 여러 기술적 토론이 있었습니다. 그 중 인상 깊었던 토론 하나는 특정 문제의 해결을 위해 웹워크(Webwork)에 있는 기능을 쓸 것인지 아니면 그냥 POJO를 이용하여 해결할지에 대한 토론이였습니다. 이 토론은 깊히 생각해볼만한 흥미로운 요소를 많이 가지고 있었기에 토론 자체에 대해 자세히 적어보는 것도 의미가 있다고 생각합니다. 하지만 저는 이번 글에서 이 문제를 좀 더 일반화시켜 이야기해보고자 합니다.

사용자 삽입 이미지

#그림1. 레이어의 성질

여러 층으로 구성되어 있는 레이어를 생각해볼 때 하위 레이어로 향할수록 '일반성'을 가지며 상위 레이어로 향할수록 '구체성'을 가지는 것을 볼 수 있습니다. 일반성을 가진다는 것은 해당 레이어가 보다 넓은 영역에서 사용될 수 있다는 것을 뜻합니다. 예를 들어 웹워크보다는 그 하위 레이어라 할 수 있는 자바 API가 보다 넓은 영역에서 사용될 수 있다는 점을 생각해볼 수 있습니다. 반대로 구체성을 가진다는 것은 해당 레이어가 자신이 다루는 영역에 대한 전문성을 가질 수 있다는 것을 뜻합니다. 위에 예를 다시 이용해보자면, 웹워크는 몇 가지 영역에서만큼은 자바 API 보다 전문성을 가집니다. 이것은 해당 영역에 관련한 부분을 개발하는데에 있어선 자바 API를 직접 이용하여 개발하는 것보다 웹워크에서 제공하는 API를 사용하는 것이 생산성이나 품질면에서 더 좋을 수 있다는 것을 뜻합니다.

그렇다면 우리는 문제 해결을 위해 항상 적당한 상위 레이어를 찾아서 써야 하는 걸까요? 이 질문을 좀더 구체적으로 표현하자면 이런 질문이 될수 있을 것입니다. "자바 개발을 할 때 최대한 프레임워크를 많이 사용해야 하나요?" "윈도우 개발을 할 때 최대한 컴포넌트를 이용하는 게 옳을까요?" 저는 이러한 질문에 대한 답변을 위해 아래 세 가지 측면을 생각해보고자 합니다.

첫번째는 무게입니다. 레이어가 갖는 무게는 아래와 같이 표현해볼 수 있을 것 같습니다.
n = 레이어의 레벨. 높을수록 상위 혹은 응용 레벨, 예를 들어 어떤 자바 프레임워크의 레벨이 5라면 그 프레임워크가 의존하는 자바 API는 4라 할 수 있다.

레이어(n)의 의존자 ⊂ 레이어(n - 1)의 의존자
따라서
레이어(n)의 의존자 수 ≤ 레이어(n - 1)의 의존자 수

∞ 레어어의 무게 = 의존자 수
위 정의에 따라 의존자를 많이 가지는, 즉 보다 하위에 존재하는 레이어가 상위 레이어와 비교하여 무게가 더 많이 나간다고 볼 수 있습니다. 또한 무게가 많이 나간다는 것은 그만큼 변화의 가능성이 적다는 것으로 볼 수 있습니다. 예를 들어 자바 기반에서 개발을 할 때 자바 기반 자체를 바꾸는 일은 왠만하면 없습니다. 반면에 자바 위에 올라가는 프레임워크는 자주 바뀝니다. 이러한 개발 현장의 모습은 우리가 보다 하위 레이어에 의존할 때 변화에 대한 안정성을 보다 확보할 수 있다는 것을 보여줍니다.

두번째는 유용성입니다. 상위 레이어는 해당 레이어가 지원할 수 있다고 하는 모든 상황에서 유용할까요? 저는 아니라고 생각합니다. 보통 상위 레이어는 특정 영역에 대한 구체성을 가지면서도 그 안에서 최대한의 범용성을 추구합니다. 이 범용성은 해당 상위 레이어가 널리 사용되려면 반드시 가져야 하는 필수적인 성질입니다. 그렇지만 이러한 범용성 때문에 우리가 만나는 구체적이고 다양한 상황에 대해서는 미흡함을 줄 때도 있습니다. 즉 문제에 대한 해결책은 제공하지만 그것이 지금 상황에 딱 들어 맞지는 않는 것입니다. 이것은 마치 몸에 맞지 않는 옷을 입은 것과 흡사하다 볼 수 있습니다. 비록 원래 목적인 몸을 가리는 것에는 성공했지만 보기 좋지 않고 불편한 것입니다.

세번째는 학습 비용입니다. 보통 특정 문제를 해결하기 위한 적합한 상위 레이어가 존재하더라도 그 레이어를 이용하기 위해서는 학습이 필요합니다. 학습에는 시간이라는 비용이 필요합니다.

혹시 현재 환경에서 변화를 최소화 하는 것이 가장 중요한가요? 그렇다면 보다 하위 레이어에 의존하여 개발을 하는 것이 현명할 것입니다. 빠른 개발이 필요한가요? 그렇다면 상위 레이어의 유용성과 학습 비용을 고려하여 적절한 상위 레이어를 선정하고 사용하는 것이 도움이 될 것입니다. 또 다른 경우로 유용성은 있어보이나 학습 비용이 너무 많이 드는 경우도 생각해볼 수 있습니다. 이럴 때는 각각이 주는 가치의 무게를 신중히 비교해보는 것이 도움이 될 것입니다. 만약 유용성에 비해 학습 비용이 지나치게 많이 든다면 하위 레이어를, 학습 비용이 많이 듬에도 불구하고 더 많은 유용성을 준다면 상위 레이어를 선택할 수 있을 것입니다.

결론적으로 앞서 던졌던 질문인 "우리는 문제 해결을 위해 항상 적당한 상위 레이어를 찾아서 써야 하는 걸까요?"에 대한 저의 대답은 "아니다" 입니다. 그것보다는 위에서 얘기했던 것처럼 세 가지 요소를 상황에 맞게 잘 고려한 후 의존할 곳을 신중히 선택하는 것이 현명한 결정이라 생각합니다.

2007/11/29 ~ 2008/07/16

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
자바지기님 블로그의 "변화를 막을 수 없다면 변화에 빠르게 대응할 수 있는 방법을 찾아라.."라는 글에 대한 제 의견입니다.
세상에는 실용적이지도 않고 사람을 괴롭게 하는 지침이나 해결책들이 많습니다. 이러한 지침이나 해결책을 가만히 살펴보면 공통점을 가지고 있는 경우가 많습니다. 그 공통점이란 '인간의 불완전성'을 충분히 고려치 않았다는 점입니다.

인간의 불완전성에 대한 정의는 매우 어려워 보입니다. 대신 아래 내용이 인간의 불완전성을 잘 보여주는 예가 될 수 있다고 생각합니다.
- 인간의 생각은 많은 오류를 가지고 있다.
- 인간이 미래를 예측하는 것은 매우 어렵다.
- 인간은 복잡한 것을 다루는 것에 취약하다.

이런 점에서 "변화를 막을 수 없다면 변화에 빠르게 대응할 수 있는 방법을 찾아라"는 매우 지혜로운 전략이라 생각합니다. "변화를 막을 수 없다"라고 말하는 것은 인간의 불완전성에 대한 인정을 내포하고 있습니다. 이렇게 인정을 하게 되면 우리는 탄탄한 기반을 얻을 수 있습니다. 그것은 '인간의 불완전성 인정'이라는 기반입니다. 이 기반 위에서 우리는 양질의 지침이나 해결책을 만들 수 있을 것이며, 이것들은 실용적이며 사람을 괴롭히지도 않을 것입니다.

2007/11/27 ~ 2008/05/09

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
아는 사람들의 블로그를 돌아다니다 보니  "블로그를 좀 하다 보니"라는 글이 눈에 띄었습니다. 내용은 인간적인 맛이 살아 있는 글을 써야하나라는 고민인데요. 저도 같은 고민을 저도 하고 있습니다. 방금전에도요.

처음 블로그를 만들 때 경계해야 한다고 생각했던 것은 블로그에서 개인 감정 표현을 하는 것이였습니다. 제 개인의 감정을 담은 글들은 쓸 때 제 마음이 편할지는 모르겠지만, 글을 읽는 사람들에게는 도움이 안 될 것이라 생각했습니다.

그런데 블로그 운영을 하다보니 때로는 답답하고 속시원히 한번 고함을 질러보고 싶을 때가 많습니다. 최근에는 어떤 주제에 대해 고함을 한번 지르고 싶어 글을 몇번이나 썼다가 지웠는지 모르겠습니다.

그런데 여전히 결론은 참자입니다. 지금까지 운영해온 원칙이 있기 때문에 일관성 때문이라도 참아야 할 것 같습니다. 일관성이 깨짐으로 인해 큰 일이 벌어지진 않을 것 같지만 저는 일관성이 깨지는게 무척 싫네요.

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,

제약과 자유

즐거운 교류 2008. 3. 12. 10:13
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
거칠마루님이 쓰신 "어느 scheme 책 서문에 나오는 프로그래밍 언어에 대한 말"에 대한 답글입니다.

원글을 보고나서 바로 찾아본 글이 있습니다. 바로 해커와 화가에 나왔던 '안전벨트 혹은 수갑?'이란 글입니다. 이 글은 동적 타입 체크와 정적 타입 체크에 대해서 다룬 글인데요, 해당 글에 마지막 부분에서 저자인 폴 그레이엄은 다소 애매한 결론을 내립니다. 그 결론이란 각각은 장단점이 있으며 (엄청난 엘리트인)본인은 동적 타입 체크를 좋아하지만 다른 똑똑한 친구들은 정적 타입 체크를 좋아한다는 것입니다.

저는 개인적으로 정적 타입 체크를 좋아합니다. 프로그래밍을 할 때의 정적 타입 체크는 제 머리속에서 만들어내는 수많은 오류를 재빨리 막아주는 역활을 합니다. 비슷한 맥락에서 저는 회사의 출근시간도 좋아합니다. 회사의 출근시간은 제가 적절한 시간에 잠을 자고 깰 수 있게 도와줍니다. 저는 이렇듯 제약이라 할 수 있는 것들을 무척이나 좋게 생각합니다. 제약은 저에게 일정한 틀을 제공하며, 저는 그 틀 안에서 최소한의 균형을 갖고 살 수 있기 때문입니다.

그런데 천재성과 예술적인 감각을 가지고 계신 분들은 제약을 못견디는 것 같습니다. 예를 들어 소설 달과 6펜스에서 등장하는 천재 화가 풀 고갱은 현실적인 제약이라 할 수 있는 직장과 가정을 버리고 자유를 찾아 떠납니다. 그리고 예술 작품을 만들어내죠. 또한 실제로 주위를 둘러 볼 때, 천재성과 예술적인 감각이 있어보이는 똑똑한 동료 개발자들이 사회나 회사로부터 오는 제약으로 인해 괴로워하는 것을 자주 목격할 수 있었습니다.

이런 것들을 종합해볼 때 천재성과 예술적인 감각이 있는 사람들에게는 '자유'가, 저 같은 보통 사람들에게는 '제약'이 어울리는 것 같습니다. 그동안의 주류언어들이 대게 정적 타입 체크를 지원해왔다는 사실은 이러한 생각을 뒷받침 하는 근거로도 볼 수 있을 것 같습니다. 주류언어라는 것은 결국 보통 사람들이 선호하는 언어라 볼 수 있기 때문입니다.

2007/03/06 ~ 2007/03/12

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
오늘 올블로그 추천 RSS에서 정말, 그 정신에 면세점 갔다온거야? "대단하다!" 라는 글을 받아 보았습니다. 개인의 아무 근거없는 추측을 바탕으로 이번에 귀국한 피랍자들을 비난하는 당황스런 글이였습니다.

그런데 글도 글이지만 이 글을 버젓히 추천 글로 등록한 올블로그측(올블로그의 추천은 사람들의 추천에 의해 글이 올라오는 시스템이라고 합니다)이 더욱 당황스럽게 느껴졌습니다.

올블로그측에 묻고 싶습니다. 도대체 글을 추천하는 기준이 무엇입니까? 혹시 흔히 우리가 찌라시라고 비하하는 언론처럼 자극적이어서 많은 PV를 유도할 수 있는 글을 추천하는건가요?

올블로그에서 하루에 10개씩 글을 추천하는 것 같은데, 이런 글을 추천하려면 차라리 추천을 안 하는게 좋을 것 같습니다. 앞으로 올블로그가 블로그 언론으로써 제대로 발전하려면 이런 수준이하의 운영은 없어야 할 것 입니다. 오늘 올블로그에 대해서 크게 실망했습니다.

2007/09/03일 15시 추가 : 글 쓸 당시에 추천을 올블로그에서 하는거라고 생각하고 글을 썼습니다만, 덧글을 통해 다른 분들 얘기를 들어보니 추천이 많이 된 글이 올라오는 구조인 것 같습니다. 제대로 모르고 이런 글을 써서 올블로그에 죄송하고 스스로는 민망하기도 합니다. 하지만 저는 여전히 이런 글이 추천글로 버젓히 올라올 수 있는 구조는 잘못되었다고 생각합니다. 올블로그에서 이런 부분에 대해 좀더 고민을 해주시면 좀더 긍정적인 환경을 만들어 나갈 수 있을 것이라 생각합니다.

WRITTEN BY
차민창
르세상스 엔지니어가 사회를 이끌어나가는 상상을 하며!

,