자바를 좀 한다고 하는 사람들은 TDD를 들어봤을 것입니다. Test Driven Development, 즉 테스트로 주도하는 개발 방법입니다. 2003년인가 http://xper.org 에서 김창준님이 주최하는 XP 그 세번째 이야기 라고 기억되는 연극형 세미나에서 감명을 받은 이후로 계속해서 시도하고 있는 개발방법입니다. 6년째이지만 아직 잘 못하는 방법이기도 합니다.

방법이 기괴한데 먼저 테스트 코드를 짭니다. 테스트의 대상이 되는 코드를 짜기 전에 말이죠. 그래서 이런 형태가 됩니다.
assertEquals( 2, add(1, 1) );


1과 1을 인수로 하는 add() 메소드의 결과는 2와 같아야 된다는 뜻인데, 아직 add() 메소드가 만들어지지 않았지만 이렇게 먼저 선언, 또는 정의합니다. add() 메소드의 결과 동작을 먼저 만드는 것이죠. 에러 납니다. 컴파일도 안됩니다. 아직 없으니까요.

그 다음 동작은 add() 라는 메소드를 만드는 것입니다. 그럼 저 테스트 코드로 add() 메소드의 결과를 확인해 볼 수 있겠죠. 이렇게 개발을 하니 모든 메소드는 자동으로 실행할 수 있는 테스트 코드들을 갖고 있게 됩니다. 이게 모이게 되면 전체 애플리케이션을 테스트할 수 있는 집합체가 구성되는 것이죠.

그런데 이런 방식에는 테스트라는 단어의 레거시가 너무 강했습니다. 일반적인 상식에서는 테스트라 함은 후에 위치한다는 것이 자연스럽기 때문입니다.

사용자 삽입 이미지

그래서 나온 것이 Behavior Driven Development(행위 주도 개발 BDD) 입니다. 자바에서는 JBehave 라는 xUnit과 비슷한 개념으로 나온 것이 있습니다. 이에 관한 developerWorks의 기사를 추천합니다. 사실 저도 Kenny군에게서 일,이 년 전부터 계속 듣기는 했는데, 솔직히 말장난한다는 느낌이 들어서 안 했거든요.

TDD를 하지 않는 이유 중 가장 흔한 것이 "테스팅할 시간이 없어요"와 "테스트하기에 너무 복잡하고 힘든 코드"라는 것이다. 테스트 우선 프로그래밍의 또 다른 장애물은 테스트 우선이라는 개념 그 자체다. 우리 대부분은 테스팅을 감촉적(tactile) 행위, 추상적이기보다는 구체적인 행위로 본다. 우리는 경험적으로 존재하지 않는 어떤 것을 테스트하는 것이 가능하지 않다고 생각한다. 이 개념적인 프레임이 머릿속에 이미 자리잡은 일부 개발자들에게는 '테스트 우선(testing first)'이라는 아이디어가 바보 같은 일로 여겨진다.

그러나 테스트를 작성하고 어떻게 테스트할 것인가 하는 관점이 아닌, 행위(behavior)에 대해 생각해 본다면 어떨까? 여기서 말하는 행위란 애플리케이션이 어떻게 동작'해야' 하는가, 즉 본질적으로 그것의 명세를 말하는 것이다.


국내에도 IDD라 하여 Intention Driven Development를 얘기합니다만 가장 빨리 만들어 내는 방법이라 하여 얘기한다면 BDD와 다르다고 할 수 밖에 없을 듯 합니다. TDD나 BDD의 장점은 Test Harness를 마련해서 기능 추가나 변경에 따른 영향도 감지가 부수적으로 오게 되는 것인데, 그것을 얘기하지 않는다면 유지보수하는 사람들의 고통이 필요하기 때문이죠.

http://www.okjsp.pe.kr:8080 에 JIRA를 설치했습니다. 누구나 가입해서 okjsp-site에 관한 버그나 이슈를 등록할 수 있습니다. 처리하는 개발자는 관리자가 할당할 수 있습니다.
이것을 이클립스의 Mylyn을 통해서 연결할 수 있습니다. 관련된 Mylyn 페이지 주소입니다.
http://www.eclipse.org/mylyn/downloads/

이클립스의 메뉴에서 Help > Find and install 을 통해서 두 개의 Remote Site를 등록합니다.
Mylyn 과 Mylyn Extas 두 사이트를 새로 등록해야 합니다.

