한줄 멘트

<2008.08.25> '춍' == '쵸센진(ちょうせんじん:chousenjing)'
<2008.08.21> 사람들이 자주 까먹는 것: 더하기는 수학적으로 정의된 분야에서만 증명되어 있다.

지난 날...

by 굴돌 | 2009/05/22 21:17 | 트랙백 | 덧글(27)

뭥미? "스.ㅌ.ㅏ.벅.스.에.서.는 그.란.ㄷ.ㅔ.를 사.라"

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788970905587&orderClick=LAG
여기에 간략한 소개글이 나오고
왜 별.다방에서는 가장 큰 크기를 골라야 하는지를 설명하고 있는데...

이거 말이 안되는거 아냐?
"효율"과 "효과"를 헷갈리고 있다.
저자는 무조건 "효율"이 좋으면 장땡이라고 생각하나본데...
"한계효용 체감의 법칙"이라는 중고딩때 배우는 가장 초보적인 경제학 원리를 망각한 주장이다.

나같이 커피 많이 마시지 못하는 사람이
굳이 500원이라도 더 내고 높은 크기의 음료를 산 다음에
어느 마시다 보면 이제 효용이 감소하는 곡선에 들어가 버려서 남은 것을 버리게 되는데...
누구 좋으라고?

이쯤 되면 효율을 떠나서 효과는 차라리 작은 것을 샀을 때 보다 나빠지게 된다.
그리고 "생산자 vs. 소비자의 비용/가격 구도"를 벗어나서 소비자로써 자신이 얻는 만족감 대비 비용을 따져도 이미 효율은 떨어지고 있다.
생산자만 매출을 올려줄 뿐.

저 문구만 보면
공장제 기업을 위해 대중의 소비를 부추기는,
자본주의에 야합한 글쟁이의 말장난이 잔뜩 담긴 책 같다.
(저자가 저 원리를 모르면서 무조건 최대 사이즈를 사라고 했을 리가 없으므로...)

물론 아니겠지?
나야 책을 본 것도 아니니까. ㅎㅎ
그리고 이 글이 논점 이탈의 오류일 수도 있고 말이지.

갑자기 펠하우스에서 펠도라스가 얘기한 "10렙 찍고 아는 척 하면.."이라는 얘기가 생각나는군 ㅎㅎ

by 굴돌 | 2008/08/25 10:40 | Computer Life | 트랙백 | 덧글(2)

Robustness : Be conservative in what you do, be liberal in what you accept from others.

TCP implementations will follow a general principle of robustness: be
conservative in what you do, be liberal in what you accept from
others.

TCP(Transmission Control Protocol)의 표준 정의 문서인 rfc793에 적혀있는 문구이다. 이 문서는 1981년에 작성됐다.

결국 "자신에게 엄격하고 남에게는 관대하라"라는 동양의 고전적인 격언을 따르는 것인데...
S/W에서 이런 얘기가 예전부터 전해져 왔다는 것이 꽤 재미있다...
10년 넘게 몸담아 오면서(학부부터) 이걸 몰랐었네...

프로그래밍 원칙에 추가~

by 굴돌 | 2008/08/20 23:59 | Computer Life | 트랙백 | 덧글(0)

Worse is Better? Worse is Better is Worse?

Worse but Better
Simplicity
the design must be simple, both in implementation and interface. Itis more important for the implementation to be simpler than theinterface. Simplicity is the most important consideration in a design.
Correctness
the design must be correct in all observable aspects. It is slightly better to be simple than correct.
Consistency
the design must not be overly inconsistent. Consistency can besacrificed for simplicity in some cases, but it is better to drop thoseparts of the design that deal with less common circumstances than tointroduce either implementational complexity or inconsistency.
Completeness
the design must cover as many important situations as is practical.All reasonably expected cases should be covered. Completeness can besacrificed in favor of any other quality. In fact, completeness must besacrificed whenever implementation simplicity is jeopardized.Consistency can be sacrificed to achieve completeness if simplicity isretained; especially worthless is consistency of interface.

The MIT approach(the right thing)
Correctness
the design must be correct in all observable aspects. Incorrectness is simply not allowed.
Consistency
the design must be consistent. A design is allowed to be slightlyless simple and less complete to avoid inconsistency. Consistency is asimportant as correctness.
Completeness
the design must cover as many important situations as is practical.All reasonably expected cases must be covered. Simplicity is notallowed to overly reduce completeness.
Simplicity
the design must be simple, both in implementation and interface. Itis more important for the interface to be simple than theimplementation.

