달력

032010  이전 다음

  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
조사 결과에 관심이 가는 이유는 선호하는 제품과 꺼리는 제품 사이의 큰 차이다.



그래프가 아니라 수치로 보면 또 다른 느낌이 든다.

ToolBestOKProblematicDangerousNo OpinionActive ResponsesApproval %
Subversion 20 72 6 1 0 99 93%
git 65 19 1 0 14 85 99%
Mercurial 33 27 2 0 36 62 97%
ClearCase 0 3 14 41 41 58 5%
TFS 0 0 32 22 44 54 0%
CVS 0 14 59 11 15 84 17%
Bazaar 1 13 3 0 80 17 82%
Perforce 1 26 16 1 54 44 61%
VSS 1 1 11 64 22 77 3%

이 수치를 보면 몇 가지 화두를 꺼낼 수 있다. 상투적이지만 오픈소스의 위력을 떠올려볼 수도 있다. 하지만, 거의 꼴찌에 놓인 ClearCase에 관심이 간다. 국내 현장에서 널리 쓰이는 상용 제품이기에 그렇다. ClearCase를 쓰는 고객과 무슨 이야기를 할 수 있을까 생각해봤지만, 안타깝게도 공감대가 형성되기 어려울 듯하다. 고객이 소스 코드 버전 관리에 대해 실제적인 경험이 적어 이해하는 부분이 적다고 치부할 수도 있지만, 반대로 아직 내가 버전 관리 도구(와 프로세스)의 개선이 줄 수 있는 파급력을 설명할 능력이 없다고 하는 편이 좋겠다.

물론, 개발자 메일링 조사이니 공신력에 의문을 품을 수도 있고, 외국 현실(I conducted the survey from February 23 2010 until March 3 2010 on the ThoughtWorks software development mailing list)이니 국내 현실과 차이는 있다.

출처: VcsSurvey

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
TAG vcs
학부 때 소프트웨어 공학 과목 시험에서 Scalability에 대해 논하라는 문제가 나왔다. '확장성'으로 풀어야 하나 '규모 신장성'으로 풀어야 하나 고민했던 기억이 난다. 결국, 답으로 무얼 적었는지는 모르겠다.

지금 생각해보면 결국 투자 대비 수익(Return on Investment)이라 정리할 수 있다. 하드웨어든 가상화나 그리드 솔루션이든 돈을 들이는 만큼 더 많은 고객을 포용할 수 있어야 한다. 그러나 소프트웨어 산업 초창기인 터라 실제 구현해내는 일은 그리 만만치가 않다. InfoQ 등을 보면 선형적 규모 가변성(Linear Scalability)을 이야기하지만, 국내 현장에선 남의 나라 이야기다. 민감한 시스템 구축 프로젝트에서 이를 언급했다가는 5년 전 일이 데자뷔로 다가오지 않을까. 2005년 대규모 프로젝트에서 스프링(Spring Framework) 도입할 때, '멋 모르는 신출내기' 취급을 받았던 때가 떠오를 듯하다.

바쁜 와중에 갑자기 Scalability에 대해 이야기하는 이유는 얼마 전 스프링로드가 자랑스레 트윗했던 뉴스를 읽었기 때문이다. 영국 최대의 언론사에서 하드웨어 추가에 따른 웹 로직 도입 비용에 부담을 느껴 오픈소스로 눈을 돌린 모양이다. 그러다가 긴급 지원이 가능한 tc 서버로 눈을 돌렸고, 스프링로드의 레퍼런스가 만들어졌다. 구글이 형광등처럼 하드디스크를 소모품으로 여기듯이 하드웨어는 단순 소모품으로 전락할 가능성이 크다. U(Ubi~)라는 키워드가 곳곳에서 쓰이는 현실을 고려하면 점점 하드웨어를 묶어 사용하는 가상화 환경은 기본으로 자리 잡을 가능성이 크다. 이미 포탈에서는 관계형 데이터베이스의 한계를 이야기하고 있고, 서비스를 수행하는 기업은 하드웨어 가용성에 대한 고민을 위탁할 가능성이 매우 크다.

결국은 클라우드가 순식간에 피부에 와 닿을 날이 떡국 몇 그릇 먹기 전에 올 듯하다. 최근에 IDC를 완공한 SI 업체가 측은하게 느껴지는 것은 지나친 걱정일까?
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
  * 기업 경영에 대한 필자의 조언

고객과 시간을 보내는 것이 관리의 핵심이다. 시스코 시스템스의 존 체임버스는 고객과 대화를 나누는 데 업무 시간의 80%를 할애하며, 모든 경영자들에게 고객들을 직접 만나는 데 최소한 업무 시간의 50%를 할애할 것을 요구한다. 이것이 아마도 고객 관계 관리(CRM)를 이해할 수 있는 가장 값싼 방법이 될 것이다.


전통적인 기업이 어떻게 생각하든 많은 소비자들은 다음과 같은 것들을 원한다.
  • 실질적인 구매 결정을 내리기 전에 기업이 제시하는 상품을 '확인(checkout)'한다.
  • 기업의 상품을 '컴포넌트화(componentize)'해서 조금씩 조각조각 구매한다.
  • 적당하다고 생각되는 방법을 동원해서 이런 상품을 여러 번 '조합(combine)'한다.
  • 상품을 자신들의 마음에 더 드는 것으로 '바꾼다(change)'
  • 이런 상품을 '모방(copy)'해서 친구들과 공유한다.
  • 상품에 대해 다른 사람들과 '의사소통(communicate)'한다.
  • 이런 상품을 개인적인 개조물이나 재조합물과 '공동 브랜드(co-brand)'화한다.
창조적 괴짜가 세상을 움직인다 132쪽

당면 과제는 분해가 아니라 재구성의 원칙에 입각해서 조직 구조를 설계하는 것이다.


