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

오늘 티맥스 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대 이상의 의사결정권자들이 우리나라 소프트웨어 산업, 그리고 젋은 개발자들의 미래를 망치고 있다고 생각한다.

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

 

Advertisements

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

  1. 현재 직원으로써 구구절절이 공감하고 갑니다. 의사결정권자들이 ‘몇 달만에 됩니다.’ ‘이야기하신 모든 기능은 다 지원됩니다.’라고 이야기할 때마다 개발진들은 밤을 새고 갈려나가지만 애초에 턱도 없는 장담이었습니다. 의사결정권자들이 기술적 이슈를 고려할 최소한의 노력이라도 했다면 이런 촌극은 일어나지 않았을 겁니다.

    Liked by 1명

  2. 44세 18년째 실무코딩중입니다. 물론 중간에 필요하면 메니저로 둔갑하기도 하지만 늘 설계코딩이 주업무입니다.
    복잡도와 가독성 안정성 등은 늘 고민의 대상이며 18년 동안 그 가치관은 방법론의 발전과 더불어. 또는 별개로 끊임없이 변화를 거듭하였으며 현재로서는 다른 사람의 코딩을 보고 함부로 판단하지 않습니다.
    특정 나이대를 지정하는 것은 문제가 있어 보입니다.

    좋아하기

    • 네. 말씀 감사합니다. 특정 나이대로 특정한 것에 대해서는 제가 생각이 짧았습니다. 이미 많은 분들이 읽으셔서 해당 부분은 취소선으로 처리하였습니다.

      좋아하기

  3. 적극 공감가는 글이네요.
    위에 댓글 다신분처럼 아직까지 현업에서 코딩하고 계신 40대도 계시겠지만 아닌 경우가 허다합니다.
    특히 어느정도 규모가 있는 회사라면 더더욱 그럴테구요.
    그 분들의 전적인 잘못은 아니라고 생각합니다 (회사에서 코딩은 못하게하고 인력관리나 프로젝트 관리만 시키니까요..) 하지만, IT에 종사한다고 한다면 자신의 주직무가 바뀌어도 계속 기술적인 부분에 관심은 있어야 한다고 봅니다.

    좋아하기

  4. 많이 공감합니다
    그리고 IT분야 사업 또는 영업쪽 하셨던 분이 결정권자로 갈 경우 본인이 소프트웨어에 대해 꽤나 전문가인 것처럼 착각하는 것도 많이 봤습니다
    실상은 전혀 안그런데 말이죠

    좋아하기

  5. 공감가는 부분 많습니다 하지만 일부 사람들 사례로 40대 이상 의사결정권자를 일반화 시키는건 좀 아닌거 같습니다
    사실 요즘 독단적으로 결정하기보다 실무진의 의견 들어보고 의사결정 합니다
    저는 의사결정권자는 아닙니다 그렇다고 실무도 100% 아닙니다 양쪽의 입장과 의견을 다 듣게 되는 위치입니다
    경험상 문화적이든 그렇지 않던 근본적 문제를 바라보아야 할것 같습니다 지적하셨듯이 코드리뷰에 대해서 국내 엔지니어들 달가워하지 않습니다 낮에 페어 프로그래밍도 싫어합니다 소위 의사결정자들도 공부할 시간 없습니다 술먹고 놀지 않아도 없습니다 상호간 보이지 않는 벽을 두고 갈등합니다 아이러니하게도 벽 안쪽 사람들과도 시원하게 협조하지 못합니다
    총체적인 문제라고 보이고 해결 위해선 스스로 모습을 냉철하게 보고 겸손한 자세로 노력해야 한다는 생각이 듭니다 내가 아닌 다른 집단과 상황을 판단하기에 앞서서요
    좋은글 고맙습니다 더 낳은 환경과 자신을 위해 노력할 바를 알게 되었습니다

    좋아하기

    • 네. 40대 이상 의사결정권자로 특정한 것은 제가 생각이 좀 짧았습니다. 하지만 이미 많은 분들이 글을 읽으셔서 해당 부분을 취소선으로만 처리했습니다.

      저도 좀 더 근본적인 문제가 있다고 생각합니다. 말씀하신 여러 이유들로 직급이 올라갈수록 개발 업무와 멀어질 수밖에 없는 환경에서 앞으로 누가 의사결정권자가 되더라도 지금과 크게 다르지 않을 겁니다.

      엉킨 실타래를 어디서부터 풀어야할지는 모르겠지만, 이번 일을 계기로 모두가 문제를 인식하고 좀 더 고민했으면 좋겠습니다.

      좋아하기

  6. 97년생, 프로그래머 경력 11년, 그 중에서 S/W performance optimization 만 8년 정도를 일한 엔지니어 입니다. 말씀하셨듯이, implementation 과 optimization 은 근본부터가 다른 영역입니다. 그런데 보다 더 고차원의 optimization 에 대한 이해는 커녕 implementation 에 대한 이해(코드 품질, 리뷰, 방법론, …)도 없고 이해하려고 노력하지도 않는 형편없는 사람들이 optimization 에 대해서 의사결정을 하는 걸 너무 많이 봤고, 그럼 제 선택은 그런 회사는 뒤도 안돌아보고 나오는 것이었습니다. 연봉과 조건이 나빠지고 언제 망할지 모르는 신생벤처로 가는 한이 있더라도 말이죠. 그리고 지금도 그런 제 결정이 옳다고 생각하고 있습니다.

    Liked by 1명

  7. 경험을 공유해주신 부분이 좋은것 같습니다. 그런데 티맥스의 상황이 삼성과 같을 것이라 판단하신 부분이 ‘진짜 그럴까???’ 하는 생각도 살짝 드네요~~

    좋아하기

  8. 제가 본 현재 의사결정권을 가진 분들의 특징은

    0. 개발을 안해본 분들이 개발에 대한 의사결정을 하는 것은 논외로 하겠습니다. 말도 안되는 경우니까요.

    1. 개발을 잘 하는 분이었지만 그당시 상황상 구현이 우선이고 품질이나 QA등에 대한 개념이 부족했다
    나때는 시키는대로 만들면됐었다, 나때는 그렇게 안복잡했는데 요즘은 뭐 그리 복잡하다고 난리냐

    2. 개발을 맛만 보고 시대 상황상 혹은 조직이 커지면서 매니저가 된 경우
    나는 개발이 별로 안어려웠는데 너는 왜 그리 안된다고만하냐 (당연히 자기는 초보수준의 개발만 했었으니까)
    이렇게 저렇게 하면 되는거 아니냐 (상상만으로 결과가 나오면 밥도 상상해서 먹지)

    3. 대기업에서 일부 모듈, 특정 기능만 오래하다가 진급하거나 이직한 경우
    모든걸 다 자기가 알던 거기에 연관해서만 생각함
    HW하던 사람이 SW개발팀을 맡고서는 SW개발을 HW처럼함

    좋아하기

  9. 저는 40대 말 IT 관리자 입니다. 전문 IT 기업은 아니지만 그룹 IT를 지원하는 법인에 소속되어 있습니다. 회사에서 IT만 한지는 20년이 넘었다는 것이지요. 나름 아직까지 개발을 좋아하고 신 기술도 틈나는 대로 구현하고 기존 개발 프로세스에 어떤 변화가 있는지 관심도 많아 영향도도 판단하기도 합니다. 어찌보면 위에 언급하신 의사결정자 중의 한 부류가 될 수도 있을 것 같습니다.
    하지만 단순히 지나간 세대의 오류로 간단히 결정지을 수 없는 이야기라 생각합니다. 사실 저의 경우도 대부분의 의사결정에 포함되어지지 않기도 하고 설사 의사결정의 참여자가 된다 하더라도 IT적 관점에서의 결정을 내리기 쉽지 않다는 것 입니다. 지금까지 많은 시스템을 구축해 왔지만 의사결정이 비용 관점, 시장 관점으로 내려져서 제대로 업그레이드를 수행한 적이 없습니다. 심각한 오류에 대한 패치 정도만 수행 되었을 뿐입니다. 사실상 품질에 대한 관심보다는 비용이 더 큰 영향을 미칩니다. 필요한 기능의 수행 결과가 나온다면 더 이상의 관심을 잃어버립니다.
    따라서 대부분의 프로젝트에 꼼꼼한 계획 수립이라든가 충분한 테스트 기간을 확보하지 않고 비용을 대폭 삭감한 상태로 시작이 됩니다. 결과적으로 척박한 개발 환경이나 기계처럼 일하는 개발자들만 존재하게 됩니다. 단기적인 관점으로 접근하는 이상 개발자의 수준을 높인다거나 높은 품질의 기업 소프트웨어 자산을 확보하거나 생산성을 높이는 개발 환경을 만드는 것을 상상하기 힘들다는 것 입니다. 반면에 수준을 높이는 작업은 지속적이고 노력과 시간이 필요한 일인데 이를 시도한 관리자를 기다려주지 못하고 교체되고 맙니다.
    현재 자신의 위치에서 그 상위 관리자에 대한 기대가 있습니다. 그 상위 관리자 역시 비슷한 상황을 겪고 있다고 생각합니다. 필요한 것은 서로에 대한 신뢰가 아닐까요? 경영자는 당장은 빨리 벌지는 못해도 좋은 품질을 제공하면 고객은 배신하지 않고 매출로 갚을 것이라는 믿음이 있다면 직원을 신뢰하고 의견을 들을 수 있는 문화가 시작될 것 같습니다. 당연히 그런 회사들이 시장에서 성공하는 모습이 많아지면 IT 전문가들의 이야기도 귀를 기울여줄 필요가 생기겠죠.
    IT도 여러 산업에 다양하게 존재 하므로 각자의 생각이 보편적으로 적용된다고 보기는 어려울 것 같은데 그저 제 생각을 두서없이 적어봤습니다. 정말 한국이 IT 강국이 되기를 소망합니다.

    좋아하기

  10. 티맥스는 현재의 개발파이프로는 답이 없다고 생각됩니다.

    윗선에서는 몇달이면 됩니다 하고 싸질러 놓고 가서
    개발자에게 너희는 갈려라 그리고 만들어내라 라는식이니까요.

    예전에도 그랬고 지금도 그럽니다.

    이번 발표회를 망치면서 손해를 본 의사결정권자들이 있을까요?
    개발하느라 가정에 충실하지 못하고 발표회에 버그를 만들어낸 개발자 아빠들일까요?

    개발자 아빠들과 모태솔로 개발자분들은 자기들의 개인시간 여가활동 취미생활을 버리면서
    개발일정을 맞출려고 갈리고 갈렸는데 의사결정권자들은 갈리고 갈렸을까요? 살이 피둥피둥 쪘을까요?

    티맥스를 보면서 느끼는건 안타깝다라는겁니다.
    예전 2천명이 넘는 개발자를 보유하던 시기에도 엄청난 인재들이 있었는데….

    이제는 티맥스라는 경력을 이력서에 넣지 못하는 분도 있습니다.
    스스로 생각해도 이력서에 넣을수 없을만큼 엉망이었기 때문에 그렇죠.

    티맥스는 윗줄들이 제대로 갈려봐야 제대로 된 프로그램이 나올겁니다.
    OS는 그 뒤의 이야기가 될겁니다.

    좋아하기

  11. “대학을 갓 졸업한 똑똑한 개발자면”과 “40대 이상의 의사결정권자들이”에서 이 분의 실력과 사람 보는 눈에 의심 가는군요. 글이 조금만 길어지면 여자여서 동성애자여서 고졸이여서 등등 다양한 구토가 나올듯 한데요.

    좋아하기

  12. “결정을 내릴 수 있을 만큼의 실력이 없다” 라는 건, 정책 결정권자나 중간 관리자 모두에게 해당되리라 생각합니다.

    그리고 직원들 면면을 보면 존경받을 만큼 똑똑하다는 것도 추측에 불과하지 않을까요?

    결정권자가 애초에 업무를 파악할 능력이 없는데, 어떻게 업무를 처리할 사람을 제대로 뽑을까요?

    티맥스가 2000여명 시절이나 지금이나 별반 달라진게 없다는 건, 그 인력 구성 자체에 엄청난 문제가 있다는 뜻으로 보여집니다.

    결정권자가 잘 몰라도 실무자가 잘 알수는 있습니다.
    문제는, 잘 아는 실무자가 아무리 말을 해도, 결정권자가 잘 모르면 “뭔 소리야?”라는 반응 밖에 나올 수 밖에 없겠죠.

    지금의 티맥스는 OS를 담당하는 실무자에서 부터 결정권자 모두에게 문제가 있다고 보여집니다.

    좋아하기

댓글이 닫혀있습니다.