시작은 매우 오래 전의 이야기다.
1989년 Richard Gabriel 씨가 사람들과 Lisp이 주류가 되지 못한 이유에 대해서 이야기하면서 C나 Unix같이 Worse한 것이 대박을 치고 Lisp같은 the right thing이 주류가 되지 못했는지를 Worse is Better라는 논지로 설명했다.[WiB]
사실 이 글은 1991년에 발표된 "Lisp: Good News, Bad News, How to Win Big."라는 논문의 일부이다.

한참 후인 2000년에 Gabriel 씨의 친구라고 하는 Bourbaki 씨가 이에 반론? 변론?을 하는 글을 썼다.[WiB-W]

어쩌면 "Worse is Better"라는 문구를 들어본 사람도 있을 것이다.
[WiB-W]에서 요약한 내용을 요약하자면
Worse이지만 사람들이 쓰기 쉽도록 해서 바이러스처럼 퍼지게 한 뒤에 the right thing의 90% 수준 까지만 끌어올리면 된다.
라는 것인데...이거 MS에서 자주 쓰는 전략 아니었나?
MS-Windows vs. Mac 싸움에서도 MS-Windows는 불안전 하지만 저렴한 가격 등을 무기로 일단 "널리 퍼지도록" 한 뒤에 the right thing(Mac)의 뒤를 따라가는 행보를 하고 있다고 개인적으로 느끼고 있으니 말이다.

물론 [WiB-W]에서 이것이 왜 잘못된 견해이고 [WiB]가 자라나는 새싹들에게 나쁜 영향을 줄 수도 있으며 여기서 Unix, C를 Worse의 예로 들었는데 이 Worse가 Worse가 아니라는 점과, the right thing의 정의조차 그때그때 다를 수 있다는 점 등을 들어서 [WiB]를 반박하고 있다.

여기서 일반적으로 the right thing이라고 일컬은 것은 design 측면에서 훌륭한 것을 가르키고 있다. 이것은 [WP:WiB]에서 the MIT approach라고 소개한 Correctness, Consistency, Completeness, Simplicity를 잘 따르는 것을 얘기한다.
그런데 [WiB-W]에서도 지적했듯이 이러한 the right thing을 만들기에는 비용이 매우 많이 든다. 실무에서 저런 design 규칙들을 지키면서 프로그래밍하기에는...귀차니즘의 압박도 압박이지만 윗선에서의 일정 압박또한 무시 못한다.

(자주 언급하지만) 내가 있는 팀의 관리자가 항상 내거는 것은 "일정준수"이다. "퀄리티는 일정을 지킨 뒤에 얘기한다."라는 것.
사실 대단한 artifact를 만드는 것도 아니고, 제한된 내부 사용자들이 그때그때 요구하는 정제되지 않은 요구사항을 일정안에 맞춰서 그들이 만족할 수준으로 만드는데 있어서는 너무 내부를 빡빡하게 가는 것보다 적당히 만들어서 여차하면 버려도 되고 문제 생기면 추가 수정요청하라고 하는 식이 더 현명한 선택일 수도 있다.
물론 이런 것들이 시간이 지나면서 정리가 안된 상태로 쌓여가면 시스템이 자각을 해서 자기 멋대로 동작하기 시작하는 단계에 이르지만서도...;;;

잠시 신세풀이로 빠졌었는데 하던 얘기도 돌아가서...
결국은 완벽함과 현실 사이에서의 tradeoff가 필요하다는 것이다. [WiB-W]에서도 얘기 했듯이...
아니면 완벽함을 추구하는 것이 필요한 곳을 찾아가던가.

참고자료
[WP:WiB] Wikipedia, Worse is Better, http://en.wikipedia.org/wiki/Worse_is_better
Lisp: Good News, Bad News, How to Win Big., http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.6083
[WiB] http://www.jwz.org/doc/worse-is-better.html
[WiB-W] http://dreamsongs.com/Files/worse-is-worse.pdf

by 굴돌 | 2008/08/20 23:11 | Computer Life | 트랙백 | 덧글(0)

[퍼움] 프로젝트팀의 구성 : 매니저 vs. 프로그래머