창조적 괴짜가 세상을 움직인다 164, 165쪽

계급 조직은 잊어라. 레고 모델이 효력을 발휘한다.
창조적 괴짜가 세상을 움직인다 167쪽

창조는 음침한 곳에서 울려 나오는 하나의 목소리가 아니라 의견 공유와 발견의 과정인 대화에서 비롯된다. 단기 처방을 내리는 대신 꾸준히 노력하며 다양한 방법을 시도해 봐야 한다. 실험은 상상력만큼 끈기도 요구한다.

창조적 괴짜가 세상을 움직인다 171쪽

조직은 직원을 소유한 것이 아니며, 소유할 수도 없고, 소유해서도 안 된다. 직원들은 언제 어느 때건 일어나서 사무실 밖으로 걸어 나갈 자유가 있다.
창조적 괴짜가 세상을 움직인다 174쪽

모든 직원이 자신만의 강점을 기를 수 있는 비옥한 토양을 조성해 주는 것은 혁신 주식회사 곳곳에 존재하는 리더가 책임져야 할 문제이다. 위대한 리더는 차이를 자본화한다.
창조적 괴짜가 세상을 움직인다 181쪽

생산성이 조직의 생존을 도와주듯, 교란성은 조직의 번영을 도와준다. <중략> 혁신에 대한 중요한 전망을 얻으려면 기업들은 다음가 같은 두 가지를 갖춰야 한다.
  • 전략적 의사 결정 과정에 일탈자들을 포함하고 참가시켜야 한다.
  • 힘의 분산을 관리해야 한다. 능력이 있는 곳을 중심으로 의사 결정이 이뤄지도록 해야 한다.
창조적 괴짜가 세상을 움직인다 185쪽

상황 파악에서 솔루션 마련, 실행까지 걸리는 시간이 단축되어야 한다. <중략> 예상 능력을 높이기 위해 기업들은 조기 경보 시스템을 발동해야 한다. <중략> 좀 더 분산적이고 비계층적인 접근 방법이 필요하다. <중략> 칼 웨이크 교수가 말하길, 소방서나 핵 발전소 등 고신뢰 조직(HRO)의 경영자들은 최전방에 관심의 초점을 맞춘다.  HRO들은 또한 전문가의 의견을 존중하고, 현실을 단순화하려 하지 않는다. <중략> 한 가지 위대한 아이디어를 얻기 위해서는 수천 직원들의 생각과 꿈을 소유해야 한다.
창조적 괴짜가 세상을 움직인다 189, 191쪽

애플의 스티브 잡스는 이렇게 말한다. "똑똑한 사람들을 고용해서 그들에게 무엇을 하라고 말하는 것은 말이 안 된다. 우리가 똑똑한 사람들을 고용한 이유는 그들에게 무엇을 해야 할지 듣기 위해서이다." <중략> 창의적인 기업들은 다음의 세 가지가 필요하다.
  • 공통된 생각
  • 명확한 아이덴티티
  • 행동 방식을 형성하는 동기
창조적 괴짜가 세상을 움직인다 192, 193쪽

성공적인 리더는 종종 설득력 있는 단순성으로 자신들의 일을 보여 준다. 간결함이 생명이다. <중략> '새로운 프로틴 경력 계약(the New Proteam Career Contract)'의 저자들은 이렇게 말한다. "기업은 직원들의 경력을 관리하는 대신, 그들이 아이덴티티와 적응 능력을 발전시켜서 자신의 경력을 스스로 지배할 수 있도록 기회를 제공할 것이다."
창조적 괴짜가 세상을 움직인다 196쪽

기업은 유지가 아닌 공유에 보상을 해 줘야 하며, 지식 활용뿐 아니라 지식 창조에도 보상을 해줘야 한다.

창조적 괴짜가 세상을 움직인다 200쪽

조직은 다음과 같은 세 가지 구성 요소로 이루어진 프로세스상의 플랫폼을 마련해야 한다.
  • 조직적인 메모리
  • 공통의 언어
  • 정교한 의사소통 채널
<중략> 혁신적인 기업은 많든 적든 모든 직원이 사람, 지식, 방법, 장소를 알 수 있는 일터를 설계해야 한다. 즉 전체가 모든 부분에 반영되는 입체적인 조직을 건설해야 한다.
창조적 괴짜가 세상을 움직인다 202, 203쪽

기업은 잊는 법을 배워야 한다. 기업은 발전을 위해 지워야 하며, 건설을 위해 파괴해야 한다.

창조적 괴짜가 세상을 움직인다 205쪽


기업은 다음을 개발해야 한다.
  • 일상 속의 실험화
  • 실패에 대한 관용
  • 신뢰의 풍토
창조적 괴짜가 세상을 움직인다 212쪽


혁신을 완수하려면 기업은 실수 '제로'를 강조하는 풍토에서 새로운 실수를 강조하는 풍토로 변해야 한다.

창조적 괴짜가 세상을 움직인다 215쪽

톰 스튜어트가 말하듯, 아마도 기업에는 사명서(mission statement) 외에 허가서(permission statement)도 필요하다. 실패는 발생하게 마련이다. 아마존의 제프 베조스는 이렇게 덧붙인다. "치료, 다시 말해 직원들에게 항상 허가를 구하게 하는 치료는 질병보다 더 나쁘다." <중략> 리처드 파슨과 랠프 키즈는 실패에 관용적인 리더(FTL, failure-tolerant leader)들은 자신들과 다른 사람들을 구분 짓는 장벽을 부수고 직원들과 개인적 차원에서 같이 일한다고 말한다. 그들은 칭찬이나 비난을 하는 대시 분석한다. <중략> 오늘날 대다수의 조직은 신뢰의 사원이 아니라 두려움의 공장이다.

