[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

레이블이 에릭 감마인 게시물을 표시합니다. 모든 게시물 표시
레이블이 에릭 감마인 게시물을 표시합니다. 모든 게시물 표시

2016년 3월 3일 목요일

[EP]Erich Gamma와 함께 여는 개발자 세상 세미나 #2..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

2세션 에릭에게 무엇이든 물어보세요
20분간의 Coffee Break뒤에 1시간가량의 "에릭에게 무엇이든 물어보세요"라는 Q&A시간이 있었습니다. 아무래도 워낙 유명하신 분이니 처음에는 질문이 약간 주춤하는 듯 하더니 나중에 시간이 모자랄만큼 질문이 쏟아졌습니다. 제가 잘 모르는 부분도 있고 이해못한 것도 있어서 다 정리는 못하고 이해한 정도로만 정리하였습니다.



Q. 애자일을 팀에 적용하려면 찬성하는 사람도 있지만 반대하는 사람도 있는데 어떻게 도입을 하는가?

A. 반감이 있는 사람과 1:1로 함께 개발을 해보는 것이 좋다. 그 사람이 장점을 직접 경험해 보아야 깨닫는다.

Q. 요구사항에 대한 특별한 관리법이 있는가?
A. 요구사항은 항상 바뀔 수밖에 없다. 쉽지 않은 문제다.

Q. 한국에서 개발자들의 처우는 별로 좋지 않은데 다른 나라의 개발자 문화는 어떠한가?
A. 문화권별로 차이는 있지만 스트레스가 많은 업무이다. 항상 과도한 업무를 진행할 수는 없기 때문에 집중적으로 일하는 시기와 릴렉스 할 수 있는 시기가 파도처럼 번갈아가면서 오는 것이 좋다.

Q. RTC가 너무 기능이 많아서 시러하는 사람도 있는데 이런 사람들은 어떻게 설득하는가?
A. 중요한 것은 자기 일을 공유안하면 안되다는 이해가 필요하다는 것이다. 이것은 팀 차원의 개념 공유가 필요하고 RTC는 개별 팀원별로는 없고 팀레벨의 리포트만 있기 때문에 개인을 감시하기 위한 것은 아니다.

Q. 에릭감마가 디자인 패턴의 세계를 열었으나 소프트웨어 크리에이티브 책을 보면 대개 직관에 의해서 설계를 한다는 이야기가 있다. 현실의 세계는 너무 다양하기 때문에 경험에 의존하여 한다는 것이고 실제 Problem Domain의 정의가 여렵기 때문이다. RTC도 어떤 표준을 제공한다고 할 수 있는데 현실에 맞추기에는 어렵지 않은가?
A. 과거의 일로 배우는 것은 중요하다고 생각하며 경험과 직관 모두에 의존해야 한다. 경험이 많을수록 어떤 Pattern이 떠오르게 되지만 경험이 없으면 알려진 Pattern등으로 다른 사람의 경험을 활용할 수 있다. Pattern을 이용해도 이것을 Template처럼 어디에나 적용하려고 하면 안되고 Pattern에서 시작해서 상황에 따라 적용해야하며 이런 점에서 패턴과 직관이 완전히 다른 얘기는 아니다.
책에 나오지 않은 패턴도 생각해야하고 책이 나온지 오래됐기 때문에 실제로 너무 오래된 패턴들도 많은 것이 사실이다.

Q. API설계시 어떤 기준을 가지고 정의하는가?
A. 사용의 용의성과 이해하기 쉬움이 가장 큰 기준이다. API의 사용 용이성을 평가하기 가장 좋은 방법이 Unit Test이며 또한 고객의 피드백도 좋은 방법이 된다.

Q. 엔터프라이즈 아키텍쳐에서는 실제 구현되는 소프트웨어와 문서가 동일하지 않은 것이 가장 큰 불만중의 하나인데 Jazz에서는 이 문제를 어떻게 해결하는가?
A. 현재 RTC는 Construction과 Development의 협업에 대해서만 초점을 맞추고 있다. 차후 계획은 가지고 있지만 아직은 안되고 있다.

Q. Jazz 대쉬보드가 Dojo로 만들어졌는데 사용해 보니 Dojo가 좀 느린 편인데 Jazz에서 사용할 때 속도 개선방법들이 있는가?
A. CSS모듈처리, 압축 등 상당히 많은 튜닝을 가했으며 쉽지 않은 작업니다.
질문에 답하고 있는 에릭감마 질문에 답하고 있는 에릭감마

Q. 투명성(Transparency)에 대해서...
A. 투명성은 양방향이 중요하다. 팀장이 팀원들의 일에 대해서 알고 팀원들은 팀장의 일에 대한 정보를 알아야 한다.

Q. Jazz를 디자인할 때 가장 중점둔 것은 무엇인가?
A. 실제 존재하는 Pain Point를 해결하는 것이 목적이었으며 버전에 대한 의존성에 대해 많은 고민이 있었으며 이것을 REST베이스와 Loose Coupling으로 해결을 했다. 최초부터 완벽한 디자인은 없으며 계속 진화해 나아가야 하며 사실 처음 디자인한 것은 너무 복잡해서 확장이 불가능했으며 피드백 받아서 심플하게 변경하였다. 디자인은 쉽지 않은 일이다.

Q. 퀄리티 매니저를 만드는 이유는 무엇인가?
A. 테스트 관리는 좀 더 협업이 필요하다. 개발과 테스트는 보통 협업이 잘 안되고 있으며 테스터는 왜 이렇게 개발했는지 모르고 개발은 테스트하기 위해서 기다리고 있다는 것 조차 모른다. 협업이 목적이다. 이미 나온 테스트툴들도 많기 때문에 이런 툴들과의 통합도 필요하며 고객이 툴을 선택해서 REST로 통합하는 구조가 궁극적인 목표이고 이것이 OSLC이다.

Q. 개발자에게 창의력이란?
A. A에서 B로 가는 길을 찾는데 피드백을 받고 테스트를 하면서 가장 효율적으로 가는 것이며 이게 문제를 해결하는 방법이다. 개발자라는 Job이 흥미로운 이유는 어떤 때에는 이미 한 것을 다시 하기도 하지만 어떤 때에는 완전히 새로운 것을 한다는 것이다. 그래서 행복감을 느낀다.

Q. Jazz가 PMS(Project Management System)인데 실제로 쓰이고 있는 곳이 있는가? 한국에서는 개발자들은 RTC나 Trac같은 툴로 인수인계가 가능하고 도움이 되지만 산출물로 문서작업을 많이 하게 되는데 해외에서는 문서가 아닌 이런 툴로 산출물의 역할을 하기도 하는가?
A. Jazz는 플랫폼이고 그 위에 많은 Product가 올라간다. RTC는 애자일을 서포트하는 역할이며 전통적인 방법론을 지원하는 툴은 따로 또 있다. 애자일만을 위해서 RTC라는 툴을 분리한 이유는 애자일은 초기에 설계하는 방식부터 접근방법자체가 완전히 다르기 때문이다. Jazz가 산출물을 위한 리파지토리도 제공하기 때문에 도움이 될 것이다.

Q. 당연한 방향이기는 하지만 Eclipse가 점점 커지고 있고 Plugin 개발자는 알아야 될 것도 많고 인수인계를 해야할 내용도 점점 많아지고 있다. 반갑지많은 않은 일인데 계속 이런 방향으로 진행될 예정인가? 그리고 Eclipse나 RTC 개발자가 이런 방향을 바라보는 자세는 어떠해야 하는가?
A. 이런 추세를 바라고 있는 것은 아니지만 피할 수는 없다. 이런 문제는 이클립스 팀도 충분히 인식하고 있으며 고민하고 여러가지 실험도 하고 있다. 궁극적인 추구는 역할(Role) 베이스로 가는 것인제 Role에 대한 정의가 쉽지 않아서 진행이 빠르지는 않다. 반가운 것은 점점 웹UI로 옮겨가는 단계이기 때문에 좀더 쉬워질 가능성이 높아지고 있다.
또하나 중요한 것은 이클립스 베이스로 Role에 맞게 UI를 변경가능하도록 되어야 한다. 이미 이런 기술을 가지고 있으며 복잡성을 해결하기 위한 방법중 하나이다.

 
싸인회 중인 에릭감마

네임밸류가 역시 있어서 그런지 세미나 끝나고 싸인회도 하더군요. 이럴 줄 알았으면 싸인받을 책이라도 하나 준비해 가는 건데 그랬습니다. 에릭감마랑 사진도 찍어주었는데 부끄러워서(?) 싸인만 받아왔습니다.
에릭감마의 싸인을 받은 마우스패드

세미나 참가선물로 준 마우스 패드의 에릭감마의 싸인을 받아왔습니다. 아까워서 쓰지도 못하겠군요... 패턴책이라도 하나 가져가져 싸인받았어야 했는데 아쉽군요. ㅎ


PS. IBM에서 이 행사의
동영상 다시보기를 제공해 주는군요. - 09.10.30 -

[EP]Erich Gamma와 함께 여는 개발자 세상 세미나 #1..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

Erich Gamma와 함께 여는 개발자 세상 세미나
IBM에서 에릭감마를 초청해서
"Erich Gamma와 함께 여는 개발자 세상"이라는 제목으로 세미나를 열었습니다. 에릭 감마는 아시는 분은 아시겠지만 GoF(Gang of Four)중의 한명입니다. GoF는 Design Patterns (번역서)책의 저자로 이 디자인패턴이 프로그래밍의 새로운 지평을 역사적인 서적입니다.(라고 하더군요. 내공이 딸려서 아직 못읽어봤네요.) 어쨌든 이 책을 지은 에릭 감마(Erich Gamma), 리처드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시데스(John Vissides) 이렇게 4명을 Gang of Four라고 부릅니다. 역사적인 분들이시죠.. ㅎㅎㅎㅎㅎ

그 중의 에릭 감마는 제가 제일 좋아하는 IDE이기도 한 Eclipse의 창시자로 지금도 Eclipse 개발그룹을 이끌고 있습니다. 2주전에 에릭감마가 온다는 얘기를 듣고는 냉큼 신청해 놓고는 눈치보다가 이번주에는 바쁜일도 없고 해서 허락을 맡고 갔다 왔습니다. GoF중의 한명인 랄프 존슨도 지난주 토요일(15일)에 국내에서
세미나가 있었습니다. 다음 달에는 켄트벡이 온다는 소식이 들리던데.... 평생 한번 볼 수나 있을까 했던 분들이 갑자기 대거 한국에 오시는군요. ㅎㅎ

사용자 삽입 이미지

행사는 위와같은 순서로 진행되었습니다.

에릭감마와 함께 여는 개발자 세상 세미나

세미나 처음에는 IBM 이승재 사업부장의 간단한 환영사와 한국소프트웨어진흥원 SW공학단의 이상은님의 축사로 시작되었습니다. 근데 머 말이 축사이지 왜하는지 알 수 없는 소프트웨어공학에 대한 PPT로 이어졌습니다. ㅡ..ㅡ

어쨌든 이어서 드디어 기다리던 에릭감마의 "협업을 위한 개방형 소프트웨어 개발 플랫폼 Jazz 및 협업 개발 환경 솔루션 RTC 소개"가 이어졌습니다.

에릭감마가 진행한 PPT는 "how (8 years of) eclipse changed my views on software development"라는 제목이었는데 파일로까지는 제공해 주지 않아서
에릭감마가 QCON 2008에서 한 PPT를 가져왔습니다.(작년에 한거라서 7 years이네요.. ㅎ) 약간 변경되긴 했는데 대부분은 거의 비슷하더군요.
포스팅 뒤에 IBM에서 발표자료를 보내주었습니다.
IBM사이트에서 PDF 다운로드가 가능합니다 첨부했던 작년자료도 올해 발표자료로 교체하였습니다.

Eclipse 개발
발표는 이클립스에 대한 설명부터 이어졌습니다. 처음에는 이 얘기를 왜 하나 했는데 이클립스를 개발하면서 겪은 경험을 토대로 개념이 발전되면서 구성된 것이 Jazz라고 할 수 있는것 같습니다. 이클립스가 앞으로 Jazz가 된다는 것은 아니고 이클립스 개발이 진행되면서 에릭 감마가 구상한 시스템이 Jazz라는 형태로 실체화 된 것 같습니다.

이클립스를 만들고 사용하면서 바뀐 생각들부터 얘기하고 있습니다. 이클립스는 2000년에 시작되었습니다. 건물을 예로 들면 건물의 위치, 구조, 전선, 가구들의 수명이 다릅니다. 벽이나 구조, 땅 등은 수십년에서 수백년을 가지만 가구들같은 경우는 몇년마다 바뀌기도 합니다. 이클립스도 이렇게 레이어마다 수명이 다르게 구성되어야 하고 그 기반시스템(Structure foundation)을 플러그인(plug-in) 아키텍쳐로 결정하였습니다. 그리고 이 플러그인은 API에 의존적입니다.

그래서 API가 중요했고 API의 디자인이 필요했습니다. 그리고 UI는 계속 진화하고 있습니다. 여기서 중요한 결론은 모듈화가 중요하고 모든 것은 플러그인이고 API는 거대한 약속인데 안정성이 중요하고 너무 많은 것을 정의하려고 하지는 않았습니다.

이클립스 3.4에서는 API의 Baseline를 선택할 수 있게 되어 있는데 API는 계속 발전하여야 하는데 버전에 종속되지 않는 것이 좋다는 결론이 나왔습니다. 마치 인터넷 처럼 URL과 HTTP로 정의되고 각 요구들이 Link로 연결이 됩니다. 그래서 API스타일을 REST스타일로 변경하였습니다. 이것이 실체화 된것이
OSLC입니다. 이클립스는 Jazz로 발전하고 Jazz는 RTC로 구체화 됩니다.

Eclipse의 오픈소스화
2002년에는 이클립스에게 큰 변화가 생기는데 이클립스의 오픈소스화가 결정됩니다. 그 이전까지는 스위스 은행처럼 폐쇄적인 방식이었습니다. 그래서 개발자와 사용자간의 소통이 없었고 사용자들이 무언가를 물어보아도 알려줄 수 없다는 대답만 할 뿐이었습니다. 하지만 에릭감마는 개발자와 사용자의 커뮤니티를 믿고 있습니다. 그래서 2002부터 오픈소스화가 결정되어 그뒤로는 오픈소스로 진행이 됩니다.

이클립스팀은 선적(Shipping)을 중요하게 생각합니다. 일정 퀄리티이상이 되었을 경우에만 선적을 하며 얼마나 선적했냐가 팀의 공헌도를 증명하게 됩니다. 오픈소스화가 되니까 공개적으로 기술적인 논의를 하는 것이 솔직히 좀 두려웠었다고 합니다. 이 과정에서는 오픈소스는 투명한 사용자 커뮤니티와 개발자간의 피드백이 선순환 되는 아주 훌륭한 이 모델이며 오픈소스프로젝트에 제한은 없기 때문에 이 모델을 상용에 적용하여 개방형 상용개발을 할 수 있습니다.

개방형 상용개발(Open Commercial Development)을 Jazz에 적용하였고 사용자 피드백으로 품질을 향상시킬 수 있었습니다. Eclipse Way Practices는 특별한 것은 없습니다. 여러가지 방법론등이 있는데 그 방법론 자체는 중요하지 않고 어떻게 조합하는 가가 중요합니다. 그렇게 해서 점진적으로 가치(Value)를 증가시켜야 합니다. 그래서 원하는 Value(보통은 일정)을 극대화 할 수 있도록 하였습니다.

Iterative - No hanging rope PPT화면

위 화면은 에릭감마가 강조하였던 그림입니다. 과거에는 빨간줄처럼 되었다면 이제는 늘어지지 않게 반복주기를 촘촘하게 함으로써 스트레스를 줄입니다. 반복적이고 적응되어가는 계획, 디자인/리펙토링, 통합과 테스팅, 딜리버링과 데모, 피드백, 학습등을 끊임없이(continuous) 수행되어야 할 일들입니다. (이건 애자일에서 얘기하는 것을 말한것 같군요.)

JAZZ와 Team Concert
하지만 이클립스에서 어려운 점(Pain Points)들이 있었습니다. 그것은 협업(Collaboration), 개발(Development), 프로젝트 관리(Project Management)입니다.

이클립스를 만들때에는 한명의 개발자에게 초점을 맞추었었습니다. 하지만 지금은 팀과 팀의 협업에 초점을 맞추어야 합니다.그것이 Jazz와 Team Concert입니다. Open Lifecycle services Interrations위에 Jazz Team Server가 올라가고 그 위에 많은 툴들이 올라가고 서로 Intergration이 가능합니다. RTC(Rational Team Concert)가 그중 하나입니다.

RCT의 개발은 4년전부터 이클립스 팀에 의해서 시작되었습니다. 소스관리, Work Item, 빌드, 프로젝트 상태들이 통합되어 있습니다. Invitation메일을 받고 팀원들이 가입을 할 수 있으면 일정, 현재 하는 질, 진행사항, 테스트, 소스코드, 일 할당, 결정 추적, 소스리뷰등이 통합되어 있습니다. 이 모든 것을 Jazz의 대쉬보드에서 볼 수 있습니다. (보통은 문서로 만들어서 잘 안읽어보게 되는)팀내의 룰이나 프로세스를 강제해서 새로온 참여한 팀원들에게 강제할 수 있습니다.

목표는 팀작업의 효율성을 높이는 것입니다. 문제가 생길 경우 Jazz의 대쉬보드를 통해서 쉽게 파악할 수 있습니다. 개인적인 대쉬보드와 팀의 대쉬보드뿐만 아니라 팀들의 팀단위(프로젝트 레벨)의 대쉬보드도 제공하고 있습니다.

오기전에 Jazz와 RTC(Rational Team Concert)에 대해서 좀 공부를 했었는데 내용이 복잡해서 대충 감정도만 잡았습니다. 에릭감마가 만든 Jazz는 개방형 협업 개발플랫폼이고 RTC는 Jazz플랫폼에 올라가는 Product중 하나로 애자일개발에 맞게 구성된 솔루션입니다.

세미나 핸드북과 동시통역기 프리젠테이션 중인 에릭감마 프리젠테이션 중인 에릭감마

생각보다 양이 많아져서 포스팅을 나눠야겠습니다.

아무래도 Jazz플랫폼과 RTC라는 툴에 대한 세미나 였기 때문에 툴 사용법을 가르쳐 주는 것을 의도에 맞지 않았을 때고 가볍게 시연을 해주기는 했지만 협업플랫폼이라는 타이틀도 규모가 크고 RTC자체가 기능이 너무 많아서 시연정도로 다 파악하기엔 무리였습니다. 결국 제대로 어떤 툴인지 파악하기 위해서는 실제로 사용을 점 해보아야 할 것 같습니다.


My Comment..
해당 포스팅은 가져올까 말까 고민을 했었다.. 시간이 꽤 흐르기도 했서 이제와서 가져온다고 도움이 될까라는 생각을 하면서 안갖고 와도.. 햄의 포스팅은 다 읽어보고 있기에 읽어봤는데.. 햄의 말처럼 Eclipse 의 창시자고, 대부분의 개발자가 쓰는 Eclipse 에 대해서 여러가지 설명들이 있어서.. 어떻게 개발이 되어간건지.. 탄생한건지.. 어떤 기타 히스토리가 있었는지 봐두면 좋을 듯 해서 가져왔다..