사용자 삽입 이미지

extras에는 JIRA plugin 이 포함되어 있습니다.
사용자 삽입 이미지


등록을 마쳤으면 두 개의 체크박스를 선택하고 Finish로 다음 단계로 넘어갑니다.
사용자 삽입 이미지



Mylyn Extras 에서 Integration 아래 있는 Mylyn Connector : Jira 를 선택하고 우측에 있는 버튼 중에 Select Required를 클릭하면 연관된 플러그인을 자동으로 선택해 줍니다.
사용자 삽입 이미지


이렇게 하면 Mylyn에서 지원하는 JIRA 플러그인을 설치할 수 있습니다.

팔 씨름을 할 때 팔의 각도를 좁혀야 힘을 쓰기 편합니다. 그래서 잡은 손에 대해서 그리고 자세에 대해서 굉장히 많은 신경을 쓰게 되죠. 시작 전에 판가름이 난다고 할 수도 있습니다.
판 이란 말은 영어의 플랫폼(platform)과 같다고 생각합니다. 웹 2.0의 키워드 중에 플랫폼이 있었고, UCC가 그 플랫폼 위에서 각광을 받았습니다.

구글이라는 회사가 시작할 때는 이미 검색엔진 시장이 포화 상태라고 할 수 있었습니다. 야후, 알타비스타, 라이코스, 인포시크 등의 검색엔진들이 포진한 상태에서 황당한 진입구 하나만 가지고 출사표를 던졌습니다. 제 기억에는 검색 엔진이 빠르다는 표시로 검색 결과 페이지의 검색 완료 시간을 표시했던 것으로 기억합니다. 검색을 한다는 영어단어로 구글링한다는 표현이 나온 것은 오래 걸리지 않았습니다.

G마켓이라는 회사가 구스닥(Goodstock)일 때 관심을 가진 사람들은 많이 없었습니다. 지하철에 "G"라는 영문자 이니셜로 많은 사람들의 궁금증을 갖게 하는 마케팅을 했을 때 혹시 구글이 국내에서 정식 서비스를 시작하는 게 아닌가 생각하기도 했습니다. 쇼핑몰의 판을 벌여 놓고 파는 사람들과 사는 사람들을 연결해 주는 서비스를 키웠습니다. 이것을 오픈 마켓이라고 부르기 시작했습니다. 경매 사이트인 옥션 마저도 오픈 마켓으로 돌아섰습니다. 옥션에서 요즘 경매를 하는 사람은 아주 드물어졌다고 합니다.

네이버라는 회사가 있습니다. 인터넷, 아니 컴퓨터를 모르는 분들도 TV광고에서 반복적으로 연두색 네모 박스에 길들여졌습니다. 네이버에서 땡땡땡을 검색하세요 라고 말이죠. 스펀지라는 프로그램에서 똑똑한 사람들은 네이버에서 정보를 찾는 것으로 비쳐졌습니다.

판의 존재의미는 가치획득입니다. 그것이 용이한 곳이라면 사람들은 모여들게 되어있습니다. 현재 판을 분석하고, 새로운 판을 생각하고 시도하는 것, 그래서 새로운 시장을 만드는 것. 이것이 마케팅(marketing)입니다.

결국 PC에서 업그레이드를 실패한 탓에 문래역 옆의 영등포 LG A/S센터에서 수리를 받았습니다. 메인보드 교체였고, 그 동안 폰에 있던 데이터는 모두 날리기로 결정했습니다.

아주 예쁜 여자 엔지니어였는데, 메인보드 비싸다고 소중하게 쓰라고 당부를 하시더군요. ^^;
비싼 건데 소프트웨어 좀 더 잘 만들어주시면 좋았을 것을...

여튼 폰 연결해서 쓸 때는 컴퓨터 껐다가 키고, 예전 CD-ROM 구울 때처럼 아무 것도 건드리면 안 될 것 같네요. 휴대폰 새로운 펌웨어 나오면 A/S 센터가서 업그레이드 해달라고 해야겠네요. 기사가 예뻐서 그런 것은 절대 아닙니다. ^^;

전화번호 동기화된 것 400개 다운 받으니 새출발이네요. 쩝.

아흐~ ipod touch를 잃어버린게 한스럽습니다. 술이 웬수야... 터치는 그게 진짜인데 말이죠.
PC를 이용해서 업그레이드를 시도해봤습니다.
시키는 대로 했는데,
사용자 삽입 이미지


