9 Mar
2012
Posted in: 나머지
By    13 Comments

개발자에게 독이되는 말, 말, 말, …


개발자에게 독이되는 말, 말, 말, …
by 신영진(YoungJin Shin), codewiz at gmail.com, @codemaru, http://www.jiniya.net

인간은 말을 통해서 의사 소통을 한다. 서로 의견을 교환하고, 자신의 생각을 표현하고, 설득을 하고. 사랑을 표현한다. 그래서 회사 생활에도 말은 참 중요하다. 오죽하면 말 잘하는 사람이 성공한다는 이야기도 있겠는가? 그런 말 중에도 신입 개발자들에게 참 독이 되는 말이 있다. 독이 되는 말임에도 하나같이 신기하게도 신입 개발자들은 이 말을 입에 달고 사는 것 같다. 새해에는 이런 말을 하지 않는 신입 개발자들이 좀 늘었으면 하는 바램이다.

#0. 안 됩니다.
무슨 이야기만 하면 찾아보지도 않고 안 된다는 답변을 먼저 해버리는 개발자들이 있다. 사실 좀 어처구니 없는 대답이긴 하다. 왜냐하면 회사에서 높은 비용을 지불해가면서 똑똑한 개발자를 쓰는 유일한 이유는 남들이 못하는 것을 하기 위해서지, 남들도 다하는걸 하기 위해서는 아니기 때문이다. 사사건건 하는 것마다 안 된다는 이야기를 한다면 과연 어떤 회사가 당신에게 높은 비용을 지불하겠는가?

더 안타까운 사실은 개발자에게 주어지는 요구 사항 중에 안 되는 것은 사실 거의 없다는 점이다. 나도 사회 초년생 시절에는 회사에서나 커뮤니티에서 답변을 달 때에 ‘안 된다’라는 이야기를 자주 했다. 하지만 지나고 보니 안 된다고 생각했던 건 그 당시 지식이 부족했거나 아이디어가 없었던 경우가 대부분이었다. 논리적으로 안 되는 이유를 증명할 수 있는 이야기가 아니라면 가급적 안 된다라는 말을 하는 것은 피하는 것이 좋다. 차라리 정직하게 자신이 아는 한도 내에서는 방법이 없는 것 같다고 말하고, 긍정적으로 방법을 찾아 보자고 이야기 하는 것이 좋은 방법이다.

#1. 팀장님이 작성한 코드예요.
대다수 신입 개발자들이 회사에서 처음 맡아서 하게 되는 일은 기존 코드의 유지 보수 작업이다. 선임들의 코드 뭉치를 한 덩이 받아 들고는 시작하는 경우가 태반이라는 말이다. 상황이 이렇다 보니 자신이 만든 코드가 아니라는 알량한 생각에 문제가 생기거나 기존 코드에 잘못을 지적 받으면 자연스럽게 방어기제가 발동한다. 책임 회피가 나오는 것이다. “팀장님이 작성한 코드예요”, “그 부분은 원래 이렇게 돼 있었습니다”라는 말들은 이러한 방어기제의 대표적인 형태다. 하지만 안타깝게도 이 답변은 질문에 대한 0점짜리 대답이다. 왜냐하면 이 답변은 지적 받은 문제가 제대로 된 지적인지 아닌지에 대한 생각도 없고, 또 그것을 어떻게 고쳐야 하는지에 대한 생각은 더더욱 없으며, 일말의 책임감이라고는 하나도 찾아볼 수 없는 아주 비겁한 답변이기 때문이다.

여러분이 어떤 코드 뭉치를 받았건 그것을 받아 들고 해당 코드를 관리하는 순간부터 그 코드는 여러분의 것이고, 직접 책임져야 하는 것들이다. 그 코드를 누가 만들었는지, 기존 코드가 처음부터 문제가 있었는지 없었는지는 하나도 중요하지 않다. 여러분이 알아야 할 것은 지금 문제가 있는지, 문제가 있다면 그것을 고칠 수 있는지 없는지가 중요하다.

