Search

'software'에 해당되는 글 2건

  1. 2011.10.14 성당과 시장 2
  2. 2011.10.14 내가 프레임워크를 싫어하는 이유

성당과 시장

Open Source / Free Software 2011. 10. 14. 13:27 Posted by 알 수 없는 사용자
Eric Raymond가 쓴 글로 open source에 대한 자신의 생각을 쓴 좋은 글이다. 대학교 3학년 때쯤 읽었으니 거의 10년만에 다시 한 번 읽게 됐다. 다시 읽으면서 역시 좋은 글이라는 것을 또 한 번 느꼈고 일부 맘에 와닿는 내용을 정리했다. 번역된 글이 있으니 읽어보는 것도 좋겠다.

쌍따옴표로 묶인 것은 원문의 표현을 거의 그대로 가져온 것이고, 나머지는 내 생각대로 적은 것이다.

- "좋은 소프트웨어는 개인의 가려운 곳을 긁는 것으로 시작한다."
필요한 것을 만들게 되면 남도 그것을 필요로 하는 경우가 있다. 그게 상당히 일반적인 성질의 것이라면 프로그램은 인기를 얻을 수 있다. 이건 상업용 프로그램(혹은 성당 스타일의 프로그램)과 크게 차별성을 가지지는 않는다고 생각한다. 상업용 프로그램도 모두 다른 사람이 필요로 하고 있다고 파악하고 제작하는 것이니까.

- "좋은 프로그래머는 어떤 프로그램을 만들어야 할 지 알고, 훌륭한 프로그래머는 어떤 프로그램을 다시 만들어야 할 지 안다."
기존 프로그램을 재사용 할 줄 알아야 한다는 이야기다. 모든 것을 혼자 다 다시 만드는 것은 바보같은 짓이 아닌가.

- "개발자들에 대한 빠른 피드백, 그 방법은 잦은 발표(release)"
개발자들이 성취감을 느낄 수 있도록 해준다. 자주 발표될 때마다 내가 기여한 코드가 mainstream에 반영되면 기쁨을 느낄 수 있을 것이다. 어딘가 기여했다는 느낌. 그 프로젝트에 소속되었다는 느낌. 또한 빨리 수정하고 빨리 발표하면 그만큼 디버깅에 중복이 발생하지 않는다. 남이 고친 것을 내가 고칠 필요는 없으니까.

- "누군가에게는 간단할 것이다."
내게는 어려운 문제라도 다른 어떤 사람에게는 간단한 문제일 수 있다. 문제 해결의 속도가 상당히 빨라질 수 있다는 거다. 훈수가 좋은 비유가 될 듯.

- 리누스 토발즈 왈, "문제를 발견하는 사람과 이해하는 사람이 동일할 필요가 없다."
문제(버그)를 발견하는 것이 더 중요하다고 토발즈는 말했다. 하지만 사실 둘 다 중요하다고 본다.
여튼 여기서 말하고자 하는 것은 발견을 잘 하는 사람이 해결을 잘 할 필요는 없다는 것. <좋은 테스터 = 좋은 개발자>일 필요가 없다는 것이다. 오픈 소스 정책을 취하게 되면 수많은 테스터와 수많은 개발자를 내편으로 만들 수 있다. 베타 테스터를 품는 것이 중요하다. 정말로 열정적으로 헌신해 주는 사람들이 있다. 적극적으로 베타 테스터와 소통하고, 리스트에 사람들을 포함시키고 릴리즈가 있을 때마다 발표하고 의견을 듣고 버그 리포트도 받고 소스에 대한 수정본을 보내주는 사람이 있으면 적극적으로 검토하고 취하자. 이렇게 하다보면 베타 테스터 리스트에서 점점 사람들이 빠져나가는 현상이 발생한다고 하는데, 그 이유는 '잘 동작하니 더 이상 듣고 싶지 않다'란다. 이 때쯤 되면 "베타"딱지를 뗄 수 있는 것이 아닐까.

- 사회학에서의 델파이 효과: "비슷하게 전문적인 (혹은 비슷하게 무지한) 관찰자들로 이루어진 대중의 평균적인 의견이 그 관찰자 중 무작위로 뽑은 한 명의 의견보다 더 신뢰할 만하다."
전체의 의견이 그리 바보같지는 않다는 것. 집단 지성이 그리 나쁜 결과로 이어지지는 않는다는 것. 리눅스와 위키피디아를 통해 증명되었다고 생각한다.

- "널리 사용되는 프로그램의 유지, 보수에 들어가는 비용은 40퍼센트 혹은 그 이상이다. 놀랍게도 사용자 수에 큰 영향을 받는다. 사용자가 많을 수록 유지 보수에 더 많은 비용이 들어간다는 것."
왜? 더 많은 사용자가 더 많은 버그를 찾아내기 때문이다. 더 많이 사용되는 윈도우에서 더 많은 취약점이 발견되고 더 많은 악성코드가 제작된다. 윈도우 자체의 보안 결함은 논외로 하자. 더 많은 보안 이슈가 발생하는 건 그만큼 많은 사용자가 있어서 그렇다는 것을 다들 인정할 거다.

