용역 사업은 돈을 주고 일을 시키는 측과 돈을 받고 일을 하는 측 사이에 간격이 있을 수 밖에 없다. 문제는 두 당사자가 일을 바라 보는 관점이 오로지 경제 논리 뿐인 경우다. 일을 시키는 측은 가능한 돈을 적게 주고 많은 일을 시키는 것을 최고선으로 여기고, 일을 하는 측은 정해진 계약 금액을 받으면서 가능한 적게 일하는 것을 최고선으로 삼는다. 그럴 경우 양질의 결과물은 누가 만들 수 있을까?

용역 사업을 통해 양질의 결과물이 나올 수 없는 이유가 하나 더 있다. 용역 사업이 시작될 때, 용역을 발주하는 "갑"이 자기가 바라는 결과물의 모습을 모른다는 것이다. 일을 시키는 "갑"과 일을 진행하는 "을"이 서로 다른 이미지를 머릿속에 넣고 일을 진행한다. 대개 과제 마감이 가까와서야 갑은 갑대로, 을은 을대로 결과물의 모습을 어렴풋이 그리기 시작한다. 그럴 경우 양질의 결과물은 언제 나올 수 있을까?

S/W 개발 방법론이란 분야는 10 년 넘게 결과물이 쌓여온 완성된 학문이다. 갑이든 을이든 RUP, XP, SCRUM 등등의 방법론을 한번쯤 공부하고 업무에 임하면 어떨까 생각해본다. 한국의 S/W 산업도 10 년 넘게 무르익은 산업인데 왜 맨날 이모양인가? 가끔 S/W 업계에 종사하는 사람들이 무식하다는 생각이 들 때가 있다. 지식이 없어 무식하다고 하는게 아니다. 자기가 모른다는 사실을 모르기에 무식하다고 하는 것이다. 모른다는 사실을 깨달아야 공부할 것 아닌가?

어째... 단상 시리즈를 이어나가면 내게 불이익이 닥칠 것 같은 소심한 걱정이 스친다. (3)을 이을지 말지 고민해봐야겠다.
Posted by ingee

댓글을 달아 주세요

  1. 써니 2009.07.10 18:28 신고  댓글주소  수정/삭제  댓글쓰기

    현실을 있는 그대로 이야기 한다는게,
    현장에서 실무를 담당하는 입장에서 좀 위험스러운 일이기는 하죠.

    작은 용기에 박수를 보내 드립니다.
    그런데, (3)를 이어가기는 좀 위태해 보이기는 하네요. ^^;

    저도 SI 10년 하다 그만두고, 작은 자리로 옮겼습니다만...
    업계 사람들과 만나도 현장 얘기는 잘 안합니다. T.T

    • ingee 2009.07.10 19:38 신고  댓글주소  수정/삭제

      그렇죠? 시간을 두고 생각이 좀 순화되면 순한 언어로 글을 올려야겠습니다.
      우리나라 S/W 생태계가 인류 전반에 기여할 수 있을만한 재밌고 창의적인 도전으로 가득 채워지기를 바랍니다. 그래야 경력 많고 비싼 개발자가 살아남을 수 있으니까요.

  2. ingee 2013.02.25 19:51 신고  댓글주소  수정/삭제  댓글쓰기

    몇년의 시간이 흐른뒤, 그렇게 욕하던 갑 회사에 들어왔습니다. 대기업 말단 사원에 불과한 개인이 대한민국 SW사업의 용역구조를 바꿀 수는 없을 것 같습니다. 다만 합리적인 사고를 통해 조금이라도 개발자 사회에 기여할 수 있는 역할을 찾을 수 있다면 좋겠습니다.

