2009년 4월 9일 목요일

거만한 속빈 강정

소프트웨어 개발 경험도 개발자가 미국 실리콘밸리의 소프트웨어 회사에 입사해서 5년이면 배울 수 있는 것(소프트웨어를 개발하는 방법)을 우리나라에서는 10년, 20년 아니 30년을 소프트웨어만 개발해도 배우지 못합니다.

오히려 이런 경험 많은 고참 개발자들은 배울 수 있는 기회가 눈앞에 와도 배울 수가 없게 됩니다.
책을 하나 봐도 대부분 아는 내용이라고 저자를 평가 절하하지만 아는 수준이라는 것이 용어 한번 들어보고 샘플 좀 사용해 본 정도인 경우가 대부분입니다.

예를 들어 소스코드관리시스템에 대한 내용을 봐도 내가 대형SI회사에서 10년 넘게 개발을 했는데, 이런 것을 모를까봐?라고 생각하지만 고작 소스코드 백업 받듯이 저장하고 태깅 좀 한 정도 가지고 소스코드 관리를 제대로 하고 있다고 착각합니다. 

오히려 이러한 개발자들은 온갖 화려한 기술과 온갖 툴 및 기법에 능숙해서 UML의 도사이고 자신은 아키텍트라고 하면서도 진짜 설계는 할 줄도 모릅니다. 이런 고참 개발자들은 아무것도 모르는 신참 개발자보다 제대로 배우기는 훨씬 어렵습니다. 신참 개발자들은 책이나 강연을 통해서 배움이 기회가 왔을 때 자신은 잘 모르고 부족하다고 생각을 하기 때문에 받아드리려는 마음이 있으나 이런 고참 개발자들은 자신들이 잘 알고 개발을 잘하고 있다고 착각하기 때문에 즉 자신의 무지를 모르기 때문에 배움을 받아드리려고 하지 않습니다. 또 자신이 해왔던 방식이 나름대로 편하다고 생각해서 바꾸기를 싫어하고 괜히 바꿨다가 회사에서 자신의 위상이 흔들리면 어떡할까 하는 걱정도 하곤 합니다.

2,3년 된 신참 개발자들은 회사에서 제대로 된 개발 환경 및 교육의 기회만 주어진다면 4,5년 안에 이런 고참 개발자들보다 훨씬 뛰어난 실력을 갖는 것은 그리 어려운 일이 아닙니다. 또 배우려고 하지 않는 고참개발자들은 세계 최고의 소프트웨어 대가가 와도 이들을 가르칠 수는 없습니다. 그냥 그렇게 회사에서 정치나 하면서 연명을 하는 수밖에 없습니다. 다른 회사로 이직을 하면 자신의 위상이 확 떨어지니 회사에 꼭 붙어 있어야겠지요. 물론 은퇴 전에 회사가 망하면 큰 일지만 말입니다. 

그런 일을 당하지 않으려면 마음을 바꿔 먹어야 합니다. 물론 정말 실력이 뛰어난 개발자들도 많이 있지만, 자신이 소프트웨어 개발을 잘하고 있다고 착각하는 고참개발자들은 늦었지만, 바뀌어야 합니다. 

자신이 정말로 뛰어난 개발자인지? 뛰어나다고 착각하는 것인지? 어떻게 아냐고요?

  • 후배 개발자들이 많이 있는데 아직도 주로 코딩에만 매달리면서 자신이 코딩을 하지 않으면 개발이 잘 안될 것 같습니까? 
  • 문서를 만들면서 개발을 하는 것보다 코딩부터 개발을 하고 문서는 불필요하다고 생각하시나요?
  • 문서를 만들어도 다른 개발자들이 이해를 잘 못하나요? 
  • 자신은 개발을 정말 잘하는데 후배 개발자들은 정말 실력이 떨어진다고 생각이 드나요?
  • 후배들이 실력이 딸려서 같이 일하기 정말 힘듭니까?
  • 후배들에게 잘 설명해줘도 원하는대로 개발이 진행이 잘 안됩니까?
  • 개발은 기가 막히게 하는데 회사의 비즈니스 상황은 잘 모르나요?
  • 개발에만 집중하고 소프트웨어 기획, 테스트, 배포 등의 전반의 내용은 잘 모르나요?
  • 해당 Domain 지식(업무지식)에 대해서 도사급이라 다른 업계로 이직은 싫은가요?
  • 소스코드관리, 버그관리는 기초기능만 사용하나요? (기초의 기준이 뭔지 알기 어렵겠군요.)
  • 개발프로세스는 불필요하거나 불편한 것이라고 생각하시나요?
  • 경영자들에게 기술이나 아이디어를 설명해도 경영자들이 이해를 잘 못하나요?

너무 많아서 다 나열할 수가 없네요. 

이중에 몇 가지만 해당해도 착각하고 있는 것일 가능성이 대단히 높습니다. 착각에서 빨리 벗어나는 것이 자신의 미래를 위해서 이롭습니다.