실패했습니다. 조치방법도 따라해봤고, PC도 바꿔봤지만... ㅡㅡ;
실패했습니다.
사용자 삽입 이미지


내일 A/S 센터에 찾아가봐야겠습니다.


그리고 2.0.0.8 버전 업데이트 되었네요. 오늘. ㅡㅡ;

사용자 삽입 이미지

ps. 오늘 오전에 A/S 센터에 갔는데, 윈도우 창이 많이 열린 상태에서는 뻑날 수도 있다고 하네요. ㅡㅡ; 그 메시지를 못 본 게... 기기 업글 메시지에 중요하다고 표시를 해놓지 않아서 못 봤을 수도...
뷰티폰의 컨텐츠 관리용 PC프로그램인 Mobile Sync II의 버전이 2.0.0.7로 업데이트 되었습니다. 2.0.0.6과는 다르게 처음 시작시 자동 업데이트를 선택해서 진행해도 잘 동작하네요. 2.0.0.6은 자동 업데이트를 통해 설치한 경우 제 PC에서는 동작하지 않았습니다. ㅡㅡ;
사용자 삽입 이미지


뷰티폰이 자랑하는 500만 화소 사진 이미지를 관리하는 페이지입니다. ipod 처럼 자동 싱크되지 않고, ipod sync의 10배는 더 걸리는 듯한 느낌입니다. ㅡㅡ;
사용자 삽입 이미지


이미지를 내 컴퓨터로 가져오는 것 말고도 뷰티폰 내의 이미지를 보기 위해서는 썸네일 같은 이미지를 생성해야 한다고 합니다. ㅡㅡ; 이미지 하나당 20초정도 걸립니다. 20초*31은? 10분입니다. 컥.
사용자 삽입 이미지


가져온 결과입니다. ㅡㅡ; 이거 사진은 뷰티폰 내에서만 보라는 의미같네요. ㅡㅡ;
사용자 삽입 이미지


음... ㅡㅡ; A/S 심각하게 고려중입니다.

사용자 삽입 이미지

Communication


is the MATTER





소통은 다른 말로 "배려의 기본"입니다.

기능이 많은 것을 익힐 때 TV리모컨을 생각하면 좋습니다.
버튼이 많지만 TV를 켜고 끄는 것, 그리고 볼륨을 조절하는 것, 채널을 바꾸는 방법만 알면 TV리모컨을 사용할 수 있는 것이겠지요.

수많은 메뉴들이 있는 프로그램을 사용할 때도 마찬가지라고 생각합니다. 핵심기능은 5가지 정도로 정할 수 있을 것입니다. 오히려 수많은 기능이나 메뉴에 압도되어서 선뜻 사용하지 못하는 경우가 생길 수도 있는데, 핵심기능이 무엇인지 간파를 하면 쉽게 공략해 나갈 수 있지 않을까 생각됩니다.

IDE가 그렇고, JIRA와 같은 이슈트래커가 그렇고, 수많은 프로그램들이 그렇습니다.

세상에서 제일 어려운 것이 평가하는 것입니다. 성경에서 가라사대 "여기 누구 죄 없는 자가 먼저 돌로 쳐라"라고 했는데, 돌을 집는 행위 자체가 평가할 자격이 있다는 얘기입니다. 블로거들끼리 뒷말하는 것과 평가하는 것은 다릅니다. 비평하는 글이라고 얘기는 하지만, 내가 내 생각 블로깅한다고 얘기는 하지만 사람들 몰려와서 구경하면 거의 다 이렇게 얘기합니다. "나는 평가(비평)할 자격이 없는 사람이다. 하지만 그냥 조용히 있자니 신경쓰여서 속에 있는 말 얘기합니다"라고 말 그대로 발 뺌하는 겁니다.

다른 말로 오리발 내미는 것이지요. 김혜su 처럼.

2MB 정부도 제대로 되려면 성적 매기는 평가단이 있어야 됩니다. 남대문 화재처럼 아무도 그 잘 잘못을 책임지지 않는다면 정책 자체가 막 나갈 수 밖에 없습니다. 놈현아저씨는 스스로 잣대가 있는 분이었습니다. 선비정신이라고 할 수 있죠. 풍류를 알고, 시대를 알고. 거기에 입도 살으신 분이었습니다.

