똑똑한 개발자들을 바보로 만드는 방법

오늘 티맥스 OS 발표 및 시연이 있었다. 유투브로 생중계된 발표를 많은 개발자들이 지켜보았고, 유투브 대화창, 트위터, 페이스북에는 티맥스 OS에 대한 조소와 비난이 넘쳐났다. “자체 개발”을 강조했지만 FreeBSD, LibreOffice, Chromium, Wine 등 수많은 오픈소스를 가져다 썼다는 사실을 숨길 수가 없었고, 그럼에도 불구하고 짧은 시연 중에도 OS가 멈추는 등 완성도 면에서 불안한 모습을 보였다.

티맥스가 그저 이상한 사람들이 보인 별 것 아닌 회사였다면 오늘 티맥스 OS 발표는 그저 웃고 넘길 수 있는 해프닝으로도 끝날 수 있는 일이다. 문제는 티맥스가 지금도 500명 이상의 직원이 일하는 시스템 소프트웨어 개발에 있어서는 국내 최고 수준의 회사라는 점이다. (참고로 7년 전 OS 발표 시에는 2000 명 이상 있었다)

티맥스에서 일하는 엔지니어들은 바보가 아니다. 한 명 한 명을 놓고 보면 존경심을 가져도 좋을 만큼 국내 최고 수준의 엔지니어들도 다수 일하고 있다. 그런데 이렇게 좋은 엔지니어들이 모인 조직에서 만든 소프트웨어가 발표만 하면 조롱이 대상이 되고 있다. 뭐가 잘못된 것일까?

난 티맥스에서 일을 한 적도 조직의 내부도 들여다 본 적이 없지만, 국내에서 소프트웨어 개발이 이루어지는 양태를 보면 그 이유를 어렵지 않게 짐작할 수 있다. 결론부터 이야기하면 기술적으로 중요한 의사결정을 내려야 하는 사람들이 그 결정을 내릴 수 있을 만큼의 실력이 없다.

이와 관련해서 내 경험을 이야기해보고 싶다. 난 작년 5월 회사를 그만두기 전까지 한 중소 기업의 CTO로 웹킷/크롬 기반의 브라우저 기술을 7년간 개발했다. 그 중 마지막 2년은 삼성전자와 일을 하였다. 당시 계약한 기술은 TV에서 웹킷의 렌더링 속도를 향상시키기 위한 멀티코어 및 GPU 가속 솔루션이었다.

당시는 Chromium이 아직 임베디드 시스템에 사용되기 전이라 WebKit2 최신 버전을 기준으로 해당 내용을 작업했었다. 각 가속 기술 자체는 PC 환경에서 유의미한 수준의 성능 향상이 있었고, 이를 근거로 삼성TV에 포팅하는 프로젝트를 1년간 진행했었다.

하지만 프로젝트를 진행이 매끄럽지는 않았다. TV는 1년 단위로 신규 제품을 출시하는데 매년 칩셋이 바뀌기 때문에 이와 관련된 드라이버나 운영체제 버전 등이 모두 교체된다. 특히, GPU 드라이버는 안정성이 떨어져서 프로젝트 내내 문제를 일으켰다. 성능도 안정적이지 않아 똑같은 바이너리가 운영체제 버전에 따라 100% 이상의 성능 차이를 보이는 경우도 흔했다.

특히, 일부 가속 기술은 지속적으로 문제를 일으켰다. 성능 향상을 위해 코드가 지나치게 복잡해지면서 유지보수가 힘들어진 면도 있고, GPU 드라이버에서도 예상치 못한 버그들이 발견되면서 안정성 문제가 계속 이슈가 되었다. 당시 실무 엔지니어들은 당연하게도 문제가 되는 일부 가속 기술을 포기하는 것이 제품의 성능 측면에서는 더 낫겠다는 판단을 했었다.

문제는 의사 결정을 내리는 결정권자들은 이런 상황을 전혀 이해하지 못한다는 점이다. 개발 책임자라고는 하지만 자기가 만드는 제품의 코드 한 줄 본 적이 없는 사람이, 성능 향상을 위해 코드의 복잡도가 얼마나 증가했고 이게 앞으로 제품 양산에 어떤 식으로 영향을 미칠 것인지에 대해 판단을 내리는 것은 불가능하기 때문이다. 그저 전년 대비 올해 성능이 얼마 향상되었는지를 윗선에 보고하는 것에만 관심이 있다.