창조적 괴짜가 세상을 움직인다 216, 217쪽


새로운 경제 환경에서 수직적 통합 기업은 즉시 부적합한 기업으로 전락해 버린다.

창조적 괴짜가 세상을 움직인다 243쪽

모델의 구성
공급 사슬(supply chain)을 통제하는 대신 수요 사슬(demand chain)을 설계한다. <중략> 다음과 같은 네 가지 중요한 질문에 대해 창의적인 해답을 생각해 낼 수 있어야 한다.
  • 어떤 고객을 위해 어떤 일을 하기를 원하는가?
  • 자기 힘으로 해낼 수 있는 세계 일류의 행동은 무엇인가?
  • 세계 일류의 파트너들이 우리보다 잘하는 것은 무언인가?
  • 어디에 어떤 성장 잠재력이 존재하는가?

창조적 괴짜가 세상을 움직인다 244, 245쪽

급변하는 컴퓨터 산업에서 재고는 생선과 유사성이 많다. 곧 가치 손실이 빠르게 발생한다. <중략> 선택할 수 있는 옵션의 수를 제한하기에 고객 맞춤(customization)의 영업 방식을 잘 관리할 수 있다. <중략> 우위 사이클의 끝이 새로운 우위 사이클의 시작과 연결되는 나선형의 전략을 창조해야 한다. <중략> 독점성이 대체로 모델의 효과와 내구성에 관련되어 있다. <중략> 실행성은 꼭 필요한 전략을 조직의 적재적소에 배치하는 것을 의미한다. <중략> 탄력성은 시간과 공간, 규모에 대한 모델의 가변성과 적응성에 대한 것이다. <중략> 슈퍼모델의 리더는 변화시키지 말아야 할 것을 결정한 다음 그 외에는 어느 것이든 자유롭게 바꾼다.

창조적 괴짜가 세상을 움직인다 249, 253, 258, 260쪽


기업 내부의 영구 컬렉션인 역사적 자원과 활동을 보호하는 대신, 특정한 성격의 가치 제시가 주어질 경우 누구인지 어디서 일하는지에 상관없이 최고의 참가자들을 끌어모으는 역할을 맡는다. <중략> 무가치란 투명성 향상으로 드러난 부가 가치가 없는 활동을 의미한다. <중략> 표준화된 상호 작용이 필요하다.

창조적 괴짜가 세상을 움직인다 254~256쪽

이지젯은 먼저 구매하는 사람들에게 싼 가격을 제공한 다음, 조금씩 가격을 올린다.

창조적 괴짜가 세상을 움직인다 259쪽


영역에서 성장은 새로운 유형의 고객에게 문을 열고 <중략> 응용성에서의 성장은 콘텐츠와 관련이 있다.

창조적 괴짜가 세상을 움직인다 261쪽

접속을 활용한다는 것은 새로운 마케팅 채널이 추가됨을 의미한다.

창조적 괴짜가 세상을 움직인다 263쪽

  1. 너의 똑똑함과 아름다움을 과시하기 위해 깃털을 내보이지 말지어다. <중략> 위대한 리더는 자신감과 자의식의 균형을 유지하면서 결실을 일궈야 한다.
  2. 눈을 가린 채 황무지로 걸어가지 말지어다. 너는 물론이고 다른 사람들도 눈을 떠야 한다.
  3. 성공적인 리더에게 돈은 올바른 행동에서 생기는 부산물이다.
  4. 가치관을 중시하며 매일 순수하고 명료하게 가치관대로 살아갈 지어다. <중략> CEO의 역할은 기업의 문화와 가치관을 유지한는 것이다. <중략> 문화는 위에서부터 온다.
  5. 모두를 사랑할지어다. 그러면 모두가 너를 사랑할 것이다. <중략> 경영자나 그의 보좌관들은 여러 부서를 도는 흥미로운 과정을 여러 부서를 도는 흥미로운 과정을 겉치레적인 것으로 현실시켜 버리죠. <중략> 리처드 브랜슨 경은 버진의 직원들 모두에게 자신의 개인 전화번호를 알려 주었으면, 문제가 있거나 아이디어가 생각날 경우 언제든 전화하라고 말한다.
  6. 다양한 직급의 경영자들도 고객들과 대화의 장을 마련해야 한다. 다양한 직급의 경영자들도 고객들과 대화의 장을 마련했다.
  7. 관료주의 규정서는 집어던질것이다.
  8. 자화자찬하지 말지어다. <중략> 랜들 토비아스는 한 해 동안의 실패에 대한 보상 제도를 도입해서
창조적 괴짜가 세상을 움직인다 306~314쪽


창조적 괴짜가 세상을 움직인다 - 10점
요나스 리더스트럴러.첼 노오스트롬 지음, 조성숙 옮김/황금가지

이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
k16wire추천에 의해 읽은 책이다. 인상에 남는 구절을 짧은 감상과 함께 메모.

좋아하는 오렌지색을 넣은 편집도 그렇지만, 시종일관 신선한 내용과 흥미로운 전개가 돋보이는 책이다. 300쪽을 넘어가 슬슬 지루할 즈음에 이어지는 마지막은 정말이지 임팩트 있는 만점 마무리다.

성공하려면 다른 사람들을 보는 것부터 멈춰야 한다. 우리의 경쟁 상대는 우리 자신이다. 모방은 어떤 것도 이뤄주지 못한다. 자신의 내부를 들여다보라. <중략> 당신의 영혼을 통과해야 하며 당신의 가치관을 거쳐야 한다는 사실이다.

성공의 가장 흥미롭고 중요한 측면은 그것이 우리에게 사회에 대해 그리고 미래에 대해 알려 준다는 점이다.