많은 신입 개발자들이 선임의 코드를 받으면서 그 코드는 완전 무결할 것이라는 막연한 환상을 가진다. 하지만 그걸 만든 선임 개발자도 나름의 사정이 있었고, 일정에 쫓겼고, 더욱이 신은 아니다. 그는 자신의 아내가 출산을 하는 날에도 야근을 하면서 해당 코드를 작성해야 했을 수도 있고, 어처구니 없는 일정에 쫓겨가면서 급하게 코드를 만들었을지도 모른다. 상황이 이런데도 신입 개발자들은 코드가 돌아간다면 가급적 고치지 않으려는 습성이 있다. 일종의 관성이라고 할 수도 있는 이 문제는 고치다가 문제가 발생할지도 모른다는 두려움이 그 원인이다. 하지만 반드시 기억해야 할 사실은 항상 새로운 것들은 기존의 것들을 파괴하는 데서 출발한다는 점이다. 기존의 것을 변경하지 않고는 절대로 새로운 것이 탄생할 수 없다. 맡은 코드에 대해서 잘 돌아가는 것 이상을 생각할 필요가 있다. 그게 처음부터 만들지 않은 사람이 해야 할 일이다.

#2. 잘되는데요.
신입 개발자들의 코드를 보다가 문제를 지적하면 흔히 듣게 되는 대답이다. 물론 똑똑한 개발자라면 기초적인 실수는 하지 않았을 것이기 때문에 이런 실수는 아주 드물게 나타나는 현상에 대한 것이거나 이론적으로는 가능하지만 현실 세계에서 재현은 되지 않는 문제인 경우가 많다. 특히 이번 시간에 언급할 멀티 스레드 문제들도 이 범주에 속한다. 재현이 쉽지 않기 때문에 자신의 코드가 잘 동작한다는 착각에 빠지는 것이다.

하지만 코드가 잘 돌아간다고 모두 제대로 동작하는 것은 아니다. 완전한 논리로 설명할 수 없다면 불충분한 코드다. 언제든지 안될 수 있다는 말이다. 잘못을 정확하게 판단하기 위해서는 지금까지 잘됐는지 안됐는지가 아니라 그 코드의 논리가 제대로 된 논리인지 아닌지를 해명하는 것이 우선이다.

Browser does not supports flash movie

  • 트랙백 주소: http://www.jiniya.net/wp/archives/5735/trackback

