본문 바로가기

카테고리 없음

객체지향 토론-1 (팀원간 기술 습득의 가치 공유)

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

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

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

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

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


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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

궁금하지 않으십니까~ 다음 편을 기대해 주세요~ ^ ^