코드 중복이 인류에게 미치는 해악

나이를 먹어 가는 만큼 완결된 형태의 글을 쓰는데 걸리는 시간이 길어진다. 시간이 흐르면서 남들의 시선도 의식하게 되고 삶이라는 것에는 단정짓기에는 너무나 많은 뒷 이야기들이 존재함을 알아버렸다.

누군가를 비난하기보다 이해하려고 애쓰는 자세야말로 많은 사람들과 일을 진행하는 데 있어 중요한 자질이 아닌가 싶다. 모두가 인격적으로 충분히 성숙할 수는 없다. 하지만 그 자질 하나만 있다면 우리는 서로의 멘터(mentor)가 될 수 있지 않을까?

그럼에도 나에게는 한 치도 물러날 수 없는 원칙이 있다. 우리는 이 세계를 발전시키기 위해 존재한다는 것이다. 우리가 우리의 행동이 세상 사람들에게 혜택을 주어야 할 만큼 노력하지 않는 것만한 불행도 없다. 나는 그런 모든 시도 앞에서 결코 물러나고 싶지 않다. 그런 사람들이 있었기에 세상은 그나마 이 정도 약진해 왔다.

우리는 소프트웨어를 만들 때 어떻게 만들고 있는지 이 관점에서 진지하게 생각해 볼 필요가 있다.

코드 중복이야말로 스스로의 시간을 세상과 단절시키는 최고의 방법이다. 스스로 질 떨어지는 커넥션 풀이나 ORM 프레임워크를 만들 시간에 왜 Jakarta Commons DBCP나 Hibernate에 공헌하지 않는가? 다른 부지런한 사람이 같은 일을 해서 보기 좋게 공개할 것이란 안이한 생각 덕택에 컴퓨터 공학의 역사는 얼마나 늦어졌는지 이젠 헤아릴 수조차 없다. 개인은 명성을 얻을 기회를 잃어버린다. 컨퍼런스에서 스포트라이트를 받았어야 할 시간에 술집에서 치킨 뜯으면서 무의미한 자기 과시에 시간을 허비해 인류의 존재 이유에 의문을 갖는 개체의 수를 증가시킨다.

혹자는 말한다. 인류에게 도움이 되는 소프트웨어를 어떻게든 빨리 제공하기만 하면 인류에 큰 도움이 될 수 있다고. 아쉽게도 기대와는 많이 다르다. 소프트웨어를 만들고 유지보수하는 과정에서 낭비되는 시간이 갖는 가능성의 유실은 인류가 받을 도움을 마이너스로 상쇄하고도 남는다. 또 소프트웨어 개발 과정에서 은연중에 수립된 불합리한 마인드가 커뮤니티에 뿌리박혀 오늘날 어떤 현실을 낳게 되었는지는 자명하다.

세상을 발전시키는 소프트웨어는 중요한 인류의 자산이다. 그러나 그 과정에서 인간이 세상을 향해 취해야 할 기본적인 자세를 파괴한다면 그것은 무가치를 넘어 해악이다.

8 Comments

  1. 영회 said,

    June 13, 2006 at 10:30 am

    좋은 글이 군요..

  2. 해빈 said,

    June 13, 2006 at 3:47 pm

    In a broad perspective, yes, I strongly agree with you. But you may be putting too much burden on all of us and our software. What if you only a need simple class to do whatever you wanted, do you still have to use that huge and enormous open source library? I acknowledge the fact that the simple class is bound to be more complicated and complex. Yet, for just now, if it suits its purpose well enough then I would have to say “job well done.” Reasons? First, avoids Yo-Yo effect for typical Object-Oriented programs. Second, much easier maintenance. Last but not least, no hassle with licenses.
    Yet, in a broad perspective, I do agree with you, but for narrow scope, you may go easy on us, pity hardworking laborers.

  3. Trustin Lee said,

    June 13, 2006 at 6:16 pm

    That’s a common pitfall. Why is a reusable component huge if we use only small part of it? If it is too complex for your simple scenario, then you’d better find a better replacement for it. There should be someone who tried to resolve that complexity. Otherwise, you’re the one to resolve it and share it with other people all over the world. It would be even better if we can improve the existing component become very thin and light when you use only small part of it by refactoring it.

    Can you assure the _one_ class will remain as a real one class in the future? That’s the waste we’re creating everyday. I bet it will not be compatible with any known standard interfaces so the cost of switching will overwhelm the initial merit of the home-grown solution significantly. Much easier maintanance? That’s the funniest joke I have ever heard this year.

    Regarding licenses, it’s absolutely OK if you’re using open source softwares with BSD-compatible licenses. It’s not a hassle but required knowledge for developers who is considering to adopt F/OSS.

    It’s a temporal burden which will go away as you get used with the discpline. You will get an eternal burden on your back while avoiding the temporal burden. I found that people who are against this idea are just not used to it. It’s just an excuse for a lazy being. You have to think again.

    And let me know if any softwares I wrote made you suffer. You never asked me about the problems you encountered recently, so I cannot understand why you’re saying ‘us’.

  4. 해빈 said,

    June 14, 2006 at 1:12 am

    well, i don’t exactly remember where i quoted ‘easier maintenance’, yet, there is a paper regarding that issue. what it said was that it is always much easier to debug a class than a library. ^^;; (because, there would be lesser yo-yo effect and lesser hassle to deal with when you run your debugger.)

    us means typical developer like myself without any architectural mind. he he…

    i do love your open source libraries. but when things go wrong, such as, oil, it is rather difficult to pinpoint the problem. (i would certainly face similar problem even though I use a simple class)

    but, as i mentioned previously, i strongly agree with you in a broad perspective. but, sometimes, you cannot really eliminate all the inefficiencies.

    🙂 i still respect you very much~ i am not trying to criticize your opinion. certainly, my one is also a mere opinion. ;-)

  5. Trustin Lee said,

    June 20, 2006 at 10:04 am

    Is a library a library if we use only a few part of it? I think it is a very controversial issue and usually a simple class evolves into a library as time goes by. That’s also why there’s a company like SpikeSource.

    My point is that the idea ‘Job well done’ can be very dangerous to our society. :)

  6. Trustin Lee said,

    June 20, 2006 at 10:04 am

    격려의 말씀 감사드립니다 ^^;;

  7. Max said,

    June 27, 2006 at 1:30 pm

    우리나라에 이런글을 쓸수 있는 사람이 있군여…

    – 감동구절 –
    ———————————-
    ‘누군가를 비난하기보다 이해하려고 애쓰는 자세야말로 많은 사람들과 일을 진행하는 데 있어 중요한 자질이 아닌가 싶다. 모두가 인격적으로 충분히 성숙할 수는 없다. 하지만 그 자질 하나만 있다면 우리는 서로의 멘터(mentor)가 될 수 있지 않을까?’

    제랄드 M. 와인버그 가 연상될 만큼 좋은 글이 였습니다.
    좋은글 읽으니 기분 좋쿤요… ^^

  8. Trustin Lee said,

    August 2, 2006 at 10:10 am

    과찬의 말씀이십니다. ^^;;;