[회고] SI에서 TDD를 - 번외적인 모습들 (1)

Posted at 2010.09.01 09:00 // in Project Life // by MOOVA 무바㏇
2010:09:01 01:37:27
으핵!! 일단 생각난 김에 뭔가를 끄적이고 싶어서 끄적였는데 글이 길어졌습니다.O.Oㅋ.
회고식으로 작성된 글이라서 수필식의 글이 되어버렸네요. 쿄쿄쿄 ㅎㅎ

기술은 사람의 요구를 충족하기 위해 존재한다.


"TDD를 알게 되고나서.."

웹 스크립트 일을 할 적엔 TDD라는 단어조차 모르고 지냈다.
왜냐하면, 스크립트류의 개발이란, 소스 컴파일을 안 해도 바로바로 결과를 확인할 수 있었고(인터프리터), 디비연동이나 모델적용 조차도 페이지를 분할해서 하는 것이 전부였으니까 말이다. 처음엔 자바쪽의 프레임웍이나 보안 체계를 보고 자바진영은 왜 저렇게 비대한 것에만 관심을 쏟아부을까?라고 혼자서 궁금해 했었고 자바에서 구현한 것들을 다른 스크립트류의 언어로(php,cgi..) 구현하더라도 충분히 똑같이 할 수가 있었기 때문에 자바에 대한 약간의 불신이 없지 않아 있었다. 그 후 실제 자바 프로젝트를 하면서 자바의 구조론을 보았고, 객체설계나 OOAD를 차차 알아가게 되었을 무렵, 여러 오픈소스들을 열어서 소스를 분석하면서 참 놀라운 신세계를 발견하곤, 또 동경의 대상이 되기도 했다. 본격적으로 TDD를 처음 알게 된 것은 해외 오픈소스를 까보기 시작하면서부터이다. 이때는 R&D로 근무했었는데 TDD가 무엇인지 그 본질을 찾기 위해 개인시간을 들여가며 여러 세미나에 참석을 하곤했다. 직장은 연구소였지만 회사경영사정이 매우 어려워 책이나 세미나 활동조차도 여력이 안 되었었던 매우 힘든시기였다. 책도 구입할 돈이 없어 무척 가난했던 시기였다. (지금에와서 그때를 회상하면 참 유익했던 시절이었던 것도 같다.) 이때 같이 근무했던 선배들은 CS프로그램이나 VB와 같은 객체디자인원리나 패턴지향, 아키텍처 지향과는 거리가 먼 사람들이 대다수여서, 디자인 패턴이라든지, 객체지향 기술이라든지, 방법론이라든지 전혀 관심들이 없었다. 아니다 관심조차 두려 하지 않았다는 게 맞는 말일 것이다.

"TDD와 짝프로그래밍을 하기 어려운 SI의 문화와 최초 짝 프로그래밍 시도"

그 후 R&D팀을 나와서 여러 SI 프로젝트를 경험하면서 매우 불합리한 SI현실을 체험하기 시작했다. 그 안에서도 사기꾼 같은 사람, 학자 같은 사람, 이간질을 하는사람, 임기응변에 능한 사람, 매우 소극적인 사람, 매우 호탕한 사람, 매우 유쾌한 사람, 매우 우유부단한 사람, 매우 논리적인 사람, 매우 가난한 사람, 매우 부자인 사람, 묻어가는 사람, 책임감 있는 사람. 등등을 다양하게 겪어 가면서 우리 SI바닥엔 참으로 다양한 인종(?)들이 같은밥을 먹으면서 살고 있구나~하고 매번 놀랄때가 많았다.
그렇게 사람을 겪어 보면서 어떻게 하면 저들이 잘하는 것, 좋아하는 것을 하게 만들어 너도 좋고 나도 좋은(win-win) 그런 팀을 만들지 또는 회사나 프로젝트 환경을 만들지.. 개인적인 목표와 고민이 항상 나를 괴롭혔다. 고작 개발자인 주제에 관리자가 생각하는 그런 생각들을 아주 오래전부터 생각해 왔던 것이다.