결론부터 말하자면 제대로 된 기업의 소프트웨어를 원하면 사람을 잘 키우고 그에 맞는 대우를 해줘야 제대로 된 소프트웨어를 만들어서 서비스할 수 있습니다.
아웃소싱으로 전문가를 영입해서 자사의 부족한 역량을 채울 수 있겠지만, 핵심적인 비즈니스 노하우를 외부전문가에게 맡긴다는 위험이 있습니다. 아웃소싱한 업체가 경쟁사에도 동일한 비즈니스 서비스를 복제할 경우도 있기에 자사에 만들어 놓은 서비스의 희소성이 떨어지게 됩니다.
사람을 키워도 그 사람이 성장하는 만큼 금전적 보상이 따르지 않으면 그 사람의 능력을 탐하는 돈 많은 기업으로 떠날 수 밖에 없습니다. 신입사원 시절 기술을 잘 배워서 업무적 성과나 팀내의 기여도가 보통 이상일 경우, 업계에서 통상적으로 지불하는 월급 내지는 연봉의 상승이 있어야 자신의 존재감을 느끼고 조직에 남아있게 됩니다. 만약 그러하지 않다면 심한 좌절감 내지 이용당하고 있다는 생각에 조직을 떠날 기회를 찾게 됩니다.

SI, 시스템 통합(System Integration)입니다. 왜 시스템을 통합할까요. 전사적 자원(Enterpise Resources)을 효율적으로 관리하기 위함입니다. 효율적이라 함은 비용 대비 효과가 좋은 것을 뜻하는데, 매출 증가보다는 비용절감에 목표가 맞춰져 있다고 생각됩니다. 결국은 인력 고용을 줄이는 방향으로 전략을 세울 것이고, 프로젝트가 완료하고 나면 많은 자리를 컴퓨터가 대신하게 되는 것이죠. 이런 프로젝트가 SI 입니다.

이런 프로젝트에 자사의 인력을 배치해서 프로젝트를 진행한다면 더 이상 좋을 것이 없습니다. 하지만 SI 프로젝트의 주변을 살펴보면 "인력 좀 구해봐"라는 소리가 아주 빈번하게 들립니다. Time to market, Time to market 해서 빨리 만들어서 서비스를 진행해야 시장에서 우위를 선점한다고 합니다만, 구글이 그렇게 시장을 선점했는지는 의문을 가질 수 밖에 없습니다. 구글은 주식에서 번 돈으로 괜찮은 서비스들을 M&A 해서 영역을 넓혔다고 하는 것은 일견 맞지만 그게 다는 아닙니다. M&A에 능한 S모 그룹과 달리 구글이 그나마 잘 하는 것은 M&A한 서비스들의 Mashup입니다. 다시 국내 SI로 돌아와서 얘기하자면 국내 표준 프로젝트 개발기간은 2~3달입니다. 거의 기정사실화 된 것이죠. 설계와 아키텍트, 기획을 얘기하지만 한 큐에 모든 것을 다 날리기 위해서 전략적 접근보다는 일단 오픈하자라는 쪽으로 접근합니다. 고객 서비스를 위한 프로젝트라기 보다는 오픈했다는 성과지향적 숙제라고 할 수 있죠.

이렇게 각박하게 돌아가는 SI 시장에서 인간미를 찾기는 힘듭니다. SI프로젝트가 프로그래머의 실력을 키울 수 있는 전장(battle field)라고 얘기합니다만 살아남기 위해서 몸부림치는 프로그래밍 습관은 좋은 소프트웨어를 만들기 위한 협력보다는 납기일을 지키기 위한 자기방어적 책임면피 습관이 되어버립니다. 다시 말하면 프로그래머의 Last Chapter(마지막 장->막장)일 수 있죠. 극도의 스트레스로 건강을 잃어버리거나 심지어는 죽음에도 이르게 합니다. 관련글: http://www.okjsp.pe.kr/tag/죽음

SI 프로젝트의 외주 관행은 없어졌으면 합니다. 유지보수 계약 대신 자사 직원으로 영입해서 책임감 있게 내부 사정을 잘 아는 사람들이 프로젝트에 투입되면 좋겠습니다.

더 이상 국가 또는 금융권의 중차대한 프로젝트라는 말에 현혹되어 총알받이로 머릿수 채우기 위해 투입되는 SI 학도의용군은 없었으면 좋겠습니다.

사용자 삽입 이미지
image from : http://news.chosun.com/site/data/img_dir/2007/05/06/2007050600445_0.jpg

+ Recent posts