댓글 16개:

  1. 안녕하세요 레이님.
    속빈강정같은 고참 개발자를 가려내는 방법이나 착각에서 벗어나라는 조언 보다는 실리콘밸리에서 5년이면 배우는 것이 무엇이며 한국에서는 왜 10년 20, 30년을 해도 그것들을 못배우는지, 그리고 어떻게하면 5년이면 그런 것들을 배울수 있게 하는지를 조언해주셨으면 더 좋았을것 같습니다.

    답글삭제
  2. 요즘 저도 느끼는 거지만 SI를 7년 했더니 더이상 실력 향상이 안되는거 같습니다.
    좀더 심화 있는 개발을 하고 싶은데 매일 하는게 업무만 틀리고 거기서 거기인 느낌입니다.
    솔루션쪽으로 가고 싶지만 국내 솔루션은 열악한 환경이라 먹고 살려니 계속 SI에 남아 있게
    되네요.

    답글삭제
  3. 저 같은 경우 대부분 혼자 일하면서 어떻게 해서든 실력을 키우고 싶어 책을 보고 구글을 했습니다. 그제야 문서화, 소스 관리, 빌드 시스템, 테스트 등 제가 반드시 알아야 하는 것들이 있다는 것 알았습니다.
    주위 개발자들에게 개발 프로세스를 적용해 보자고 해도 다들 무관심이네요. 저라도 성과를 얻으면 조금이라도 관심을 보일까 생각해 열심히 노력하고 있습니다.

    답글삭제
  4. Jake님 오랫만입니다.
    실리콘밸리에서 5년이면 배우는 것이 소프트웨어를 개발하는 방법이죠. 우리나라 개발자들도 다들 소프트웨어를 개발하고 있는데 이렇게 얘기하면 이상하다고 생각하겠지만, 제 경험에 의하면 정말로 다릅니다. 일단 미국은 60년의 소프트웨어 역사를 통해서 소프트웨어를 개발하는 방법에 대해서 체계를 갖추고 있고, 개발자들은 그런 회사에서 개발하면서 자연스럽게 익히는 것을 우리나라의 개발자들은 그런 기회가 없습니다. 그냥 코딩 실력과 몇몇 지식과 기법을 통해서 개발을 하는데, 그 기초가 너무 취약합니다. 그것이 무엇이냐고 물으면 책을 몇권 써야 설명이 다 되겠지요. 물론 미국에도 엉터리로 개발하는 회사도 있고 우리나라에도 잘하는 회사들도 많죠. 하지만 그 비율이 현격하게 차이가 나는데 문제가 있습니다.

    골프를 배우려고 하는데, 혼자서 책보고 비디오 보고 배우는 것과 골프를 처음 시작할 때부너 골프 코치에게 배우는 것의 차이라고 할까요? 그럼 코치에게 배우는 것은 무엇인가? 너무 많아서 한마디로 말할 수 없습니다. 또 우리나라에는 골프를 배울 수 있는 골프코치가 그리 많지 않고 미국에는 널려 있는 상황과 비슷합니다.

    또, 제대로된 방법 딱 하나를 상세하게 설명해주면 그대로 따라하면 되지 않을까?라고 생각해도 골프도 그렇게 안된다는 것은 쉽게 예상할 수 있듯이 소프트웨어도 그렇게는 안되죠.

    그럼 어떻게 하면 배울수 있나? 인도의 개발자들처럼 미국이나 소프트웨어 선진국에 가서 배우는 것이 가장 좋은 방법이나 어렵죠. 그리고 고참개발자들은 이미 늦은 경우도 많구요. 이글의 말미에도 적었지만, 우선 마음부터 고쳐 잡아야죠. 그래야 여러가지 기회가 있을 때 받아드릴려고 하겠죠. 그 기회는 책이나, 강연이나, 전문가를 만나거나, 컨설팅을 받거나 등등 여러가지가 될 수 있습니다. 이럴 때 마음이 닫혀 있다면 배우지 못합니다.

    답글삭제
  5. 묘재님 안녕하세요.
    SI가 나쁜 것은 아니지만, 환경은 그리 좋지 않습니다. 우리나라의 SI의 개발 형태를 보면 업무지식(Domain지식) 위주로 개발이 진행되므로 오래 개발을 할 수록 업무나 비즈니스 로직은 점점 잘 알게 되지만, 소프트웨어 개발 실력을 향상할 기회는 상대적으로 적어집니다. 솔루션을 개발해보는 것은 다양한 경험 측면과 생각의 다변화 면에서는 긍정적이네요. 하지만 솔루션을 개발하는 회사나 부서의 환경도 별차이가 없다면 결국 본인이 스스로 공부하고 찾아다니면서 익혀야 하는데, 어려운 일입니다. 묘재님도 끊임없이 공부하시는 것 같으니 잘 될겁니다. ^^

    답글삭제
  6. 아름드리님 안녕하세요.
    본인이 아는 것보다 남을 설득하는 것은 10배이상 힘듭니다. 특히 본인이 완전히 확실히 알지 못하고 같이 잘 해보자고 하는 입장이면 더욱 어렵죠. 그리고 아름드리닙도 책보고 구글보고 할 수 있는 것은 한계가 있다는 것을 느낄 수 있을 겁니다. 책보고 골프를 배우는 것과 같죠. 제가 무료 세미나도 하고 있으니 관심있으면 연락주세요. 감사합니다.

    답글삭제
  7. 아침에 전규현님의 포스팅 "속빈강정"을 읽고 심히 괴로워서 글을 남깁니다... 최근 들어서 저는 오픈소스에 참여를 하려고 노력을 하고 있습니다. 여가시간 짬짬이 소스리딩 그리고 약간의 버그픽스들을 하는데 대부분의 시간을 보내고 있습니다. 회사일, 오픈소스, 학교를 같이 병행하려니 다른 일에는 거의 신경을 못쓰고 있는 상태입니다. 오픈소스에 참여하면서 느끼는것들은 일단 저에 대한 실망감이었습니다. 화려한 기술에만 치중하려 하고, 책에 나오는 내용이나..

    답글삭제
  8. Ray 님 안녕하세요. 항상 글 잘보고있습니다.
    저도 2년차 소프트웨어 개발자인데. 전 외국계 대기업회사에 근무하고있습니다. 처음에는 제가 배웠던 소프트웨어 프로세스대로 철저하게 지켜지는게 너무나 대단해보였습니다. 2년차가 되니까 이것저것 생각이 많아졌나봅니다. Qa team, Release team, Dev Team,Arch Team간에 Customer 가있는 Project의 경우 Process를 가지고 상당한 논의가 되곤합니다..이런 모습을 보면서 꼭 Process를 지켜야되는것이 올바른 길은 아니라는생각도 해보게 되었습니다. 외국계지만 여전히 지적해주신 사항들을 숙지못하고 Process에 관심이없는 엔지니어들도 많답니다..

    저도 좀더 포괄적으로 이해할수있는 능력을 길러야겠습니다.
    ^^

    답글삭제
  9. 글을 읽고 오전내내 괴로웠습니다. 그동안 정말 뭘 한건지 그리고 앞으로는 또 어떻게 해야할지... 더욱더 마음이 무거워지네요...좋은글 감사합니다.

    답글삭제
  10. 우물 안 개구리는 누가 우물밖으로 개구리를 꺼내주기 전까지는 자기가 어디에 있는지 모르는것과 마찬가지이듯, 시스템으로 돌아가는 대기업이나 몇몇 업체를 제외한 대부분의 중소기업에서는 회사가 개인의 이런 경력발전을 위한 지원을 해주지 않거나 기회를 주지 않으면 개발자 스스로 이러한 걸 깨우치기는 어려운 것도 사실입니다.

    실상은 지적하신바와 같이 막상 이런 흔치 않은 기회가 와도 개발자 스스로가 그걸 거부하거나 준비가 되어 있지 않아 그 기회를 잡지 못하는 경우도 많다라는 것이 문제죠. 특히 초급 개발자나 프리랜서/소규모 회사를 너무 오래 다닌 개발자 중에는 '난 코딩만 할꺼야' 라는 마인드를 갖고 있는 것도 문제이고요.

    사내 정치라는 것에 대해서 개인적인 의견은, 이건 정말 2명 이상 모인 집단에서는 어디서나 발생하는 현상이라는 겁니다. 기본적으로 정치가들이 워낙 부정적인 의미라 나쁘게 들리긴 합니다만... 아무튼 문제는 기본적으로 개발자/공대출신 사람들이 이 정치력이 별로 없다라는 거겠죠. -_-;;

    글 잘 읽고 갑니다. :)

    답글삭제
  11. bluepoet님 안녕하세요.
    개발 2년차인데 벌써 이런 경험을 하고 생각을 하고 있다는 것은 아주 긍정적입니다. 미래가 총망되네요. ^^

    답글삭제
  12. redef님 안녕하세요. 깨달음은 한순간에 오기도 하더군요. 아직 기회가 많이 있으니 잘하실 것 같습니다. ^^

    답글삭제
  13. 우울한딱따구리님 안녕하세요. 경험하지 않고 깨닫거나 스스로 알아내는 것은 기적이거나 천재겠죠?

    답글삭제
  14. 학교 다닐때 경험하고 깨닫는건 학습, 경험하지 않고도 깨닿는 걸 지능이라고 배운 것 같은데데... 개인적으로 경험하지 않고 스스로 꺠우친 것들은 그리 많지 않은 것 같습니다. ㅜ.ㅜ

    답글삭제
  15. 지식으로 깨우칠 수 있는 것이 있고, 골프와 같이 경험 없이 지식만으로는 익힐 수 없는 것이 있습니다. 소프트웨어도 지식과 경험이 모두 필요한 분야라고 생각합니다. ^^

    답글삭제
  16. 사람이나 조직이나 공통점이 있다. 자신이 아는것이 다라고 생각하며 배우려고 하지 않거나 기본이나 원칙을 무시하고 독불장군식으로 일을 하는 개인이나 조직이 결국에는 뒤쳐지거나 도태되는 경우가 많다. 책에서 말하는 기본에 충실하고 원칙을 따르려고 노력하는 것이 결국 더 발전적인 결과를 얻게 된다는 것이다.

    답글삭제