Top

인간은 말을 통해 의사소통을 한다. | 자 유 게 시 판
김경훈 (admin) | Html | 2012/03/19 17:38:58 | 조회:3191

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

1) 안 됩니다
무슨 이야기만 하면 찾아보지도 않고 안 된다는 답변을 먼저 해버리는 개발자들이 있다. 사실 좀 어이없는 대답이긴 하다. 회사에서 높은 비용을 지불해가면서 똑똑한 개발자를 쓰는 유일한 이유는 남들이 못하는 것을 하기 위해서지, 남들도 다 하는 걸 하기 위해서는 아니기 때문이다. 사사건건 하는 것마다 안 된다는 이야기를 한다면 과연 어떤 회사가 당신에게 높은 비용을 지불하겠는가?
더 안타까운 사실은 개발자에게 주어지는 요구사항 중 안 되는 것은 사실 거의 없다는 것이다. 나도 사회 초년생 시절에는 회사에서나 커뮤니티에서 답변을 달 때 ‘안 된다’ 라는 이야기를 자주 했다. 하지만 지나고 보니 안 된다고 생각했던 건 그 당시 지식이 부족했거나 아이디어가 없었던 경우가 대부분이었다. 논리적으로 안 되는 이유를 증명할 수 있는 이야기가 아니라면 가급적 안 된다는 말은 하지 않는 것이 좋다. 차라리 정직하게 자신이 아는 한도 내에서는 방법이 없는 것 같다고 말하고, 긍적적으로 방법을 찾아보자고 말하는 편이 바람직하다.

2) 팀장님이 작성한 코드예요
대다수 신입 개발자들이 회사에서 처음 맡아서 하게 되는 일은 기존 코드의 유지보수 작업이다. 선임들의 코드 뭉치를 한덩이 받아 들고는 시작하는 경우가 태반이라는 말이다. 상황이 이렇다 보니 자신이 만든 코드가 아니라는 알량한 생각에 문제가 생기거나 기존 코드에 잘못을 지적 받으면 자연스럽게 방어기제가 발동한다. 책임 회피가 나오는 것이다. “팀장님이 작성한 코드예요.” “그 부분은 원래 그렇게 돼 있었습니다.” 라는 말들은 이러한 방어기제의 대표적인 형태다. 하지만 안타깝게도 이 답변은 질문에 대한 0점짜리 대답이다. 왜냐하면 이 답변은 지적 받은 문제가 제대로 된 지적인지 아닌지에 대한 생각도 없고, 또 그것을 어떻게 고쳐야 하는지에 대한 생각은 더더욱 없으며, 일말의 책임감이라고는 하나도 찾아볼 수 없는 아주 비겁한 답변이기 때문이다.
여러분이 어떤 코드뭉치를 받았건 그것을 받아들고 해당 코드를 관리하는 순간부터 그 코드는 여러분의 것이고, 직접 책임져야 하는 것들이다. 그 코드를 누가 만들었는지, 기존 코드가 처음부터 문제가 있었는지 없었는지는 하나도 중요하지 않다. 여러분이 알아야 할 것은 지금 문제가 있는지, 문제가 있다면 그것을 고칠 수 있는지 없는지가 중요하다.
많은 신입 개발자들이 선임의 코드를 받으면서 그 코드는 완전무결할 것이라는 막연한 환상을 가진다. 하지만 그걸 만든 선임 개발자도 나름이 사정이 있었고, 일정에 쫓겼고, 더욱이 신(神)이 아니다. 그는 자신의 아내가 출산하는 날에도 야근을 하면서 해당 코드를 작성해야 했을 수도 있다. 또한 일정에 쫓겨 급하게 코드를 만들다 보면 자연스럽게 깔끔하지 않은 부분이 생길 수 밖에 없다. 상황이 이런데도 신입 개발자들은 코드가 돌아간다면 가급적 고치지 않으려는 습성이 있다. 일종의 관성이라고 할 수도 있는 이 문제는 고치다가 문제가 발생할지도 모른다는 두려움이 그 원인이다. 하지만 반드시 기억해야 할 사실은 항상 새로운 것들은 기존의 것들을 파괴하는 데에서 출발한다는 점이다. 기존의 것을 변경하지 않고는 절대로 새로운 것이 탄생할 수 없다. 맡은 코드에 대해서 잘 돌아가는 것 이상을 생각 할 필요가 있다. 그게 처음부터 만들지 않는 사람이 해야 할 일이다.

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

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


댓글을 불러오는 중입니다.
▲ 이전글 홍대 곱창집 정승근 (jsg49) 2012-03-20 08:58:23
▼ 다음글 현실 정승근 (jsg49) 2012-03-19 09:16:51