by 굴돌 | 2008/08/18 22:58 | SWE + PM | 트랙백 | 덧글(0)

[펀글] 프로그래머의 격언

출처 미상

1. "오늘까지"라는 말은 "내일 아침까지"라는 말이다.

 

2. 프로그램은 내가 원하는대로 움직이지 않는다. 타이핑대로 움직인다.

 

3. 요구 사양은 프로그램을 완성한 후에 추가된다.
   기본 사양은 완성품을 고객이 보고 나서 결정된다.
   상세 사양은 사용자가 프로그램을 사용해 본 이후에 결정된다.

 

4. 소프트웨어 설계에는 두 개의 방법이 있다.

    하나는 결함이 있을 수 없을 정도로 단순하게 만드는 방법이다.
    다른 하나는, 분명한 결함을 눈치채기 어려울 정도로 복잡하게 만드는 방법이다.

 

5. 코드는 개발 현장에서 사용하는 것이 아니라 납품처에서 사용하는 것이다.
    디버그는 납기일까지 하는 것이 아니라, 납품된 이후에 하는 것이다.

 

6. 프로그래머를 죽이기 위해서는 칼이 필요없다. 프로그램의 요구조건을 3번만 바꾸면 된다.

 

7. 다른 사람을 믿으라. 그 사람이 해결해줄지도 모른다.
    주의사항 - 먼저 자신을 의심해라.

 

8. 개발에 마지막은 없다. 출시만이 있을 뿐이다.

 

9. 클라이언트의 요구사항이 제 아무리 뒤늦게 추가되어도 납기일은 변하지 않는다.
    이것을「납기 불변의 법칙」이라고 한다.

 

10. 우리의 고객들은 물과 기능추가를 공짜라고 생각하고 있다.

 

11. 주머니가 짠 고객일수록 잔소리가 많다.

 

12. 개발 스케줄은 산수를 무시하며 짜여진다. 영업과는 1+1=2를 이해하지 못하는 사람의 모임이다.

 

13. 한 명이 쓰러지면 모두가 쓰러진다.

 

14. 버그가 너무 심하다? 걱정마라. 어느 순간 그것은 기본 사양이 될 것이다.

 

15. 좋은 설계는 한 명의 천재보다 세 명의 범재를 요구한다.
     나쁜 설계는 백명의 범재보다 한 명의 천재를 요구한다.

 

16. 고객에게 시스템 엔지니어는 부하이며, 프로그래머는 가축이다.
     시스템 엔지니어에게 고객은 돈이다.
     프로그래머에게 고객은 보이지 않는 악성 바이러스다.

 

17. 돈과 시간만 있으면, 그 어떤 시스템이라도 만들 수 있다고 생각하는가?
      웃어라. 그 기회는 영원히 주어지지 않는다.

 

18. 품질은 사양 변경의 수와 규모에 의해, 얼마나 열화될지 결정된다.

 

19. 영업과는 공상이 실현된다고 생각하는 몽상가이다.
      시스템 엔지니어는 넘을 수 없는 벽이 없다고 믿는 모험가이다.
      프로그래머와는 몽상가와 모험가에 의해 칠흑의 바다에 내던져진 표류자이다.

 

20. 유능한 프로그래머가 프로그램 설계개념도를 받아들고 최초로 하는 일은, 프로그램의
     목적을 이해하는 것이다. 그리고 그 다음으로 하는 일은, 지정된 방법과 시간 안에는
     도저히 그 목적을 완수할 수 없다는 사실을 시스템 엔지니어에게 이해시키는 일이다.

 

21. 프로그램이란, 운과 감에 의해서 작성되는 기적이다.
      운과 감이 없다면, 그 기간 내에 그러한 목표를 실현될 수 있을 리 없다.
      따라서 사양 변경은 기적에 트집을 잡는 건방진 행위이며, 사양 추가는 기적이 두 번
      일어날 것으로 믿는 무모한 행위이다.

 

22. 시스템 엔지니어는 지구력, 프로그래머는 순발력.

 

23. 정시에 퇴근하면, 일이 늘어난다.

 

24. 완벽한 프로그램은 완벽한 시간과 돈을 필요로 한다. 
      미국의 국가 예산을 무제한으로 사용하는 NASA마저도, 아직 시간과 돈이 부족하다고 한다.

 