- 많은 사용자가 있고 그들과 소통하면  좋은 아이디어를 얻게 되는 경우도 있다. 때로는 그것이 천금같은 것일 수도 있다.
일반 사용자와 오픈 소스에서의 참여자는 다르다. 참여하는 사람들은 그 프로젝트에 소속감을 가지고 있다. 좋은 아이디어가 떠오르면 제공할 의사가 더 많다는 의미도 된다.

- 생택쥐베리 왈: "(설계에 있어서) 완벽함이란 더 이상 추가할 것이 없을 때 이루어지는 것이 아니라 더 이상 버릴 것이 없을 때 이루어진다. (Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away)"
그냥 멋진 말.

- open source project의 leader는 사회성이 좋아야 된다.
어쩔 수 없는 것이다. 어디서든 리더가 되려면 그럴 수밖에. 유시민님의 강연에서 이런 말을 들은 적이 있다. 리더는 두 가지 중 하나를 갖춰야 한다. 엄청 똑똑하거나, 인간적으로 존경스럽거나. 각각 너무 똑똑하니 배신하면 걸리겠지, 이렇게 좋은 분을 내가 배신할 수는 없어라고 생각해서 그렇단다. 재밌는 이야기다. 사실 대규모 open source project의 leader가 되려면 둘 다 갖춰야 할 것 같다. 아무나 못하는 것은 확실하다.

내가 프레임워크를 싫어하는 이유

번역 2011. 10. 14. 11:09 Posted by 알 수 없는 사용자
글이 너무 재밌어서 번역해본다. 너무 심각하게 읽을 필요는 없다. 이 글을 쓴 사람도 프레임워크에 대한 비난을 하기 보단 개천을 건너기 위해 배를 건조하는 일은 없도록 하자는 정도로 이렇게 표현했다고 본다. 즐거운 유머로 받아들이면 될 듯. 글 중간중간에 역주를 달고 싶은 유혹이 무척 많았지만 오히려 글을 망치는 것 같아 관뒀다. 그리고 영어를 읽을 수 있다면 가급적 원문을 읽으시길 권한다. 자연스럽게 읽히도록 하다 보니 직역을 하진 않았다. 번역문 시작!

제목: 내가 프레임워크를 싫어하는 이유

요즘 자바 웹 어플리케이션을 만들어보려고 계획하는 중이다. (어쩔 수 없다. 자바여야 한다. 여러가지 이유가 있는데 지금 설명하고 싶진 않다) 여튼 만들려고 하다보니, J2EE 포틀릿이 가능하고 JSR을 준수하는 MVC 롤 기반의 CMS 웹 서비스 어플리케이션 컨테이너 프레임워크를 몇 개 살펴보게 되었다.

각 프레임워크에 대한 문서를 수십시간 읽고났더니 눈이 빠지려 한다.

양념통 선반을 만들기로 했다고 상상해보자.

예전에 몇 번 비슷한 걸 나무로 만들어봐서 나름대로는 뭐가 필요한지 잘 알고 있다. 나무와 몇 가지 기본적인 도구가 있으면 된다. 줄자, 톱, 평평한 작업대, 망치 정도?

내가 만약에 양념통 선반이 아니라 집을 짓고 싶었다고 해도 여전히 자, 톱, 작업대, 망치는 필요하겠지.

어쨌든 도구를 사러 상점에 갔다. 점원에게 망치는 어디 있나 물어봤다.

점원이 대답한다. "망치요? 요즘에 아무도 망치 안 사요. 완전 유행 지났는데."

좀 놀랬다. 왜 그런지 물어봤다.

"흠, 망치의 문제는 말이죠, 종류가 너무 많다는 거죠. 큰 망치, 장도리, 볼핀 해머, ... 이런 거 중에 하나만 사셨다가 나중에 다른 게 또 필요하시면 어떡해요. 그럼 또 사셔야 되잖아요. 그래서 우리는 이런 생각을 했어요. 살면서 망치질 할 일이 있을 때, 어떤 경우에도 쓸 수 있는 망치를 사람들이 정말로 원하겠구나 하고요."

"흐음. 뭐, 맞는 말인 거 같네요. 그럼 그 만능 망치는 어디 있어요?"

"없어요. 더 이상 안 팔아요. 그것도 옛날 이야기죠."

"네? 좀 전에 만능 망치가 대세가 될 거라고 하지 않았어요?"

"만능 망치를 만들어보니 오히려 어디에도 별 쓸모 없다는 걸 알게 됐어요. 못 박는데 커다란 망치를 쓰면 불편하잖아요. 그리고 옛날 여자친구를 죽이고 싶으면 볼핀 해머만한게 없기도 하고요."

"그건 그렇네요. 그래서, 이제 아무도 만능 망치를 안 사고, 상점에서는 옛날 스타일의 망치를 안 파시고. 그럼 어떤 망치를 파세요?"

"사실, 이제 우린 전혀 망치를 팔지 않습니다."