내가 겪었던 SI의 70%가 그냥 주먹구구식의 운영과 프로젝트 진행으로 막장의 막장을 달리는 곳이 태반이였고, 체계나 방법론등을 도입할 수도 또는 도입하려 하지도 않았다..(물론 제대로 도입해서 성공한 케이스의 프로젝트들도 있다.)
그냥 고객이 요구하니 넌 맨땅에 해딩해라~ 뭐..이런식이었을까?
그렇게 저렇게 프로젝트를 지내고 다음 프로젝트를 기다리면서 막간의 텀을 이용해서 책과 씨름하며 학습도 하며 여행도 다니며 그런식의 삶을 살고 있었다. 한번은 SS의 프로젝트에서 나와 뜻이 맞았던 어떤 개발자가 TDD와 DDD에 관한 이야기를 했었는데 '어라? 나와 같은 동족이 있네~'하면서 그와 많은 소통을 했다.
이때 처음으로 그와 짝 프로그래밍이란 것을 해봤다. 처음 하는 짝프로그래밍. 처음엔 서로 궁합이 맞아 잘 진행한 듯 보였으나 개인적인 서로의 자존심때문에 묘한 느낌을 서로 받아야 했다. 짝 프로그래밍을 하기 전에 먼저 서로의 마음이 열려있어야 하는데, 인력이동이 잦은 프로젝트에선 실제로 짝프로그래밍을 한다는 게 여간 이상한 것 같았고, 쓸데없이 그런걸 왜 하냐? 라는 주위의 눈총도 받아야 했다. 또 다음에 만날 수도 없는 사람이라는 느낌때문에, 내가 겪었던 최초의 짝프로그래밍은 그렇게 흐지부지하게 지나갔다.
사실 짝 프로그래밍을 제대로 하려면 다음과 같은 적절한 도구와 환경이 받춰줘야 한다.