타인을 모방하는 데에서 이류가 되기 보다는 자신을 나타내는 데에서 일류가 되는 것
이 언제나 더 낫다.

형제자매여, 동화되지 마라. 무시하라. 그러지 않으면 사라진다. 모방을 인정하지 마라. 한계를 인정하지 마라. 당신이 이곳에 있는 데에는 이유가 있다. 당신은 힘과 권리를 지니고 있다. 이것이 당신의 삶이다. 당신이 결정한다. 자신의 권리를 대변하라. 당신이 지배권을 쥘 수 있다.

읽으면서 온통 밑줄을 그었고, 곁에 두고 가끔 참고해야 할만한 책이란 생각이 드는 책이다. [각주:1]

* 변화에 대처하는 자세에 대한 필자의 견해 메모

우리가 경험하는 변화에 대해, 그리고 어떤 종류의 미래를 만들고 싶은지에 대해 자신만의 의견을 가져야 한다.

창조적 괴짜가 세상을 움직인다 7쪽

사람과 기업과 국가는 불확실성을 줄이고 원본을 모방하기 위해 노력할 수도 있지만, 다른 한편 불확실성을 포용해서 미래의 걸작을 창조할 수도 있다.
창조적 괴짜가 세상을 움직인다 29쪽

항상 그래 왔듯이 변화를 추진하는 것은 기술, 제도, 가치, 다시 말해 도구와 규칙, 규범이라는 세 가지 힘이다. 좋든 싫든 우리가 이런 변화의 힘을 형성하지 못하면 그들이 우리를 형성한다.
창조적 괴짜가 세상을 움직인다 35쪽

프랑스의 비즈니스 스쿨 인시아드(INSEAD)의 폴 에반스는 사람들은 변화를 싫어하는 것이 아니라 변화당하는 것을 싫어한다고 말했다.
창조적 괴짜가 세상을 움직인다 64쪽

힘은 규칙을 준수하는 자(rule-taker)에서 규칙을 깨뜨리는 자(rule-breaker)와 규칙을 창조하는 자(rule-maker)에게로 옮겨지고 있다.
창조적 괴짜가 세상을 움직인다 65쪽

변화를 관리할 수는 없다. 단지 변화에 앞서 갈 뿐이다. <중략> 앤디 워홀은 말했다. "내 그림이 예상했던 대로 그려지는 적은 한 번도 없다. 그러나 나는 결코 놀라지 않는다."
창조적 괴짜가 세상을 움직인다 168, 169쪽

 
* 현대 사회의 지식/기술을 이해하는 틀에 대한 필자의 인식 메모
 
정보의 민주화를 힘의 민주화와 착각하지 마라. 정보는 그 정보를 이해할 능력이 있을 때에만 진정한 가치를 지닌다. 힘은 정보를 통제하는 사람들에서 지식을 통제하는 사람들에게로 옮아간다.
창조적 괴짜가 세상을 움직인다 33쪽

무엇보다 기술에 대한 비난을 멈춰야 한다. 기술은 결정을 내리지 않는다. 결정은 인간이 내린다.

창조적 괴짜가 세상을 움직인다 40쪽

새로운 것을 창조하려면 종종 기존의 것을 새로운 방식으로 결합해야 한다. 즉 하이픈으로 연결해야 한다. <중략> '애드버게임스(Advergames)'는 햄버거 식당에서 세트 메뉴를 판매하듯, 광고와 게임을 결합한다.

창조적 괴짜가 세상을 움직인다 159쪽

스토리(또는 내러티브)는 우리가 사물을 기억하는 방식이다. 스토리는 정보를 감정으로 바꾼다.

창조적 괴짜가 세상을 움직인다 175쪽

"기술은 당신의 어리석음을 덜어 주지 않는다. 어리석어지는 속도를 더 빨라지게 만들 뿐이다." - 손턴 A. 메이

창조적 괴짜가 세상을 움직인다 228쪽

CEO(Chief Emotional Officer, 감성 경영자) <중략> 알베르토 알레사는 자신의 기업은 제조 업체가 아니라 창의성과 인간의 심금을 울리는 현실 세계 사이의 중재자

창조적 괴짜가 세상을 움직인다 271쪽

다윈이 옳았다. 성공하려면 강한 동시에 섹시해야 한다. 본질과 형식을 결함하고 가능성과 패션을 결합해야 한다. 강함은 적응의 문제이다. <중략> 섹시함은 매력에 대한 것이며, 감성적으로 연결하는 것이다.

창조적 괴짜가 세상을 움직인다 297쪽


 * 정치/근대사에 대한 필자 인식 메모

20세기에 논쟁의 초점은 대량 생산으로 생겨난 부의 재분배였다.

독재자들은 항상 정보의 원천을 통제할 방법을 모색한다.
창조적 괴짜가 세상을 움직인다 44쪽



평등은 종종 특성을 희생시켰다. <중략> 국제 연합이 아니라 개인 연합(United Individuals)과 부족 연합(United Tribes)을 창조하는 방법을 알아야 한다.




  * 현대 사회의 트윈 픽스(Twin Peaks)

우리는 조직으로 가득 찬 사회에 있지만, 여전히 공동체에 굶주려 있다.

워싱턴 D.C.의 유아 사망률은 1,000명당 16.2명이며, 이것은 스리랑카와 같은 수치이다. 유럽의 유아 사망률은 9.4명이다. 미국의 수도에서 저체중으로 태어나는 아기의 수는 잠비아와 맞먹거나 심지어 웃돌기도 한다.
수십만 명의 사람들이 경제적 불평등과 정치 부패, 전쟁으로 인한 식량 부족에 시달리는 반면에, 수십만 명의 사람들은 과체중으로 식단과 관련된 위험할 정도의 만성 질환에 시달리고 있다.

부자들을 위한 보호 구역과 가난한 사람들을 봉해 놓는 장소가 공존한다.

