'바다'를 다시 접하면서 드는 생각... (삼성 bada가 아닌)

'바다'를 다시 접하면서 드는 생각... (삼성 bada가 아닌)

Embedded만 계속 하다가,
요즘 들어 Application 분야의 공부를 하고 있는데 느끼는 것이 참 많습니다.
예를 들어, Flash의 ActionScript를 보고 있으면 '바다' 라는 느낌이 드네요.

바다…
제가 회사에 들어와서 처음 맡은 일이 CMIP Agent를 구축하는 일이었습니다.
그때도 CMIP을 '바다' 라고 불렀었죠.

CMIP하면 모르는 분이 10분 중의 9분일 겁니다.
SNMP보다 상당히 복잡하고, CORBA보다 약간 더 볼륨이 큰 거라고 생각하면 됩니다.
SNMP는 또 뭐야? 하는 분이라면,
그냥 요즘 Framework이라고 부르는 Spring이라던지 Rails라던지 정도일 것 같습니다.
아니, 그 Framework 중 하나의 module/component정도 일 것 같네요.
어쨌든, 아무것도 모르는 저에게 CMIP은 '바다' 였답니다.


그 '바다'를 이해하는데, 1년이라는 시간을 보냈죠.
CMIP은 상용 Toolkit을 사용하였는데, 미국 회사의 제품이었습니다.
규격을 이해하고, 그 toolkit을 사용하는 방법을 배운 후에, CMIP Agent를 구축하는 것이 임무였죠.

한 1년 지나니, 뭔지 좀 알겠더라고요.
근데, CMIP이라는 것이 필요 이상으로 복잡하게 만들어졌기 때문에
Agent를 만드는 데, 몇 개월의 시간이 걸렸습니다.

그냥 열심히 할까? 아니면 Agent를 만드는 tool을 만들어서 한방에 해버릴까?
결론은 쉽게 났습니다.
복잡한 구조 때문에 Agent를 만들면서 실수할 가능성이 상당히 많았고,
그 실수 때문에 밤을 수도 없이 새웠기 때문이죠.

게다가, 이런 질문을 늘 하곤 했죠.
'이 일을 하고 나면 나한테 남는 건 뭘까?'


남는 건… '그 Tool을 사용할 줄 안다' 정도인 것 같았습니다.
그것도 대단해 보였지만,
같은 시간을 들인다면, 그것보다는 tool을 만드는 것이 훨씬 매력적이었습니다.

어쨌든, tool을 만들기 시작했죠.
이미 1년 동안 프로젝트를 한지라, 내용에 대해서는 잘 알았지만,
막상 tool이란 것을 만들려다 보니, toolkit의 사용자와는 level이 한 차원 다른 일인 것 같았습니다.

Toolkit의 아주 깊은 곳까지 이해해야, 제가 원하는 것을 할 수 있다는 것을 알게 되었죠.
그렇게 6개월을 씨름한 끝에, 결국 tool을 만들어 낼 수 있었습니다.
그 이후에는 만든 tool을 사용하여 CMIP Agent를 만들었죠. 순식간이었습니다.


이 과정에서 상용 toolkit에 대한 생각을 많이 했습니다.
Tool개발의 중간쯤 지날 때에는, 상용 toolkit을 직접 만들 수도 있겠다는 생각이 들었죠.
그리고 거의 끝날 즈음에는, toolkit을 직접 만드는 것이 훨씬 낫겠다는 생각이 들었고요.

간단한 이야기입니다. Toolkit을 설계한 사람은 사람이 손으로 코딩을 쉽게 할 수 있도록
구조를 잡았을 텐데, 이 구조 위에서 자동 tool을 만들려다 보니, 많은 곳을 뜯어고쳐야 했거든요.
그 시간이라면, 어쩌면…, 상당히 바닥부터 만들어 올려도 거의 같은 시간이 들었을 겁니다.

왜 그런 거 있잖아요.
Sample Application을 볼 때는 '와~' 했는데, 그것을 가지고 뭔가 해보려면,
여기도 고쳐야 하고, 저기도 고쳐야 하는…
그렇게 시간을 보내다 보면, 그 tool을 쓰나 안 쓰나 비슷해지는 상황이요.
아마도 그런 것과 비슷한 느낌인 것 같습니다.

이렇게 첫 2년을 보내면서, 제 머릿속에는 이런 생각이 굳어진 것 같습니다.
간단한 Application은 toolkit을 사용해도 괜찮지만,
뭔가 자동화 tool을 만들려면, 바닥부터 쌓아서 만드는 것이 더 효율적이라는…

실제로 그 이후에 많은 일들은 tool을 만들어 수행하는 방식을 사용했습니다.
그리고, 그건 현명한 판단이라는 생각이 들었죠.
프로젝트에 참여한 팀원들은 더 고난도의 일을 할 수 있었고,
(상대적으로 단순한 반복 작업을 피하며)
해당 기술에 대해 더 전문적인 지식을 얻을 수 있으며,
향후 사용할 수 있는 tool까지 얻을 수 있으니까요.



지금까지 Embedded의 경우에는 이런 approach가 효과적이었습니다.
Application분야 라고 크게 다른 것은 없어 보이지만,
UI부분에 대해서는 상당한 차이가 있는 것 같습니다.
예를 들어, Flash나 Windows가 쌓아 놓은 것을 무시하고 application을 만들 수 는 없을 테니까요.

사실, 바닥부터 UI를 만들 수는 있을 겁니다.
하지만, 이미 쌓아놓은 양이 워낙 넓고 높아서, 그걸 다시 쌓는다는 것은 무모해 보인다고 할까요
마치 게임의 룰이 기본적인 것은 그냥 쓰고 그 위에서 차이를 만들어 보자는 것 같이 보입니다.
열심히 공부를 하면 따라갈 수는 있을 것 같습니다만,
아주 오래전에 했던, 이 질문이 다시 한번 떠오릅니다.

'이 일을 하고 나면 나한테 남는 건 뭐지?'

'그 Tool을 사용할 줄 안다?'
'그 언어를 사용할 줄 안다?'


오랜 만에 다시 '바다'를 접하면서,
가을 입구에서 드는 생각이었습니다.

고맙습니다.

의견 0 신규등록      목록