※ 짝 프로그래밍의 환경

  • 둘이 함께 편안하게 앉을 수 있도록 평평한 책상. 일반적으로 개발자 쪽으로 곡선하는 책상은 쾌적한 작업 조건을 제공하지 못하기 때문에 피해야햔다.
  • 저렴하게 구매할 수있는 가장 빠른 개발을 위한 컴퓨터. 짝 프로그래밍을 위한 컴퓨터
  • 듀얼 DVI 출력 을 갖춘 비디오 카드.
  • 24 인치 또는 30 인치 모니터를 2 개. 2 대의 대형 모니터를 데스크탑 클로닝 (또는 미러링) 이 우수 합니다.
  • 2 개의 키보드와 2 개의 마우스 .

  • "여전히 빨리빨리 SI, 하지만 애자일은 건재했다."

    그 후 여러 프로젝트를 전전긍긍하면서도 RSS 정보와 개인적인 학습, 그리고 별도의 애자일 서적을 통한 지식의 도움을 추가해 TDD와 짝프로그래밍 방법, 그리고 애자일을 익혀가면서 프로젝트에 도입하려고 무척 애를 먹었다.
    하지만, 짧은 일정에 덧붙여 내가 관리자가 아닌 이상 그것들의 장점을 주변사람들에게 쉽게 설득하기가 매우 어려웠다.  항상 일정은 촉박했고 누구하나 그런체계에 관심을 두려하지 않았다.
    출근하면 해외 RSS에서 쏟아지는 애자일 관련 기사들을 보고 "외국엔 저렇게 변화되어 가는데, 왜 한국은 항상 빨리빨리만 외쳐댈까?"라는 자괴감이 들었던 것이 한두번이 아니다. 같이 짝프로그래밍을 하자고 요청했던 지나가는 개발자들은 굳이 그런걸 왜 해야 하느냐며, 일만 많아질 뿐이라는 생각에 회피를 하는 게 대부분이었다. 물론 이런 사람들도 자신이 추구하는 가치가 있기 마련이기 때문에, 나와 다르단것을 인정했고, 이런 류의 개발자들에게도 짝프로그래밍과 TDD의 사상을 알려주면서 많이 전파하려고 애를 썻다. (물론 TDD는 개인적으로 깨작거렸던 것이 전부였지만 말이다.) 우리 SI바닥에도 좋은 것들만 골라서 도입을 한다면 충분히 빨리 퇴근할 수도 있고, 더 나은 소프트웨어를 생산해 낼 수 있다는 헛된 꿈이 있었기 때문일까? 왜 SI엔 민첩한 방법론이나 TDD를 할 수 없는지 항상 안타까워했다. 분명히 도입하면 차 후 성과를 볼텐데..왜 그렇게 관심이 없는지.. 점점 개인적인 지식은 늘어만가는데 이것에 대해 서로 이야기할 수 있는 사람 조차도 없었다. 솔루션 엔지니어로 일할때도 일반 범용적인 지식과함께 도메인 특화된 특수기술을 강조하면서 애자일사상을 도입하려고 많이 애를 써봤다. 하지만 OOTB기반의 프로젝트에선 애자일은 전혀 어울리지 않은 프레임웍이었다.(성격이 다른 탓이다. 좋지 않다는게 아니라.) 그래서 늘 하는일에 만족을 하면서도 애자일과 관련된 일에 대해서는 답답함만 늘어갔다. 그래서 TDD는 스프링이나 오픈소스를 학습하면서 개인적으로 시도한 적이 많이 있었다. 또는, 프로젝트 이외의 별도의 제작의뢰건들의 소프트웨어만 개인적으로 사용하곤 했다.(본인는 프로젝트 이외에 제작의뢰건도 종종 맡아서 진행했었으므로 1년에 5개월정도는 투잡을 한 셈이다. 공식적인 프로젝트 이외에 TDD나 새로운 기술을 그런 소일거리를 통해서 적용해 볼 수 있으니 일석이조가 아닌가?)

    "후배들이 생겼고, 진정한 선배란 무엇인가에 대해 고민을 많이 했다."

    그 후 나도 머리가 굵어졌는지 동료와 후배가 생겼다.
     
    솔루션 엔지니어에서 컨설턴트와 아키텍트에 관심을 두고 학습하기 시작할 때가 바로 이 시점이다.
    이때는 주변 저명하신 블로거분들이나 실무에서 나이가 들었어도 꾸준히 연마하시는 재야의 고수들에게 책 추천을 많이 받아서 상당한 도움을 받았다.
    이 당시도 대부분의 선배들이 관심조차 갖지 않았던 민첩한 그것들을 알리려고 매우 노력했다.
    한번은 짝프로그래밍을 몇 번 같이 했던 어떤 선배의 집에 찾아갔는데 책이 한 30권정도 있어서, 관심을 보여하는 나에게 그는 "내 책에 눈독들이지마라!"라는 소리를 들었던 적이 있다. 나 원참~ 책좀 같이 공유하고 보자는 말도 절색을 하며 싫어했다. 우리주변엔 이렇게 소통을 싫어하는 개발자분들도 꽤 된다. 이때 당시는 프로젝트를 한 뒤 남는 여력으로 책을 하나하나 사놓고 공부하고 있었던 터였고, 출근해서 일하고 퇴근해서 공부하는 그런 반복되는 일상에 쪄들어 살고 있었다.
    그 후 SI를 하면서 나보다 나이많은 선배들은 대부분 책이나 스터디보다는 그냥 현실에 안주하며 살아가는 사람들이 다수였다는 것을 확인했고, 개발자들에겐 책추천이나 기술을 배워본 적도 없고, 들어본 적도 없다. 오히려 내가 그들에게 퍼주거나 알려주는쪽이었으니 말을 해서 뭐 하랴..
    ( 물론 책을 추천해주거나 사줬던 선배들에겐 아직도 감사함을 느낀다. 온라인에서 책을 추천해 주신 몇 분에게도 감사함을 느낀다 하지만 나머지는 글쎄다.... )

    그래서 매번 대체 선배라는 게 무엇인가에 대한..회의감에 휩싸였다.

    한가지 다짐한다. 경력이 더 쌓이면 텅빈 그릇이 아니라 꽉찬 그릇이 되고싶었다. 후배들 보기에 쪽팔리지 않는 그런 선배가 되리라 굳게 마음을 다졌다.  개인적인 세미프로젝트를 세워가며 학습을 했고, 퇴근 후에도 다른 언어를 익히려고 참 노력도 많이 했다. 리펙토링도 수시로 열어서 연습했고, 각종패턴도 열어서 연습했다. 일부러 짝프로그래밍도 해보려고 후배의 TASK를 대신 해 줘가면서, 애자일스러운 경험을 쌓으려고 노력을 했다. 누구 하나 알아주는 사람도 없었고, 왜 그런것을 해야 하는지 의아해하던 사람들도 있었다. 하도 답답해서 이때부터 행동을 달리했다. 이때 선택한 행동이란 후배들에게 내가 아는 지식을 먼저 알려주고, 그들이 발전하면 같은 관심사에대해 터놓고 소통할 수 있는 사람을 찾는 기대감을 현실화 하는 것이었다, 그래서 개인적으로 봐왔던 책들을 후배들에게 주거나 사주었다. 물론 직장이 안정되있고 탄탄한 회사에 다녔던 사람들은 제외다. 그들이 그렇게 지식체계를 쌓으면 나중에 나와 대화를 할 수 있는 포인트에 도달할 것 같아서이다. 하지만, 아직까지 TDD와 애자일에 대해서 누구와 시원하게 탁 터놓고 대화를 할 수 있는 사람은 별로 없었다.

    "TDD와 짝프로그래밍은 아직도 나에겐 먼 섬, 그러나 시도의 즐거움"

    개인적으로 오픈소스를 공부할 때 그리고 프로젝트를 하면서 짬이 날 때만 TDD를 시도했다. 운이 좋을때는 Eclipse의 Community Framework와 같은 플러그인을 써서 짝 프로그래밍을 도입했다. 그리고 또 잊혀만 갔다. 본인은 프로젝트에서 얻은 지식보다는 개인적인 독학으로 공부한 지식과 경험을 굉장히 중요시하고 있다. 왜냐하면, 프로젝트라는게 항상 반복되는 일상과 똑같은 업무, 그리고 똑같은 규칙으로만 살면 그럭저럭 할 수 있는 게 프로젝트였고, 뭔가 새로운 시도를 좋아하는 나에게 또 다른 나만의 연구와 학습이 필요했던 것이다. 다른사람에게 거저 들어서 안 지식과, 자신이 노력해서 일군 지식은 그 가치정도가 상당히 크다고본다. 그리고.. 그런 연구적인 취미가 아직도 나에게 남아있다.

    "후배들에게 강조하는 것"

    나는 후배들에게 개인적인 학습을 지속적으로 하라한다. 이 말은 더 강조해도 지나치지 않는다.
    물론 가치관이 다른 사람들에게는 이런 말 조차도 꺼내지 않지만 말이다.
    남들이 한 것을 그냥 배껴서 살면 항상 그 자리에 맴돈다고 설명한다.
    일은 일이고 학습은 학습이라고 이야기한다.
    그리고 지식적인 소통을 하라고 강조한다. 귀찮을때까지 말한다.
    한가지 아쉬웠던 것은 개인의 능력이란 게 모두 달라서 똑같은 패턴의 학습을 강요할 수는 없다. 이 사람의 자질과 능력에 맞게 책을 추천해주고 소통할 수 있게 하는게 나의 취미이자 목표가 되어버렸다.
    (이즈음 되면 나도 어느정도 교육자의 피가 흐르는 것 같다. 현업에게 기술적인 교육을 하거나 후배들에게 무언가를 가르칠때 많은 보람을 느낄때가 많다.)
    한번은 그런 강조와 설명이 지나쳤던 적도 있다. 그래서 도망다닌 후배도 있다. (ㅋ)
    후배가 생겼을때부터 그들에게 IT에 관련된 이야기할 때는 그 사람의 레벨에 맞추어서 이야기해야 한다는 것을 깨닫는다. 몇 번 이야기를 해보면 이 사람이 어떤곳에 위치해 있는지 대강 알 수 있는 수준이 되었다. 막 입사한 사람들에겐 쉬운단어로 소통을 해야하고 그들이 바라보는 시각으로 설명을 해주어야 한다. 또한, 그 보다 상위 레벨에 있는 사람들에겐 또 그에 맞게 낮춰서 이야기를 해야한다. 때로는 이러한 레벨의 높낮이를 잘못 판단해 실수한 적도 있지만, 최근엔 거희 실수하지 않고 적당한 수준에서 조절한다.

    "좋은 선배가 되는것은 무척이나 어려운일이다. 하지만 노력할만한 값어치는 있다"

    더 보기 좋은 선배가 되기 위해서 노력한다는것은 꽤 어려운 일이다.

    그냥 일만 시키는 선배가 될지, 아니면 일만 떠넘기는 선배가 될지, 또는 실력도 좋고 인간성도 좋고 그들에게 뭔가 더 보탬이 될수있는 선배가 될지는 개인의 노력여하에 달린 것 같다. 이런 내 마음을 아는지 모르는지 어떤 프로젝트에서는 무슨 선동을 한다고 오해를 받을적도 있다. 가끔씩하는 회식자리나 술자리에 참여하더라도 나는 "우리의 본질에 대해서 잊지말자"라는 말을 항상 동료와 후배들에게 각인시킨다. (그런 나를 선동자로 몰아붙였던 어떤 PM에게 참으로 억울하다는 이야길 하고 싶다.) 그리고 그들에게 놀 때는 놀고 확실하게 일할때는 일하고 공부할때는 공부하자는 마인드를 심어주려 노력한다.
    개인적인 모임을 통해서 스터디를 꾸미려고 노력도 많이 해 보았다. 하지만, 나처럼 지식적인 갈구를 하는 사람은 별로 없었다.
    스터디에 대해서 크게 기대하던 후배들도 몇 명 있었지만, 그들도 하는 일이 SI라서 일회성 결심에 지나지 않았다. 그들을 끌어주기 위해서 한번 제대로 된 스터디 그룹을 갖고 싶어했다. 그리고 내 지식을 물려주고 소통하고 같이 공유하고 싶었다. 그리고 또 다른 차원에 있는 사람들에게 배우고 또 공유하고 소통하고 싶었다. 배우고 공유하고 소통하고, 배우고 공유하고 소통하고, 배우고 공유하고 소통하고 그것이 그때는 전부였다.

    "만나면 헤어지고 헤어지면 만나는게 인간사,
    기술보다.사람..그것부터 모든것이 시작이다."


    하는 일이 프리랜서라 잦은 프로젝트 이동때문에 또 이들과 헤어졌고, 다시 새로운 사람을 만나야만 했다.  만남이 있으면 헤어짐이 있고, 헤어짐이 있으면 만남이 있는 것이다.
    그리고 또 새로운 사람들에게 그러한 것들을 물려주고 또한 그들에게서 영감을 얻는다.
    한번은 내 직업자체가 잦은 이동과 출장을 나가야 하는 직업이라서 신세한탄이나 푸념을 늘어놓기도 했다. 어떤 새로운 조직에서는 그런 새로운 만남도 무뎌질대로 무뎌져서 더이상 새로운 만남을 원하지도 않았다.
    프로젝트가 장기라면 좋겠지만, 단기 프로젝트가 종종 있어서 진득하니 사람들을 사귈 기회가 좀처럼 주어지지 않았지만, 쭈욱 연락하고 지내는 동료와 후배가 있어서 참으로 다행인 것 같다.
    그들은 나에게 많은 관심을 두려한다. 그리고 나도 그들에게 많은 관심이 있다.
    서로에 대해 관심이 있을때 소통할 수 있으며 결국 같이 지향하는 그곳에 다다를 수 있다고 생각한다. 비록 일터에서 만났지만 난 그들을 신뢰하고 서로간에 도움을 줄 수 있는 사람이란것에 만족한다.
    하지만 아직 이들과 같이 애자일이나 XP, 또는 짝프로그래밍이나 TDD를 이야기할만한 수준의 동료는 나에겐 없다. 하지만 기술이 전부는 아니니 인간적인 형으로써 또는 친구로써 이들을 대하고 있다. 그들도 곧 터닝포인트를 갖고 순회하리라 난 믿어 의심치 않는다. 그들이 그 쟁점에 다다랐을때 나는 또 서포트를 해줄 것이고 또 새로운 장르에 대해서 이야기 할 것이다.
    그리고 제발 퇴색되어 가는 한국의 IT현실에서 그러한 열정과 도전들이 암흑의 나락으로 내동댕이 쳐지는 일은 없을것이라고 확신한다.
     

    글이 좀 많이 길어졌다. 아..진짜 길어졌다.
    깨작거리고 싶어서 쓴글이 무척이나 길어졌고 건조해졌다는 것을 지금 깨달았다. 
    이어서 다음 포스팅에 진짜 하고 싶은 말을 할 것이다.

     


     

    저작자 표시 비영리 변경 금지
    신고
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    블로그코리아에 블UP하기
    1. Favicon of http://blog.doortts.com BlogIcon doortts

      2010.09.03 09:38 신고 [수정/삭제] [답글]

      쉽지 않은 환경에서도 노력하셨던 모습이 상상이 갑니다.:) "좋은 선배가 되는것은 무척이나 어려운일이다. 하지만 노력할만한 값어치는 있다"는 말씀도 인상깊었습니다. 기다림의 미학을 가지신것도 배울점이라 생각했습니다. 좋은글 감사합니다.

      • Favicon of http://moova.tistory.com BlogIcon MOOVA 무바㏇

        2010.09.03 20:14 신고 [수정/삭제]

        그동안 매 프로젝트에서 가치를 가지고 일하려고 애를 많이 썻었었요. 알아주는 사람 한명도 없었지만..ㅋ
        문득 생각이 나서 글을 쭈욱 적어 내려갔는데, 읽어 주셨다니 정말 감사합니다.^^

    2. Favicon of http://kimkoon.tistory.com BlogIcon 김꾼

      2012.01.10 14:56 [수정/삭제] [답글]

      관리자의 승인을 기다리고 있는 댓글입니다

    댓글을 남겨주세요.

    티스토리 툴바