계획대로 안 되는 것이 인생인데 작게는 블로그에도 적용되는 구나~ 라고 느끼는 것이, 최근 글감이 많이 생겨서 한번 제대로 써볼려고 하니 귀찮음과 졸림의 방해 요소를 만나서 계속 쓰고 싶은 글을 못 쓰고 있습니다.

그 중 이번주에 재미있는 글감이 하나 생겼습니다. 바로 동료 직원과 나눈 ‘프로그래밍 기술 관련 얘기’ 였는데요. 나중에 곰곰히 생각해 보니 하나의 ‘객체지향 토론’을 한 것이 되었습니다.

그래서 이 토론 내용을 블로그에 올리면 다시 한번 내용 정리도 되고, 잘 정리될 경우 구독자 읽기에도 유익할 것 같아서 쓸라고 했더니만, 주제의 무게감과 글 길이의 부담 때문에 망설이다가 결국 잠만 자게 되었습니다.

그래서 생각한 복안이 처음에는 연재 형식으로 쪼개서 여러 번 포스팅 하고 연재 글이 잘 완료 되었을 경우 하나의 글로 다시 묶어서 여러 메타 블로그에 발행하는 것도 좋겠다는 생각이 들었습니다.

그래서 한번 연재 형식으로 ‘객체지향 토론’ 내용을 써볼려고 합니다.


+ 최신 기술이라고? 또 다른 삽질이 등장했군 흠냐~ ;

IT개발자 생활을 하다 보면 여러 가지 난관을 만나게 됩니다. 그 중 하나가 ‘팀원간 기술 습득의 가치 공유’ 의 문제입니다. 이 문제는 자주 발생된다고 생각합니다.

‘팀원간 기술 습득의 가치 공유’란 문장을 다시 정리하겠습니다. 팀원 중에 누군가 특정 신 기술이 훌륭하여 우리팀에 도입을 강력하게 주장하지만 과연 나머지 팀원들이 거부감 없이 ‘기술 습득을 통한 팀의 새로운 가치 창출’에 동의해 줄 것인가의 문제를 말합니다.

프로그래밍 세계는 신기술이 해일처럼 밀려옵니다. 그리고 IT개발자는 천재거나 기술 습득의 ‘불타는 열정’을 가지고 있지 않은 이상은 필요 이상의 신기술 습득에 거부감을 나타냅니다.

특히 이 현상은 어느 정도 실무 경력도 쌓이고, IT개발자 말고 다른 생활(연애, 결혼, 취미생활 등)에 신경써야 하는 고참 개발자에게 잘 나타납니다.

여기에 한가지 더해서 우리나라 IT환경의 좋지 않은 환경을 수도 없이 경험한 고참 개발자라면 더욱 더 ‘신기술 습득’에 거부감을 느낄 것입니다.

그리고 ‘신기술’이 좋다고 하여 막상 써보면 탁상공론 으로 만들어낸 헛 방망이라서 또 다른 삽질을 만들어 내기도 합니다.

위의 모든 ‘푸석푸석한 조건과 경험’들은 새로운 기술을 우리 팀에 도입하는데 큰 방해 요소가 될 것입니다.


+ 새로운 기술을 이용하여 프레임워크를 개발하다.


저는 팀에서 프레임워크를 개발하고 있고요. 우리 회사 입장에서 나름대로 새로운 기술을 가져다 적용하고 있습니다.

여기서 말하는 ‘새로운 기술’ 이란 스프링 프레임워크등의 객체지향과 기타 유틸리티 기능들을 도와주는 다양한 기술인데요.

다행히 어느 정도는 프레임워크에 스프링이라던가 기타 객체지향 관련 기술이 쓰이는 것에 모두들 동의하고 밀어주고 있습니다.

그도 그럴 것이 프레임워크라는 개념 자체가 객체지향 적인 요소군요. 그리고 스프링 외에는 쓸만한 프레임워크가 눈에 보이지 않습니다.

자~ 프레임워크를 개발하면서 제가 맡은 부분을 F(팍스) 라고 하고 다른 팀원이 맡은 부분을 T(탱고) 라고 임의로 부르겠습니다. (추억의 군대식 알파벳 읽기 입니다.)

저는 ‘팍스’를 개발할 때 처음부터 스프링 프레임워크의 IoC(Inversion Of Control), DAO 등의 여러 기능을 가져다 쓰면서, TDD(Test Driven Development 테스트 주도 개발)를 흉내 내가며 객체지향스럽게 개발하려고 시도했고,