이런 트윈 픽스(Twin Peaks) 세상은 서구 사회에서 가장 빠르게 성장하는 사업인 보안 회사들에게 천국이나 다름없다. 격차가 벌어질수록 보호도 더 많이 필요하다.


  * 시장/경제에 대한 필자 인식 메모

영국의 경영 철학자인 찰스 핸디는 시장은 능률적인 사람과 비능률적인 사람은 구분 짓는 메커니즘에 불과하다고 말했다. 시장은 책임을 대신해 주지는 않는다.
창조적 괴짜가 세상을 움직인다 56쪽


과거에 충성은 저절로 주어지는 것이었다. 하지만 이제 개인의 삶에서든 비즈니스에서든 충성은 획득해야 하는 것이 되었다.
창조적 괴짜가 세상을 움직인다 60쪽

인격이 없는 자본주의는 위험하다. <중략> 자본주의 시장 구조는 단지 무언가의 가격을 결정하는 방법에 불과하다.
창조적 괴짜가 세상을 움직인다 331, 332쪽


  * 일반적인 지혜

활용은 필연적으로 남용을 낳는다.
창조적 괴짜가 세상을 움직인다 41쪽

리처드 파스칼은 자연에서 생존은 돌연변이와 변종이 충분히 존재하느냐에 달려 있다고 말한다.

창조적 괴짜가 세상을 움직인다 185쪽

사람들이 언어적 합의가 아니라 언어적 충돌에 의해 더 잘 결속됨을 알 수 있다.

창조적 괴짜가 세상을 움직인다 206쪽

광기에 대한 아인슈타인의 정의를 생각해 보라. "똑같은 일을 계속 반복하면서 다른 결과가 나오기를 바라는 것이 바로 광기이다." <중략> 혁신은 완벽이 아니라 끈기를 요구한다. "내가 영리해서가 아니라, 남들보다 더 오래 문제에 집작했기 때문이다."라고 한 아인슈타인
창조적 괴짜가 세상을 움직인다 212, 213쪽

혁신은 대부분 한 번의 빅뱅이 아니라 마일리지와 같다. <중략> 라이너스 폴링이 지적하듯 "훌륭한 아이디어를 많이 가질 수 있는 가장 좋은 방법은 무수한 아이디어를 취한 뒤 나쁜 아이디어를 버리는 것이다."

창조적 괴짜가 세상을 움직인다 216쪽


창조적 괴짜가 세상을 움직인다 - 10점
요나스 리더스트럴러.첼 노오스트롬 지음, 조성숙 옮김/황금가지

  1. 고백하자면 다른 책을 읽으면서도 그런 생각을 했지만, 곁에 두어봐야 다시 보는 일은 별로 없었다. [본문으로]
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
가능성이 높다 → 가능성이 크다
(의지를) 가지고 → (의지를) 갖추고
감싸인 → 둘러싸인
감안해 → 고려해, 참작해, 살펴, 생각해
갖고 있는 → 가진
(~을/를) 갖고 있지만 → (~가) 있지만
갖아보면 → 가져 보면
갖지 → 느끼지
검색을 할 → 검색할
결국 → 결국,
고민을 했다 → 고민했다
관심을 갖는 → 관심을 두는
구비한 → 갖춘
그러나, → 그러나
그리고, → 그리고
근자에는 → 요즘에는
금새 → 금세
(능력이) 급성장하다 → 급향상하다
기반한 → 기반을 둔
기여할 → 이바지할
꺼림직한 → 꺼림칙한
꺽인다 → 꺾인다
꽤나 →
나눠지고 → 나뉘고
나올라나 → 나오려나
난데 없이 → 난데없이
난이도도 높고 → 어렵고
남탓에 → 남 탓에
내역 → 내용
너무 좋아서 → 아주/매우 좋아서
노하우 → 비결, 비법
누구말대로 → 누구 말대로
다달을수록 → 다다를수록
단초 → 실마리
담고 있는 → 담은
대개의 경우 → 대개
대기한다 → 기다린다
대부분의 (작업을) → (작업) 대부분을
더 이상 → 다시는, 더는
데드락 → 교착상태
데자뷰 → 데자뷔
도식화 한다 → 도식화한다
도처에서 → 곳곳에서
되더라구요 → 되더라고요
동일하게 → 같이
뒤 이어는 → 뒤이어는
뒷풀이 → 뒤풀이
들여다 보면 → 들여다보면
띄며 → 띠며
맞냐 → 맞느냐
머지 않아 → 머지않아
몇 일 → 며칠
모양을 띈다 → 모양을 띤다
못지 않게 → 못지않게
무리배 → 무뢰배
무엇이었냐 → 무엇이었느냐
바꾼 후 → 바꾸고, 빼앗긴 후 → 빼앗기고
반감을 가진 → 반감을 품은
박발을 하다 → 반박하다
방치했다 → 버려뒀다
별 생각 → 별생각
병기하기 → 함께 적기
보내다보니 → 보내다 보니
보여질 → 보일
부르짓던 → 부르짖던
부합하는 → 맞는
분명 → 분명히
불러지는 → 불리는
블로그스피어 → 블로고스피어
빽빽히 → 빽빽이
뿐만 아니라 → 그뿐만 아니라
사랑스런 → 사랑스러운
사용할 수 있는 방법은 → 사용하는 방법
새 집으로새집으로
수 밖에 → 수밖에
쉽상인 → 십상인
스스로도 → 자신도
아니기 때문에 → 아니므로
악세사리 → 악세서리
안좋은 → 안 좋은
않는가 → 않은가
얼마전 → 얼마 전
얼핏보면 → 언뜻 보면
옥의 티 → 옥에 티
와닿는다 → 와 닿는다
왠만한 웬만한
★ ~의 경우 → ~는
의례 → 으레
의지 박약 → 의지박약
이런 저런 → 이런저런
이로 인해 → 이 때문에, 이로 말미암아, 이 탓에, 이 덕분에
이를 테면 → 이를테면
이야기 하고 → 이야기하고
이와 같이 → 이처럼
있냐 → 있느냐
익숙치 → 익숙지
~인 반면 → ~이지만
일괄로 → 한꺼번에
일체 없다 → 일절 없다
입각해서 → 따라서
제3자 → 제삼자
족하다 → 충분하다
주눅들어하는 → 주눅이 들어하는
주제 넘게 → 주제넘게
중생으로써 → 중생으로서
중에 하나 → 중의 하나
증가 뿐 → 증가뿐
지나고 있는 → 지나는
지는거다 → 지는거다
지불한 → 지급한, 낸
지져분하게 → 지저분하게
짐작컨대 → 짐작건대
짖굳게도 → 짓궂게도
짜투리 → 자투리
짧막하게 → 짤막하게
쪽팔리게시리 → 쪽팔리게끔
차용한 → 빌린
촉진시켜 → 촉진해
최선을 다하지 → 온 힘을 다하지/기울이지
추스리고 → 추스르고
컨퍼런스 → 콘퍼런스
컬럼 → 칼럼
큰 경우에 → 크면
타고 나는 → 타고나는
트랜젝션 → 트랜잭션
폄하하여 →  깎아내려
프록시 → 프락시 (외래어 표기법 at NARAINFOTECH 2009.06.11(v4.01))
피같은 → 피 같은
필요로 하는 → 요구하는
필요로 할 → 필요할
하고 있는 → 하는, 한
하길래 → 하기에
~하기 위해서는 → ~하려면, ~하려고
(발행)하는데 → 하는 데
하다보니 → 하다 보니
하지만 → 하지만,
한 가운데 → 한가운데
한가지 → 한 가지
한김에 → 한 김에
한 두 → 한두
해외여행 → 외국/재외/국외여행
향후 → (순화용어) 앞으로
현자들이 → 현자가
현혹시킬 → 현혹할
혼돈스럽게 → 혼란스럽게
휴대폰 → 휴대전화
휴우 → 후유
흥망성쇄 → 흥망성쇠
흥미로와서 → 흥미로워서
힘든 → 어려운
100 여 → 100여