CTO로 해당 솔루션 개발을 총괄한 나의 책임도 있다. 삼성과의 계약 관계가 아닌 단독 프로젝트였다면 문제가 되는 상황에서 해당 기술을 포기했을 것이다. 하지만 삼성과의 계약 조건이 문제였다. 해당 기술을 탑재하는 것으로 계약을 했는데, 안정성이나 기타 이유로 해당 솔루션이 출시되는 제품에서 빠지면 이번 계약은 물론이거니와 후속 계약에도 영향을 미칠 것이 틀림 없기 때문이다. 그리고 계약의 연장 여부는 회사의 존폐와 진결된다.

결국 객관적으로는 문제가 되는 가속 기술을 제품에 탑재하지 않는 것이  정답이었음에도 불구하고 각자의 이해 관계 때문에 아무도 이런 결정을 내릴 수가 없었다. 그리고 그 책임은 고스란히 실무 엔지니어들이 떠 안고 밤을 새면서 프로젝트를 진행해야만 했다. 하지만 이미 중요 의사 결정이 잘못 내려진 상태에서 엔지니어들이 아무리 노력을 해봐야 제품의 안정성을 확보하는 게 불가능에 가깝다.

소프트웨어 개발에서 이런 시행 착오가 없을 수 없다. 성능은 아이디어가 있어서 열심히 구현하면 반드시 나온다. 이런 건 대학을 갓 졸업한 똑똑한 개발자면 누구나 한다. 문제는 성능이 10% 개선된 대신에 뭐가 희생되었는지를 판단할 수 있는 능력이다. 코드가 지나치게 복잡해지지는 않았는지, 안정성에 문제가 생기지는 않았는지 종합적으로 판단해서 아닌 건 아니라고 할 수 있는 게 엔지니어의 경험이고 연륜이다. 하지만 우리나라에는 이런 경험이 없다.

반면 웹킷 오픈소스 활동을 하면서는 전혀 다른 모습을 보았다. 구글, 애플 엔지니어들은 무서울 정도로 코드의 품질에 집착한다. 모든 패치에 대해 한 줄 한 줄 리뷰를 수행하고, 상당한 성능 향상이 있더라도 코드가 지나치게 복잡해지면 과감하게 포기하고 다른 방법을 찾는다. 처음 웹킷 버그질라에 패치를 제출하고 받은 리뷰는 너무 충격적이라 아직도 기억이 난다.

난 티맥스의 상황이 내가 삼성에서 일하면서 느꼈던 상황과 다르지 않다고 생각한다. 의사 결정권자들이 자신들의 필요에 의해 성능이든, 기능이든 여러 요구사항을 제시했고, 이게 실제 코드에서 어떤 형태로 반영되고 어떤 문제를 일으키고 있는 지에 대해 전혀 이해하지 못하고 있을 거다. 겉으로 보기에 거의 다 만들어졌으니깐 개발자들 열심히 굴리면 몇 달 후에는 안정적인 버전이 나올 거라고 기대하고 있을지도 모르겠다.

그리고 티맥스만의 문제도 아니라고 생각한다. 정도의 차이가 있을 뿐 대부분의 회사가 마찬가지다. 그저 나이가 많다는 이유로 개발에 대한 깊이 있는 이해와 실력도 없이 개발 업무에 전반에 관해 중요한 의사 결정을 내리고 있는 40대 이상의 의사결정권자들이 우리나라 소프트웨어 산업, 그리고 젋은 개발자들의 미래를 망치고 있다고 생각한다.

이들이 과거에 코딩을 했는지 아닌지는 중요하지 않다. 지금도 부지런히 공부하고, 코드 읽고, 현업 개발자들이 어떤 문제로 고민하고 있는지 같이 고민하고 해결해 줄 수 있어야 한다. 이런 경험 많고 노련한 개발자가 의사 결정권자가 되지 않으면 우리나라 소프트웨어 산업에 미래는 없다.

One thought on “똑똑한 개발자들을 바보로 만드는 방법

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s