본문 바로가기
Thoughts

당신의 커리어가 서쪽으로 간다면 (1)

by 이병준 2019. 9. 23.

개발자로서 당신의 커리어가 서쪽으로 가는 것은 당신의 능력이 인정받지 못하기 때문이다. 능력이 인정받지 못하는 데는 여러가지 이유가 있지만, 그 가운데 가장 으뜸은, 당신이 약속한 일정이 번번이 어겨지는 것이다. 

 

왜 이것이 가장 큰 이유인지는 보통 회사라는 곳에서 납기일이 어떻게 관리되는지를 살펴보면 이해하기 쉽다. 

 

당신의 회사는 보통 몇 단계의 보고 체계를 따른다. 이 보고 체계의 상층부에서는 큰 그림의 우선순위를 정하고, 그 우선순위에 따라 납기 일정을 맞춘다. 보통 이 납기 일정은 아래쪽 팀이 보고한 추정치에 근거하는데, 이 추정치가 부정확하면 부정확할 수록 위쪽으로 보고되는 수치의 정확성은 낮아진다. 이 수치의 정확성이 낮아지면 프로젝트는 일정 대로 마쳐지지 못하게 되고, 그렇게 되면 누군가는 문책을 당한다. 일정에 맞춰 수립했던 사업 계획이 망가졌기 때문이다. 

 

이런 일이 자주 생기면 누군가는 문책성 인사를 당하게 되어 있다. 당신의 매니저가 이런 저런 이유로 파면되었다는 소식이 들린다면, 대체로 그것은 이런 이유 때문이다. 

 

그렇기 때문에 매니저들은 자신에게 화살이 돌아오는 상황을 어떻게든 피하려고 한다. 그렇다면 매니저는 과연 누구에게 책임을 돌리려고 할까? 아마 개발자일 것이다. 개발자는 매니저에게 일정 추산치를 제공하는 사슬의 가장 마지막에 위치하고 있다. 매니저는 개발자에게서 들은 대로 모든 일정을 역산한다. 

 

여기까지 이해하고 나면, 우리는 프로젝트 진행에 있어, 그리고 개발자의 커리어 관리에 있어서 가장 중요한 기술이, 프로젝트의 규모를 산정하는 데 있어서 불확실성의 수준을 평가하고 그에 비추어 계획을 수립하며 그 계획의 각 단계를 가급적 더 잘게 쪼갤 수 없는 단위로 분할하여 우선순위를 정하는 능력이라는 것 또한 미루어 짐작할 수 있게 된다. 

 

개발자의 능력을 평가할 때 아름다운 코딩 능력을 최 우선으로 삼지 않는다는 것이 많은 개발자에게 아마 부당하게 느껴질 수도 있을 것이다. 처음에는 너무나 단순하게 보였던 문제가 실제로 프로젝트가 진행됨에 따라 거대한 빙산으로 변모하는 상황은 그다지 드물지 않다. 그런 상황에서 프로젝트를 이끈 개발자, 그리고 결국 끈기있게 모든 것을 성사시킨 개발자에게 일정 지연 책임을 묻는 것은 그다지 온당하지 않다고 항의할 개발자도 많을 것이다. 

 

그러나 일정을 지키는 것은 개발자 이전에 직장인으로서 반드시 준수해야 할 사항이다.

 

밥 마틴은 이것을 Professionalism이라는 단어로 묘사했다. 그는 역저 "Clean Coder"에서 직업인이 반드시 가져야 할 이 '윤리'의식을 "commitment"에 대한 "responsibility"로 서술했다. 다시 말해 어떤 작업을 완수하겠다는 책임의식으로 묘사한 것이다. 

 

직장인에게 있어서 이 책임의식만큼 중요한 것은 없다. 직장에서 한 두 번 눈감아줄 수 있는 '실수'나 '실패'는 보통 이것을 말한다. 이것이 거듭되면, 보통 해당 직원은 저성과자로 분류되어 해고 수순을 밟거나 특별 교육 대상자로 분류된다. 이런 사람들은 보통 회사를 떠나고 나면 다시는 그 회사로 돌아가지 못한다. 최종 평가 기록이 회사 데이터베이스에 남기 때문이다.