25. 눈으로 훑어볼 틈이 있다면 움직여라. 뇌세포보다 CPU가 더 해석이 빠르다. 그리고, 그 사이,
      쉴 수 있다.

 

26. 불편함을 버그라고 부를 것인가, 사양 상의 제한 사항이라고 부를 것인가는 남겨진 개발일자와
     납기일에 의해 결정된다.

 

27. 정장 대신 캐쥬얼을 입고 출근하는 "캐쥬얼 데이"를 세간에서는 휴일이나 공휴일이라고 부르는
      것 같다.

 

28. 프로그램은 머리로 기억하지 않는다. 몸으로 기억한다.

 

29. 내일 쉴 수 있다면 오늘 죽어도 괜찮다.

 

30. 고객은 거짓말을 한다.
      영업은 꿈을 말한다.
      시스템 엔지니어는 공상을 이야기한다.
      프로그래머는 과묵해진다. (혼잣말은 많아진다)

 

31.「네, 할 수 있습니다」라고 말하기 전에 10초만 곰곰히 다시 생각해보라.

 

32. 프로그래머는 1분 생각하고 1일을 코딩에 소비한다.
      1시간 생각하고 1시간 코딩하는 대신에 말이다.

 

33. 납품 이후의 디버그는 버그를 부른다.

 

34. 세 개의 디버그는 하나의 버그를 낳는다. 이것을 버그의 엔드리스 루프라고 한다.

 

35. 안 좋은 예감은 반드시 적중한다. 그러나 프로그래머는 그 안 좋은 예감에 반응하지
      않는다. 그것은 시스템 엔지니어의 일이다.

 

36. 아수라장을 해결할 수 있는 방법은 오직, 고객이 돈을 지불하는 것 뿐이다.

 

37. 아마추어는 버그발견의 천재이다.

 

38. 아, 그건 마이크로소프트에서만 가능한 주문입니다.

 

39. 프로그래머가 불만이라고 생각하는 부분은 고객도 반드시 불만이라고 생각한다.

 

40. 건강하기 때문에, 건강을 해친다.

 

41. 그건, 당신이 말한 요구조건입니다만.

 

42. 아, 개발실의 창문은 안 열립니다. 그 이유는 옛날에 한 프로그래머가 그 창문에서···

 

43. 고객은 최악의 사태를 믿지 않으며, 그 사태에 대한 준비를 악질적인 비용청구라고 생각한다.
      시스템 엔지니어는 최악의 사태를 대비하고 준비하려 한다.
      프로그래머는 최악의 사태를 누구보다 잘 예상하지만, 무시한다.

 

44. 만약 다른 직업을 갖게 된다면, 정시퇴근을「도망」이라고 부르지 않는 직업이 좋을 것 같다.

 

45. 시스템 엔지니어가 프로그래머에게 말하는「상식」은 3시간마다 변한다.

 

46. 최소한 자기가 쓴 시방서는 읽어주세요.

 

47. 고객이 시스템 엔지니어에게 사랑받는 방법은, 시스템 개발에는 시간이 곧 돈이라는 사실을
      깨닫고 빨리 최종요구조건을 확정하는 것이다. 
     SE가 고객에게  사랑받는 방법은, 프로그래머에게 미움받는 것이다.

 

48. 납기일이란, 작업현장이 우리 회사에서 고객의 회사로 바뀌는 날을 의미한다.

 

49. 가끔 일어나는 버그는 버그가 아니다. 스펙이다.

 

50. 개발비의 30%는 프로그램의 요구조건을 확정하는데 사용된다.
     개발비의 30%는 프로그램의 요구조건을 변경하는데 사용된다.
     개발비의 30%는 프로그램의 버그를 잡는데 사용된다.
     개발비의 10%만이 프로그램의 개발에 사용된다.

by 굴돌 | 2008/08/18 22:55 | 트랙백 | 덧글(0)

[퍼옴] 요구사항 분석...

출처 불명의 매우 유명한 이미지.
생각나서 웹에서 찾으려니 안보여서 이렇게 옮겨놓음.

by 굴돌 | 2008/08/18 22:54 | SWE + PM | 트랙백 | 덧글(2)

어지간 해서는 시사 얘기 안 쓰는데...

미국에게 쇠고기 협상을 퍼주고
북한에는 국민이 총맞아 죽어도 별 얘기 못하고
일본한테는 독도를 넘겨줄 태세고...
중국에게는 국제 시장을 다 넘겨줄 모양세고...(링크)