‘탱고’를 개발하는 다른 직원은 스프링을 아직 모르기 때문에 먼저 나름대로 기능 위주로 신속하게 개발하고 ‘탱고’의 기본 기능이 개발 완료되는데로, 제가 개발한 ‘팍스’와 통합하면서 스프링 기반으로 ‘리팩토링’ 하기로 계획을 잡았습니다.

사용자 삽입 이미지
[스프링 프레임워크 위에 ‘팍스’가 개발 진행중이고,

'탱고’도 스프링 기반으로 바꿀 예정이다.]

‘객체지향 토론’은 ‘팍스’와 ‘탱고’의 기본 기능이 완성된후, ‘탱고’를 스프링으로 변환하기 위한 기술 회의에서 시작되었습니다.

일단 객체지향을 크게 고려하지 않고 기능 위주로 신속하게 개발한 ‘탱고’를 스프링 프레임워크로 객체지향 스럽게 어떻게 리팩토링 하여 붙여 넣을 것인가~!

궁금하지 않으십니까~ 다음 편을 기대해 주세요~ ^ ^
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 산골
산골 블로그 소개 저는 하얀머리 개발자와 수필가를 꿈꾸는 블로거 산골 입니다. 프로그램 개발자로서 저의 관심사는 개발자의 숨통을 트여준 아이폰 개발, 철학과 같은 깊이가 있는 객체지향 방법론입니다. 글쓰기와 수영을 좋아합니다. 블로그를 통해 관심사를 공유합니다. 제 블로그에 관심 있으시면 아래 RSS나 즐겨찾기로 편하게 구독하세요.

구글 리더에 추가 위자드닷컴에서 구독 Bookmark and Share

댓글을 달아 주세요

  1. BlogIcon troysky 2008/02/14 05:45  댓글주소  수정/삭제  댓글쓰기

    듣기만 해도 멋진 프레임워크가 나올것 같네요 ^^
    프레임워크 사용이 개발자 사이에서 상당히 많은 논쟁을 불러오죠~
    호주에서도 스프링이 대세이긴 하지만 상황에 가장 잘 맞는 기술을 사용하는게 가장 효율적인것 같아요~
    가끔 xml로 control을 옮기는 프레임워크들이 디버깅하기가 더 힘들어져 심술났던 적이 생각나네요~
    상황에 맞는 기술을 사용하는 눈은 언제나 생길런지 ㅡ.ㅜ 공부는 끝이 없네요.. 흑

    • BlogIcon 산골소년 2008/02/14 21:36  댓글주소  수정/삭제

      xml로 컨트롤...
      저도 비슷한 경우가 있었는데, 완전히 탁상공론
      프레임워크였습니다. 거래 하나 만드는데 필요한
      파일이 7개를 넘나들어서 하나 거래 짜면서
      에디터 창만 7개 넘개 띄우고 아주 힘들었습니다.
      말씀처럼 균형잡힌 기술 활용 감각이야말로 핵심
      인것 같습니다. ^ ^

  2. BlogIcon 낚시광준초리 2008/02/14 09:11  댓글주소  수정/삭제  댓글쓰기

    자바 개발자가 아니다 보니 기술적 이야기는 좋은건가? 라는 생각이 ㅎㅎㅎㅎ
    그러나 때론 자바 개발자들의 포스팅을 보면 재미있는 기술들이 많은 것 같다는..(그런데 그것 자체가 삽질이란 이야기도 자주 봐와서 그닥 ^^*)

    아무튼 중간에 보면 신기술 습득이나 새로운것에 대한 거부감을 가지는 것은 어쩜 그겐 개발에서 손땔때가 되지 않았나 라는 개인적 생각을 합니다..
    (저도 그래서 이제 개발쪽 손을 때야 되지 않나 라는 생각을 ^^*)

    저 같은 경우 이번에 기존 제품을 완전이 엎어 버리는 메이저 업그레이즈를 설계하고 개발팀에서 리뷰를 하는데 이런이야기가 나왔습니다. 과연 그렇게 뜯어 고칠 필요가있나? 라는 말..

    처음 원맨팀으로 이 제품을 개발할때는 시간과 많은 커스트마이징 때문에 코드가 엉망이고 기본 설계서도 없는 사항이 있죠..
    언젠가는 엎어야지 하고 있다가 이번에 제대로 기회가 와서 설계서부터 해서 차근 차근 완전이 엎어버렸는데.. 이런 이야기를 들으니 힘이 쫘악.....

    아무튼 산골소년님 회사 분위기는 아주 좋네요 ^^*

    • BlogIcon 산골소년 2008/02/14 21:37  댓글주소  수정/삭제

      아 낚시광준초리님 안녕하세요. ^ ^
      맞습니다. 일단 위에서 보기에는 잘 돌아가는게
      우선이기 때문에 유지보수와 학장을 위한 내부
      소스 개선은 관심을 두지 않는것 같습니다.
      많이 섭섭하셨겠어요.
      우리회사 분위기 좋습니다. 언능 우리회사로 오세요. ^ ^

  3. BlogIcon 2008/02/14 09:25  댓글주소  수정/삭제  댓글쓰기

    멋진 작품을 기다립니다.

  4. BlogIcon 가눔 2008/02/14 11:16  댓글주소  수정/삭제  댓글쓰기

    천천히 읽어봤는데 끝에 굵은 글씨들에서 혼란이 밀려오네요..ㄷㄷ
    아무튼 내용은 이해했어요.^^ 어떻기 진행되었는지 다음 편이 기대되네요.

  5. BlogIcon ARMA 2008/02/14 15:32  댓글주소  수정/삭제  댓글쓰기

    별로 안 궁금한데... ^^

  6. BlogIcon 달룡.. 2008/02/15 00:57  댓글주소  수정/삭제  댓글쓰기

    어려워요..전 개발자 안하길 정말 잘한듯 합니다. 제머리로는 감당이..쩝..

  7. BlogIcon JoowonPapa 2008/02/15 14:04  댓글주소  수정/삭제  댓글쓰기

    저는 Spring F/W를 잘 모릅니다. 그래서 뭐라고 말씀드리기가 애매합니다만, 객체지향이라는 단어에 조금 관심을 가져봅니다. 사실, 탱고쪽이나 팍스쪽이나 제가 생각하는 OO에 관해서는 틀린 부분이 있습니다. 일종의 OOAD(Object Oriented Analysys & Development)라고 하면 기술적으로 구현하기 앞서 요구사항에 관한 얘기가 나와야 할 것 같습니다. 물론 그 얘기가 나왔다고 가정하고 일이 진행된 것이겠지요.

    하지만, 두 팀다 OOAD식의 방식은 벗어난게 아닐까요? ^^ OOAD는 기술이 먼저가 아니라 원하는 결과 지향에 접근이 먼저가 아닌가 싶습니다. 그렇게 따지면 탱고쪽의 시작이 제가 생각한 쪽과 일치하는 것 같기도 하고요. 왜냐하면 요구상황이 결정되고(물론 계속해서 변하기 때문에 specification도 iteration 되겠지만) 결과 무엇인지 안다면 (1)최 단시간에 TDD 방식과 Refactoring을 이용해서 그 기능을 구현하고(요구사항 충족) (2) 그 다음으로 기술적으로 객체지향스럽게 수정/구현 해 가고(더 객체지향 구현) (3) 유지보수, 패턴 등의 기술충족 구현이 되야 하지 않을까 싶습니다. 물론 (2), (3)도 TDD + Refactoring은 계속해서 사용되고요.

    좋은 회사, 좋은 환경에서 일하시는 분 맞는 것 같습니다. 부럽습니다. 저는 날로 섬생활(기술적으로 제한되고 갇힌 상태 - 고참이나 신참이나) 하는 것 같아 괴롭습니다. 다만 다른 것에 더 집중하고 있어서 모른체 혹은 방관하고 있지만서도, 다른 것에 대한 집중에 행복해 하고 있습니다. ^^

    • BlogIcon 산골소년 2008/02/15 23:45  댓글주소  수정/삭제

      JoowonPapa님이 말씀하시는 것은 일종의 개발방법론
      같습니다.

      제가 목표로 하는 것은 객체지향 기술과 객체지향
      기술을 도와주는 각종 유틸리티 도구들 활용하여

      유지보수와 확장성 좋은 프레임워크를 개발하자는
      것이지, 효과적인 개발방법론을 통해 원하는 목표를
      이루자는 것은 아닙니다.

      지금 특별한 개발방법론은 쓰지 않고 그냥 막 개발
      하고 있습니다. ^ ^

      말씀하신 순서는 XP 방법론 같네요. 저희는 방법론
      보다는 목표를 도와주는 기술(객체지향 관련 기술)
      에 중점을 두고 있습니다.

      깊이있는 댓글 감사드립니다.

      그런데 다른것에 대한 집중에 행복해 하신다니
      저도 궁금합니다.

      항상 행복하시길 바래요. ^ ^

  8. BlogIcon Magicboy 2008/02/15 14:31  댓글주소  수정/삭제  댓글쓰기

    탱고가 어떻게 스프링 위로 올라올지 .. 궁금하네요..^^;
    개인적으로 스프링은 잘 모르고..
    스트럿츠 기반의 시스템 소스들을 분석할 일이 있었는데... 기능 하나 추가하는데 그렇게 빡셀줄은....ㅡ,.ㅡ;;;;;
    ( 아직도 그 시스템을 보면 설정파일들 사이에서 헤매다가 .. 결국 그냥 해당 모듈 개발자의 도움을 구하는 수 밖에 없더군요..ㅜㅜ.. )

    • BlogIcon 산골소년 2008/02/15 23:39  댓글주소  수정/삭제

      메직보이님 재밌게 쓰도록 노력할께요.
      스트럿츠는 저도 써봤는데 별로 좋아하지 않습니다.
      근데 스프링은 여러모로 개발자를 위하는 프레임워크라
      좋더라고요. ^ ^

  9. BlogIcon kenu 2008/02/15 16:27  댓글주소  수정/삭제  댓글쓰기

    잘 써주세요. 기대됩니다.
    사회적 관점에서의 프로그래밍 고민을 하고 있는데, 기술적 관점과 사회적 관점에서 글의 가치가 느껴집니다.

    켄트벡 아저씨의 구현 패턴 책 내용이 머리를 때립니다.
    "프로그램을 짤 때는 자신과 컴퓨터뿐 아니라, 다른 사람들을 생각해야 한다!"

    마틴 파울러 아저씨의 얘기와도 일맥 상통하네요.
    "컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다."

    세상에서 가장 고난이도의 기술이 "쉽게 설명하는 것"인데, 그렇게 해주세요. (떼 쓰는 중)

    • BlogIcon 산골소년 2008/02/15 23:25  댓글주소  수정/삭제

      kenu님 안녕하세요.
      편하게 쓰려고 했는데 갑자기 긴장되네요. ;
      자바 진영의 리더께서 봐주시니 긴장이 되면서
      잘 써봐야 겠다는 생각이 들었습니다.

      내일 JCO가면은 kenu님 강의 들을 것 같습니다.
      잘 듣겠습니다. ^ ^

  10. BlogIcon 에코♡ 2008/02/15 19:03  댓글주소  수정/삭제  댓글쓰기

    잘못하면 스텝이 엉키죠, 하지만 그대로 추면돼요, 스텝이 엉키면 그게 바로 탱고지요.

    임으로 탱고라 하시길래 ㅋㅋ
    그냥 탱고가 생각나서 읽었던 한구절이 생각이 나서요 ㅋㅋ
    본문과 상관없는 댓글-.-
    흐엉

    사실 꼼꼼히 읽어봤는데도 ㅋ
    프로그램의 프"자도 모르는지라 ㅋ

    • BlogIcon 산골소년 2008/02/15 23:19  댓글주소  수정/삭제

      에코님 고민입니다. 프로그래밍 글을 쓰기에는
      역시 이런 문제가 있어요. 그렇다고 블로그를
      분리하기는 어렵고 하여 고민입니다.

      그나저나 탱고는 T를 읽을때 탱고라고도 하는데요.
      거외 알파, 브라보, 찰리..식으로 나가는 알파벳
      읽기 있잖아요. 이런 알파벳 읽기에서는 T를
      탱고라고 읽어요. 주로 군대에서 많이 쓰죠. ^ ^

      예를들어 U는 유니콘, J는 줄리엣, R은 로미오
      입니다.

      그러고보니 에코님은 J가 어울리네요. 헤헤 ^ ^

  11. 반더빌트 2008/02/16 11:01  댓글주소  수정/삭제  댓글쓰기

    벌써 주말이네요!^^*

    한 주간 수고하셨구요...!
    일주일간의 피로 푸시고 활기 충전하는 주말 되세요!^^*

  12. BlogIcon noraneko 2008/02/16 17:23  댓글주소  수정/삭제  댓글쓰기

    이해하는데, 조금 시간이 걸렸습니다. 다시 반복해서 읽어야 할듯^^ 고맙습니다. 좋은 주말 보내세요~~