호환성 강화 = 노가다.

일반적으로 어떤 프로그램/하드웨어의 버전이 올라가면서 API를 변경할 필요성이 생길때가 있습니다. 

예전에는 고려하지 못한 상황들 때문에 관련 부분을 재정의하게 되는 것이지요.
Windows 7에서 호환성 강화를 수행한다는 기사(http://www.zdnet.co.kr/ArticleView.asp?artice_id=20090312182807)를 보니, 해당 엔지니어들 죽어나겠구나.. 라는 생각이 들었습니다.
예전에 어떤 책이었는지 기억은 나지 않는데(소프트웨어 공학 관련 에세이 정도 되었던 기억인데요.. 실용주의 프로그래머 처럼..) Windows3.1에 들어오면서 많은 DOS 프로그램이 수행되지 않게 되었고 많은 사람들이 Windows가 나쁘다는 말을 하게 되지요. 
사실 MS가 잘못한게 아니고, 워낙에 DOS 프로그램들이 성능을 위하여 DOS에서 reserved 영역으로 둔(즉, 실제적으로는 undoumented된) 함수를 이용하는 경우가 많았기 때문이죠. 그당시에 유행했던 책중의 하나가 피터 노턴 아저씨가 적은 undocumented system call 관련된 책이었으니까요.. 
여하튼, 이때 MS가 수행한 작업은 Windows에서 이상한 시스템 콜을 한다거나, 예외적으로 시스템을 붙잡아두는(잘못짠) 프로그램을 하나씩 분석해서 그 프로그램이 수행되면 해당 시스템 콜의 동작을 다르게 처리한다던지, 다른 방법을 사용하는 완전 “노가다” 작업이었습니다.
어찌보면, MS의 입장에서는 억울했을 일이지요. 사용하지 말라고 문서화하지도 않은 테스트 함수들을 지들 멋대로 써 놓고서, 그것 때문에 프로그램이 돌지 않으면 사용자는 “Windows가 나쁘다!”라고 이야기하니까요. MS는 해당 회사에 프로그램의 수정을 요청할 수도 있었겠지요.
하지만 MS는 그렇게 하지 않고, 이상하게 동작하는 프로그램들을 수집하고, 각각에 맞도록 OS의 동작을 바꾸는(!) 엽기적인 일을 합니다. 엔지니어 입장에선 엽기적이지만, 사용자들의 입장에서는 어찌 되었든지 프로그램이 돌면 행복한 것이지요. MS가 성공할 수 있었던데는, 엔지니어 입장이 아니고 사용자의 입장에서 일을 처리했다는 데 있는 것 같습니다. 
뭐, MS가 잘했다는 건 아니지만, 요즘에 문서 작업하고 이런 저런 구상하다 보면, 대충 적을때는 모르겠는데 나중에 보면 ‘이건 뭐 외계어로 적은 것도 아니고… 사용자가 알아먹을 수 있는 문장이 없네..’라는 생각이 들때가 있습니다. 
가끔은 이야기를 하다가 시도때도 없이 튀어나오는 ‘전공 용어’ 때문에 곤혹 스럽기도 하구요.
잘 설명할 수 있어야 정말로 잘 아는 것이라는데, 아직은 많이 부족하지요. 도를 깨닿는 길은 험하고도 멀군요 🙂

2 thoughts on “호환성 강화 = 노가다.

  1. 혹시 보신 책이 “조엘 온 소프트웨어 : 유쾌한 오프라인 블로그” 아니신지요?
    제가 기억하기로는 이 책이었던걸로 생각합니다. 책에 예로 심시티2000도 있었지요..;;

    1. 조엘 온 소프트웨어가 아마도 맞는 것 같습니다. 🙂 심시티 예제 맞아요. 다른책인가 같은 책인가 어디선가 배틀 체스 예도 나왔던거 같은데..

Leave a Reply