그러면서 국내 경제는 점점 기울어가고...

이래저래 분위기가 나쁜 만큼
하나씩 풀어 나간다면야 역사적인 명名 대.통.령으로 남겠지만...
그렇지 못하면 최악의 명m 대.통.령이 될듯.

세금 줄여주면서 국민들에게 스팀팩이라도 쏴줄 요량으로 저러고 있는 거 보면...
조4모3이 아니라 조5모0이 되는거 아닌가 모르겠다...

(2008.08.05:추가) 그나마 독도 표기 문제는 부시가 한건 해줬네...

by 굴돌 | 2008/07/28 10:30 | Rollin/Chimin | 트랙백 | 덧글(2)

독서 > 민주주의의 황혼, 진덕규.

민주주의의 황혼 이제야 다 읽었다...;;..
뜨믄뜨믄읽다보니 무지 오래 걸리네..

민주주의에 대해서 이것저것 알게 되서 입문서로써 좋은 책 같음.

민중의 속성에 대한 설명도 아주 절절하고...
"질의 정치에서 수의 정치"라던가
"오늘 나에게 최상의 찬탄을 말하는 사람일수록 내일이면 나에게 가장 뼈아픈 돌팔매질을 할 수 있는 사람이다.",
"민중은 군중적 존재로 변하는 그 순간부터 책임이라는 말로부터 스스로 도망쳐 버린다."
왠지 요즘 분위기에 맞는 얘기들 같음.

그러나 한 페이지 앞에
"공공성과 사회적 책임을 다한 사람은 언제나 고통의 뒤치닥거리만 맡게 된다."라고 해 놓고
그 뒤에 이 모든 해결책으로써
"공공성에 바탕을 둔 시민적 삶이 내 속에서 일어날 때에만 가능해진다."라고 한 것은
좀 무책임한 것 같다.
아니면 정말 저 결론이 진심으로부터의 견론이라기보다는
본인도 반신반의하고 뭔가 적어야 하겠어서 적은 결론이 아닐까 의심도 든다.

물론 책임감과 염치를 아는 시민사회를 구축하는 것이 모범 답안일 것 같긴 하지만
뭔가 좀 더 그럴듯하게 포장을 하던가...
앞의 내용을 슬쩍 넘어가던가...
하다못해 두 내용을 좀 떨어뜨려 놓던가...
해야 하지 않았나 싶기는 한데...

만약 저것이 진정으로 생각하는 모범답안이라고 한다면...
단점을 솔직히 밝히고 자기 주장도 가감없이 적어 두는 것이
이상주의자 다운 모습인것 같다.

"이 약 더럽게 쓰거덩? 그래도 이거 먹어야 건강해져!"
뭐 이런 느낌?

by 굴돌 | 2008/07/27 10:29 | Rollin/Chimin | 트랙백 | 덧글(0)

링크] CEO가 휴가 때 읽을 책 20선

링크: http://www.seri.org/db/dbReptV.html?g_menu=02&s_menu=0202&submenu=&nPage=&pubkey=db20080709001
[ 경제·경영 10선 ]
경제학 콘서트2. 팀 하포드
미래를 읽는 기술. 애릭 갈랜드
마이크로트렌드. 마크 펜 외
육일약국 갑시다. 김성오
지식경제학 미스터리. 데이비드 워시
씽크 이노베이션. 노나카 이쿠지로 외
원점에 서다. 사토 료
히든 챔피언. 헤르만 지몬
스틱. 칩 히스 외
빅 씽크 전략. 번트 H. 슈미트
[ 인문·교양 10선 ]
인문의 숲에서 경영을 만나다. 정진홍
세종처럼. 박현모
젊음의 탄생. 이어령
로마인 이야기 15. 시오노 나나미
대국굴기. 왕지아펑 외
시크릿. 론다 번
제국의 미래. 에이미 추아
통합의 리더십. 아담 카헤인
마지막 강의. 랜디 포시
아름다운 부자, 척 피니. 코너 오클리어리
----------------
딱 한권...그나마 가장 얇을 것이라 믿어 의심치 않는 시크릿만을 읽었네 =.=;;

by 굴돌 | 2008/07/12 20:49 | 트랙백 | 덧글(2)

◀ 이전 페이지          다음 페이지 ▶