"그러면..."

"우리가 연구를 좀 해봤는데요, 사람들이 원하는 건 만능 망치 같은 게 아니었어요. 일을 할 때 그 일에 딱 맞는 망치를 쓰는 게 중요하죠. 그래서 우리는 망치 공장을 팔기 시작했어요. 어떤 망치든 만들 수 있는 공장이요. 망치 공장에서 일할 사람 구하시고 재료 좀 사신 다음에 기계 돌리면 아주 빠르게 정확히 원하는 망치를 만드실 수 있죠."

"저 그런데 전 정말로 망치 공장을 사고 싶은 생각은 안 드는데요."

"네네. 사실 그것도 더 이상 안 팔아요."

"저기 근데 좀 전에..."

"대부분의 사람들이 말이죠, 공장을 통째로 사는 걸 별로 원하지 않는다는 걸 알게 됐거든요. 볼핀 해머가 전혀 필요 없는 사람이 있을 수도 있으니까요. 뭐 헤어진 여친이 없다거나 볼핀 해머 대신에 송곳으로 죽였거나 뭐 그런 사람들이요. 그래서 포인트는, 모든 망치를 다 만들 수 있는 망치 공장을 사는 사람은 없더라 이거죠."

"네. 말되네요."

"그래서, 대신에 공장을 만들 수 있는 설계도를 팔기 시작했어요. 고객들이 직접 망치 공장을 만들 수 있게 해주는 거죠. 원하는 망치들만 정확히 만들어 낼 수 있는 망치 공장을 만들 수 있지요."

"내 생각엔, 그것도 이제 안 파시죠?"

"네. 당연히 안 팔죠. 망치 몇 개 만들자고 공장을 짓는 걸 별로 원하지 않는다는 걸 알게 됐거든요. 공장을 만드는 건 공장 짓는 전문가들이 해야죠."

"맞는 말씀입니다."

"네. 그래서 설계도 파는 건 그만두고 망치 공장을 만드는 공장을 팔기 시작했어요. 망치 공장 공장으로 부를게요. 이 망치 공장 공장은 일반인들을 위해서 최정상급 전문가들이 만들었어요. 그러니 공장 내부에 대해서는 전혀 신경 쓰실 필요가 없죠. 그러면서도 사용자의 취향에 딱 맞는 망치 공장을 만들어낼 수가 있죠. 사용자가 필요한 대로 망치를 설계한 다음에 대량 생산할 수도 있어요."

"어, 글쎄요, 그건 그다지..."

"그렇게 말할 줄 알았어요!! 그것도 역시 지금은 안 팔아요. 몇 가지 이유로, 망치 공장 공장을 사는 사람도 별로 없더라고요. 그래서 이 문제를 해결하기 위한 새로운 해결책을 생각해냈죠."

"아하."

"사람들이 망치 공장 공장과 거기서 만들어진 망치 공장을 관리하고 가동하는 부분에서 많이 좌절하더라고요. 확실히 그런 작업이 좀 부담스럽긴 하죠. 그리고 다른 공구들도 생각해봤을 때, 줄자 공장 공장, 톱 공장 공장, 선반 공장 공장 같은 거 더 모두 작동하려면 좀 힘들긴 하잖아요? 그냥 양념통 선반이나 만들려고 했던 사람한테는 확실히 복잡한 과정이긴 하죠."

"네. 정말 그렇네요."

"그래서 이번 주에 우리가 신제품을 하나 내놨어요. 범용 공구 제작 공장 공장 공장인데요, 사람들이 필요로 하는 어떤 공구 공장 공장이라도 이 하나의 통합된 공장에서 만들 수 있어요. 이 공장 공장 공장은요, 딱 필요로 하는 도구에 대한 공장 공장만을 만드실 수 있거든요. 그러면 이 공장 공장에다가 필요한 공구의 스펙을 넣어주면 그 공구를 만드는 공장이 짠 하고 만들어지는 거죠. 뭔가 만들려고 할 때 그것을 위한 딱 맞는 공구셋을 이 과정을 통해서 얻으실 수 있겠지요. 물론 정확한 설정 파일들을 세팅해주셔야 하긴 합니다만 버튼 한 번 누르시면 정확히 필요했던 망치, 정확히 필요했던 자를 얻으실 수 있는거죠."

"그래서 이제 망치는 전혀 안 파시는거에요? 하나도요?"

"네. 고품질의 양념통 선반을 만들고 싶으시면 싸구려 도구 상점에서 파는 조잡한 망치보다는 뭔가 세련된 도구가 확실히 필요하죠."

"어... 다른 사람들도 다 그래요? 다들 망치 필요할 때 범용 도구 제작 공장 공장 공장을 쓰고 있는거에요?"

"그럼요."

"흠, 알겠어요. 저도 그래야겠네요. 다들 그렇게 하고 있다면 저도 어떻게 하는지 배우는게 좋겠네요."

"잘 생각하셨어요!!"

"설명서도 같이 주시죠?"

- Benji Smith, 2005년 9월 30일 금요일.