관련 글

    None Found
  • 밤치

    제 경험에 비추어 코멘트를 남겨봅니다^^;

    0번은 시간내에 힘들다는 포함되어 있지 않을까요.
    말씀하신대로 개발자 영역에서 안되는건 없는게 맞지만 제 경험상으로는 시간이 항상 문제였습니다.
    물론 고수라면 시간내에 더 좋은 결과물을 만들어내기도 하지요.

    1번의 경우도 꽤 많이 발생하는데 특정 기능이나 함수가 어떻게 돌아가야할지에 대한 정확한 스펙이 없으면 남이 만든 코드를 함부러 고치는것이 쉽지 않습니다.
    혹시 테스트코드가 없는 환경에서 작업하시는지요?

    2번의 경우는 개발자선에서만 만들어지던 코드가 클라이언트나 관리자들에 의해 테스트되면서 꽤 자주 발생하는 경우인데 정확한 재현 방법이 없다면 경험이 부족한 개발자들은 문제를 찾아내기 힘들더라고요.
    또는 무조건 “안됩니다.”라고만 말하는 클라이언트나 관리자의 문제일 수 있습니다.

    협업이란 참 어려운것 같네요.

  • 가키

    맞는 말이지만 안된다고 말하는 것 역시 일종의 방어기재죠.
    안된다고 말하지 않으면 마케팅, 영업에서는 된다고 말을 해버리고
    “자신이 아는 한도 내에서는 방법이 없는 것 같다고 말하고, 긍정적으로 방법을 찾아 보자”고 이야기하는 순간 되는 것으로 간주해버리는 사람들이 많습니다.
    악순환이라고 생각되네요.
    다른 사람이 만들 던 코드. 정말 말 그대로 아무런 문서 없이 코드만 던져줍니다. 코드가 설계도니 어떻게 보면 코드만 있으면 인수인계가 끝난 거지만. 코드만으로 인수인계가 끝날 수 있는 코드를 아직 본 적은 없네요.
    왜 이 코드가 있는지 왜 여기선 이런 식으로 했는지 알쏭달쏭한데 문제가 있으니 해결하라면서 시간은
    정말 빡빡하게 주죠.
    잘 되는데요…이 말은 정말 제가 요즘 자주 쓰게 되네요.
    문서고 기획이고 인수인계도 없이 코드가 어디있는지도 모르던 상황에 뜬금없이 이 코드에 문제가 있는데 네가 담당자니 수정해라. ㅡ_ㅡ;;;
    코드 위치를 다른 사람에게 물어서 알아내고 그제서야 주섬주섬 파일 하나하나 열어가면서 코드 봤네요.
    그러다보니 참 코드 보기도 싫어지고 그러다보니 방어기재가 참 많이도 발동합니다.
    사실 자신이 만든 코드에 자신감을 가지는 것이 좋은 자세지만 “잘 되는데요”라는 말은 자신감을 넘어선
    자만감이죠. 잘 될리가 없으니까요.
    다시 한번 말을 조심해야겠다라는 생각이 드는 글입니다.
    잘 읽었습니다. :-)

  • http://www.starefun.com/wordpress/ zextor

    잘 지내고 계시죵??
    스스로 한번 되집어 볼 수 있게 하는 좋은 글이네요~ㅎㅎ
    독이 되는 말을 많이 해서 지금 독이 많이 올랐습니다요 ㅠ_ㅠ

  • codewiz

    밤치, 가키 // 좋은 의견 감사합니다. 글을 읽으니 왠지 개발자의 고충이 팍팍 느껴지는 것 같네요. 저도 적어주신 내용에 대해서는 완전 공감합니다. 제 원글의 의도가 좀 잘못 전달된 것 같다는 느낌이 많으 드네용. 전 주로 개발자와 개발자 사이의 대화에 관해서 적은 것이었거든요. 관련 내용은 나중에 시간날 때 내용을 좀 더 추가하도록 하겠습니다.

    zextor // 그저 그렇죠 머… ㅋㅋ~~ 잘 지내죵? 언제 명팀이랑 같이 한 잔 해용. 연락할께욤.

  • 지영냥

    아직 안 된다고 단호히 말하는 신입은 보질 못하였네요.
    사실 회사에서도 안되는 일은 시키지 안을텐데 말이죠. 된다/안된다를 떠나서 좀더 현실적이고 구체적인 사실에대해 공론화할 필요성은 있을것 같습니다.
    음.. 2번은 사실 저도 뜨끔하네요. ^^; ㄷㄷ
    좋은 글이네요. ㅎ 잘 보고 갑니다~

  • http://kuaaan.tistory.com kuaaan

    아… 참 공감가는 얘기들이네요. 세가지 다요. ^^
    링크 떠갈께요~ ^^

  • http://hisjournal.net 6l4ck3y3

    요즘 제가 어떤 말을 하는지 되짚어 봤습니다. 좋은 말씀 고맙습니다 (_ _)

  • #0. 안 됩니다.
    #2. 잘되는데요.
    => 이런 경우에는 이런 버그가 있고 이런경우에는 100% 장담은 못하지만 돌릴정도는 됩니다.

    이렇게 이야기해야 하나요?

  • codewiz

    지영냥 // 착한 신입들을 많이 만나셨군요 ㅋㅋ~

    kuaan // 감사합니다. ^^;;

    6l4ck3y3 // 잘 지내죵? ㅋ~ 인제 사이좋은 갑을 관계로 좀 만나 보아욥 ㅋㅋ…

    … // #2같은 경우에는 지적한 내용이 논리적으로 타당하다면 해당 내용대로 코드를 수정하는 게 좋을 것 같구요. 만약 자기 생각은 그렇지 않다면 왜 그렇지 않은지를 논리적으로 설명해 주면 좋을 것 같습니다.

  • http://khmirage.tistory.com 환상경

    아… #1은 많이 찔리네요 ㅡㅜ
    저도 저런 답변 많이 한듯 어흑 -0-

  • codewiz

    환상경 // 흙 ~ 뭐 저도 찔리긴 마찬가지죠 ㅋㅋㅋ~~

  • itscholar

    헐, 페북에 도는 이글의 저자가!!!

  • http://wishket.com Wishket

    링크 남기고 퍼가겠습니다!