수집 동기: 한국어 맞춤법/문법 검사기 쓰기에 따른 개선 활동
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
InfoQ 기사 Java EE6: EJB3.1 Is a Compelling Evolution 를 읽고 인상에 남는 내용 메모

EJB 3.1은 JSR 318로 최근 발표한 Java EE 6 에 포함되어 있다. Josh Long 은 EJB의 새로운 특징(features)으로 Singletons와 The EJB Timer, No-Interface Views, Asynchronous Services, Simplified Deployment 등을 들었다. EJB 2.x 사용자라면 생소하겠고, EJB 3.0 사용자라면 편하게 느낄 테지만, 사실 스프링(Spring Framework) 사용자에겐 전혀 새로운 내용이 아니다. 그럼에도 불구하고 No-Interface Views와 Asynchronous Services 등은 눈에 띈다.

No-Interface Views는 일종의 암묵적 인터페이스 지원이다. 스프링은 애초부터 인터페이스를 강제하지는 않았기 때문에 예전부터 지원하던 기능이다. 파일 숫자를 줄일 수 있어서 복잡도를 낮출 수는 있지만, 인터페이스 기반 프로그래밍(Programming to Interfaces)의 이점과 더불어 일관성 저하를 낳아 큰 매력은 없다.

스프링에서도 3.0부터 지원하는 Asynchronous Services는 쓰임새를 잘 찾아내면 매우 요긴할 듯하다. 내부 메커니즘이야 구현 제품에 따라 다르겠지만, 스프링과 차이는 애노테이션이다. 스프링은 @Async 이고, EJB 3.1은 @Asynchronous이다. 스프링에서도 @Asynchronous 사용이 가능하다.

스프링의 발전이 "J2EE development without EJB" 였다면 프로그래밍 모델로서의 EJB 발전 방향은 "POJO-driven Java EE development without Spring and Hibernate"에 맞추는 듯하여 격세지감을 느낄 수 있다. EJB 3.1에 대한 보다 상세한 기사는 이미 TSS에서 다섯 편으로 연재한 바 있다.




이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
Will it play in App Engine에서 확인 가능. 스프링뿐 아니라 Java Enterprise Edition (Java EE) Technologies와JVM-based Languages, Miscellaneous Java™ Libraries and Frameworks의 세 개 분류로 자바 기술 스택의 주요 구성 요소와의 호환성을 확인할 수 있다.


Spring MVC
Version: 2.5.6
Status: COMPATIBLE

Spring ORM
Version: 2.5.6
Status: COMPATIBLE

Spring Security
Version(s): ?
Status: SEMI-COMPATIBLE

Grails
Version: 1.1.1
Status: SEMI-COMPATIBLE
  • A plugin has been made available which integrates the App Engine SDK with Grails, adding features to upload Grails application automatically and run the local dev server. To download this plugin or see a screencast and tutorial, see http://grails.org/plugin/app-engine.
  • As of now, you have to use the "grails app-engine run" command rather than "grails run-app", which blocks other plugins that extend run-app including the GWT plugin. More incompatibilities noted in this thread.


이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
GUI 기반 프로그래밍 전형이다. SDK가 제공하는 인터페이스 구현(implements)를 통해 이벤트 핸들러를 정의한다.

        class MyHandler implements ClickHandler, KeyUpHandler {
            /**
             * Fired when the user clicks on the sendButton.
             */
            public void onClick(ClickEvent event) {
                sendNameToServer();
            }

            /**
             * Fired when the user types in the nameField.
             */
            public void onKeyUp(KeyUpEvent event) {
                if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
                    sendNameToServer();
                }
            }