대한민국에서 S/W를 업으로 삼고 있는 회사들은 대부분 용역사업으로 생계를 꾸린다. 나는 어떤 S/W 결과물을 내놓을 때마다 그것을 내 자식이라고 생각한다. 내 자식이 어디 가서 똘똘하다는 이야기를 들어야 부모된 마음이 편하다. 대부분의 부모는 자기 자식이 똘똘해질 때까지 무한 애정을 쏟을 용의를 갖는다. 사실 애 하나 키우는 일이 쉬운 일이 아니다. 세상에 나가서 자기 몫을 충분히 하는 인재를 키워내려면 무척 많은 시간 동안 정성을 쏟아야 한다. 그런데, 용역 사업은 말하자면 자식을 낳아서 다른 곳에 입양시키는 사업이다. 게다가 제대로 키울 틈도 없이 낳자마자 입양시키는 사업이다. 용역이 끝나면 용역 결과물에 대한 모든 권리를 용역 발주처가 갖는다. S/W 개발자 입장에서 보면 무척 슬픈 사업 방식이다. 대한민국 S/W 사업 생태계가 질적으로 도약하려면 이런 사업 방식이 바뀌어야 한다. 할말이 무척 많아서 제목에 '(1)'을 달았다. 또 다른 생각이 정리되면 '(2)'를 달아서 글을 올려야겠다.
Posted by ingee
TAG SW 용역

댓글을 달아 주세요

  1. 써니 2009.07.06 14:01 신고  댓글주소  수정/삭제  댓글쓰기

    저 역시 제가 만들어온 솔루션들을 자식이라고 생각합니다.
    여기저기 입양도 보내고, 친권(저작권)도 뺏기고 하면 참 착찹하죠~

    회사를 그만두면 영영 만나지 못하죠. 여기저기 부실한 곳이 있어서
    업그레이드 해야 하는데 라는 생각이 들어도, 괜히 소송이라도 걸릴까 싶어서
    코드 한줄 들고 나오지 못하고... 계모에게 맡겨 버리는 심정인거죠.

    (2)부를 기대하겠습니다.

    • ingee 2009.07.06 14:55 신고  댓글주소  수정/삭제

      댓글 감사합니다. 써니님 블로그에서 좋은 글 자주 읽고 있습니다. 제 회사는 2호선 낙성대역 근처에 있습니다. 지나실때 연락 주시면 소주 한잔 대접하겠습니다. 좋은 하루 되세요.

DOM2 Events Spec 요약

Dev 2009.05.19 14:29
W3C의 DOM2 Events Spec을 다음과 같이 요약한다.
http://www.w3.org/TR/DOM-Level-2-Events/


1.1. Overview of the DOM Level2 Event Model
1.1.1. 용어
UI events
user interface event. 마우스, 키보드 등을 통해 사용자가 발생시키는 이벤트

UI Logical events
focus change 또는 element triggering 같은 장치와 무관한 이벤트

Mutation events
DOM 내용이 바뀔 때 발생하는 이벤트

Capturing
event가 event-target에서 처리되기 전에 event-target의 ancestor 들에서 먼저 처리되는 것

Bubbling
event가 event-target에서 처리된 다음 ancestor들로 전파되는 것


1.2. Description of event flow
1.2.1. Basic event flow
event-listener 처리중에 exception이 발생하더라도 evcent는 계속 전파된다.

1.2.2. Event capture
capture는 top node (Document node)에서부터 target node까지 전파된다.
Event::stopPropagation() 메소드로 capturing을 중지시킬 수 있다. 단, stopPropagation()이 호출된 level의 event-listener 들은 모두 호출된다.

1.2.3. Event bubbling
capturer로 등록된 event-listener 들은 bubbling phase에서는 호출되지 않는다.
Event::stopPropagation() 메소드로 bubbling을 중지시킬 수 있다. 단, stopPropagation()이 호출된 level의 event-listener 들은 모두 호출된다.

1.2.4. Event cancelation
cancelable한 event는 Event::preventDefault() 메소드를 호출해서 implementation의 default 동작을 취소 시킬 수 있다. 즉, hyper-link를 클릭해도 해당 link로 이동하지 않게 만들 수 있다.


1.3. Event listener registration
1.3.1. Event registration interfaces
EventTarget::dispatchEvent() 메소드로 이벤트를 직접 전달할 수 있다.
EventTarget::dispatchEvent() 메소드로 이벤트를 fire 시켜도 capturing과 bubbling이 동일하게 발생한다.


(끝)
Posted by ingee

댓글을 달아 주세요