실제 비즈니스 로직은 모아 두었다.(sendNameToServer() 메소드)

            private void sendNameToServer() {

               <중략>

                greetingService.greetServer(textToServer,
                        new AsyncCallback<String>() {
                            public void onFailure(Throwable caught) {
               <중략>
                            }

                            public void onSuccess(String result) {
               <중략>
                            }
                        });

GAE/J 가 원격 통신을 추상화시켜주겠지. 직관적인 콜백 메소드 이름(onFailure, on Success)탓에 쉽게 코드를 이해할 수 있다.

다른 GUI 프로그래밍과 다른 부분은 아래 코드다.

        RootPanel.get("nameFieldContainer").add(nameField);
        RootPanel.get("sendButtonContainer").add(sendButton);
        RootPanel.get("errorLabelContainer").add(errorLabel);

RootPanel 클래스의 add() 메소드로 HTML의 특정 영역을 지정하고, GWT 컴포넌트를 삽입한다. HTML 영역지정 코드는 다음과 같다.

        <td id="nameFieldContainer"></td>
        <td id="sendButtonContainer"></td>


이번에는 GAE/J Eclipse 개발환경의 특징이다. SDK로 서버가 배포되는 점에서 GAE/J의 포지션을 알 수 있는 부분이지만, 편리해서 마음에 든다.

The development server is part of the SDK. You can‘t use your own development server for App Engine debugging and testing. The App Engine JRE differs from other implementations.

얏호! 수 초의 작업 후에 배포에 성공했다.

http://ahnyounghoe.appspot.com/





이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
마이플랫폼 스크립트도 자바스크립트와 거의 같은 문법을 사용하므로 JsDoc 적용 가능.

D:\jsdoc>perl.exe jsdoc.pl lib
Loading sources from lib/bad.js
Loading sources from lib/irucl001.js
Loading sources from lib/iruco001.js
Loading sources from lib/iruco002.js
Loading sources from lib/iruco003.js
Loading sources from lib/irumn001.js
Loading sources from lib/irumn002.js
Loading sources from lib/irumnSSO.js
Function 'iruFormOnKeyDown' already declared
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in string eq at jsdoc.pl line 1490.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
HTML::Template->output() : fatal error in loop output : HTML::Template::param()
: attempt to set parameter 'method_returns' with an array ref - parameter is not
 a TMPL_LOOP! at C:/Perl/lib/HTML/Template.pm line 3068
 at jsdoc.pl line 179

문제가 있는 파일을 고르기 위해 개별 실행한다.

D:\jsdoc>perl.exe jsdoc.pl lib/iruco001.js
Loading sources from lib/iruco001.js
Use of uninitialized value $name in string eq at jsdoc.pl line 1490.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
HTML::Template->output() : fatal error in loop output : HTML::Template::param()
: attempt to set parameter 'method_returns' with an array ref - parameter is not
 a TMPL_LOOP! at C:/Perl/lib/HTML/Template.pm line 3068
 at jsdoc.pl line 179

D:\jsdoc>perl.exe jsdoc.pl lib/irumn001.js
Loading sources from lib/irumn001.js
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
Use of uninitialized value $name in hash element at jsdoc.pl line 1512.
HTML::Template->output() : fatal error in loop output : HTML::Template::param()
: attempt to set parameter 'method_returns' with an array ref - parameter is not
 a TMPL_LOOP! at C:/Perl/lib/HTML/Template.pm line 3068
 at jsdoc.pl line 179

로그만으로 알기 어려워 Perl 문법도 모르지만 일단 jsdoc.pl 파일을 열어 봤으나 코드만 보아선 알 수 없다. printf 명령을 넣어서 해시의 키라도 출력해보려고 했으나 암호(?)가 나온다. 구글 검색에 무언가 있는 듯하더니 페이지로 가보면 사라졌다. JsDoc 메일링 리스트 검색해도 답이 없다.

로그 문장을 보고 return 관련해서 의심스러운 코드를 bad.js로 저장해서 테스트해보니 같은 오류가 난다.

/**
 * MainFrame이 Active될때 발생되는 Event
 * @param obj - global
 * @return
 */
function _OnAcivate(obj)
{
}

@return 뒤에 공백 문자 이외의 문자가 있거나 @return 구문을 아예 없애버리면 오류가 나지 않는다.

/**
 * @param obj - global
 * @return N/A
 */
function _OnAcivate(obj)


/**
 * @param obj - global
 */
function _OnAcivate(obj)

한참 삽질을 했기에 기록을 남겨둠
  
이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회
TAG JsDoc
InfoQ 글(Are You a Software Architect?)에 메모를 추가함

이젠 앞서 정의한 아키텍처를 제대로 구현해내는 일(Delivery of the software architecture)이다.

The role of a hands-on software architect from a delivery perspective


Ownership of the bigger picture
아키텍트의 책임감을 요구하는 부분이다. 임무 완수(through to a successful conclusion)를 위해선 영업사원 마냥 개발팀 여러 구성원에게 아키텍처를 이해시키고 동조를 얻어야 한다.(sells the vision throughout the entirety of the software development lifecycle) 단기 프로젝트가 아니라면 개발 과정에서 얻어진 새로운 정보(혹은 요구사항)에 의해 변경도 필요하다.(evolving it throughout the project if necessary)

If you've defined an architecture, it makes sense to remain continuallyengaged and evolve your architecture rather than choosing to hand itoff to an "implementation team"

위 글은 두 가지 관점에서 볼 수 있다. 하나는 아키텍트의 책임감 측면이다. '아키텍트'라는 사람이 구현기술에 대한 상세한 내용은 내 일이 아니라며 미루는 모습을 자주 볼 수 있다. 물론, 본인 스스로 모든 것을 해결할 수도 없고, 그럴 필요도 없다. 하지만, 적어도 '아키텍트'가 아키텍처 이슈(시스템 전반에 영향을 미치는 사항)를 개발팀에 떠넘기는 것은 문제가 있다. 또 다른 측면은 '아키텍트'의 높은 몸값 때문에 프로젝트 초반에만 고용하는 점이다. 만일 아키텍트가 철수한다면 어떻게 아키텍처를 지켜나갈지 방책을 마련해둬야 한다.

Ownership of the bigger picture

Leadership
아키텍처는 역할에 의해 권위를 갖지만 기술적 결정과 가이드(providing technical guidance, making technical decisions) 책임 역시 갖는다. 아키텍트의 권위는 당연한 이야기처럼 들리지만 실제로 충부한 권위를 갖지 못하는 경우가 많다.(The software architect position is inherently about leadership and while this sounds obvious, many project teams don't get the technical leadership that they need ...)

Leadership

Coaching and mentoring
국내 현실에서는 아키텍처 구현을 위한 가이드를 하다 보면 자바 문법이나 디버깅 방법까지 묻는 경우가 발생하고, 새로운 기술에 대한 거부감/저항/두려움을 갖은 인력을 만나는 일이 잦다. 게다가 설계 결정까지 개발자에게 넘겨서 난감한 구현을 만들어내는 일이 흔하다. 개발인력을 일시적인 노동력으로만 보는 현상과 지나치게 개발 절차 자체를 강조하는 경우, 코드가 아닌 문서 형태의 중간 산출물로 진척을 확인하는 현상과 관계가 있는 듯하다.
Architecture delivery

Quality assurance
품질보증(QA)을 위해서 보통 '표준화'라는 추상적인 이름으로 코딩 표준이나 설계 원칙(coding standards, design principles)에 대한 리뷰가 필요히다. 리뷰는 시간과 노력이 많이 필요한 작업으로 CI 도구나 테스트 지원 도구(continuous integration, automated unit testing and code coverage tools)의 지원이 필요하다. 개발자 테스트 없는 CI 도구를 이용한 자동화 빌드만으로도 아주 기본적인 통합은 보장할 수 있다. 최근에도 형상 불일치 문제로 오픈을 못한 사이트 소문을 듣곤 하는데 일부 개발자의 변화에 대한 초기 저항감만 누르면 쉽게 적용할 수 있다. 하지만, 자동화 테스트는 조금 다르다. 현실적인 기준선(baseline)으로 DAO에 대한 테스트에 초점을 맞추는데, 테스트 품질을 높이려면 다양한 현실적 사례(가령, 조회 요청에 대한 테스트라면 복잡한 조회 조건의 현실적인 경우의 수를 뽑아내 모두 테스트케이스로 수렴해야 함)를 테스트에 담아야 하는데 능동적으로 이를 이행하기란 아웃소싱이 기본인 SI 현실에서 불가능이라고 할 수 있다. 현실적 제약을 인정하면, '모 아니면 도'식 접근 대신 중요한 코드(architecturally significant, business critical, complex or highly visible) 테스트로 범위를 좁히는 것도 실용적인 접근이다.

국내 SI 프로젝트에서 자동화 테스트는 높은 ROI(투자 대비 수익)를 뽑을 수 있다고 생각한다. 일각에서는 이를 인지하고 실천하는 움직임이 보인다. 하지만, 여전히 대다수의 프로젝트에서 QA하면 절차(프로세스)에 대해서만 고민하고, 지나치게 문서에 매달리며 시간을 낭비한다. 소프트웨어도 제조물과 마찬가지로 제품에 대한 품질이 최우선이다.

Quality assurance

Design, development and testing
Simon Brown와 내 생각은 거의 비슷하다. 그가 아키텍트의 몸값 탓("too valuable to undertake that commodity work")에 조직에서 코딩을 못하게 하는 점을 지적했는데, 외국이나 우리나 현실이 비슷한 모양이다. But generally speaking, an architect that codes is more effective and happier than an architect that watches from the sidelines. 라는 말에 동의하지만, 게다가(In addition)로 부연한 내용이 더 중요하게 생각된다.

아키텍트가 꼭 코딩을 할 필요는 없다고 생각하지만, 만일 코딩을 하지 않으면 실제로 개발자 입장(the architect can experience the same pain as everybody else on the team, which in turn helps them better understand how their architecture is viewed from a development perspective.)을 이해하지 못할 수도 있다. 최근에 고객 업무에 깊이 관여하면서 일치감을 느껴 신규 업무 설계와 화면을 만든 짜릿한 경험을 했는데, 개발자에 대해서도 마찬가지다. 유명한 국내 아키텍트 중에도 실제 구현 과정에서 겪는 어려움을 무시해서 모두를 어렵게 만드는 이에 대해 듣곤 한다.

Design, development and testing
 
개발자에게 아키텍트 역할에 대한 강연을 준비하던 글인 듯한데.. 마무리가 인상 깊다.

Most developers don't wake up on a Monday morning and declare themselves to be a software architect. I certainly didn't and my route into software architecture was very much an evolutionary process. Having said that though, there's a high probability that those same developers are already undertaking parts of the software architecture role, irrespective of their job title.

사이먼 말처럼 개발자이지만 이미 아키텍트의 역할을 (일부라도) 수행하는 이도 있다. 반대로 지겨운 개발(?)을 그만두기 위해 아키텍트를 꿈꾼다는 이해하기 어려운 사람도 어렵지 않게 만날 수 있다.

관련 글:


이올린에 북마크하기(0) 이올린에 추천하기(0)
Posted by 영회