코드없는 개발이야기 #6
아침 9시 20분 핸드폰에서 짜증나는 알람이 울려오기 시작한다. 아침에 일어나 샤워를 하고 전날 미리 준비해둔 옷을입고 쪼리를 건성건성 신고 회사를 향해 발을 내딛어본다. 정확히 9시 43분, 출근을 위해 내 방문을 여는 시간이다. 회사까지 걸어가는 예상 시간은 총 14분, 5층 계단을 너무 빠르지도 너무 느리지도 않은 속도로 내려가고, 자는동안 와 있던 여러 메일과 슬랙을 확인한다. 읽지 않은 알림들을 확인하며 지금 어디쯤인지, 시간도 간간이 확인한다.
포스코 앞 신호등에서 9시 52분에 신호를 건너면 안전하게 회사에 도착하는 시간이 딱 맞게 된다. 평소처럼 9시 51분에 포스코 앞 신호등에 도착했고, 신호가 바뀌길 기다렸다. 그러나 오늘은 약간의 예외가 있다. 분명히 9시 52분에 바뀌어야할 신호등이 53분이 되도록 바뀌지 않는것이다. 무언가 잘못된것이다.
그래도 10시 전까지는 회사에 도착해야 한다는 생각에 핸드폰을 손에 쥐고 다른 길로 부리나케 달려가기 시작한다. 더 앞에있는 국기원 사거리에서 바뀌는 9시 55분 신호등을 건너면 회사에 지각하지 않을 수 있다. 왜 하필 쪼리를 신었을까 한탄하던 순간 손에 쥔 핸드폰에서 메일과 슬랙 진동이 손바닥을 간지럽힌다.
땅을 차며 달린 덕분에 간신히 국기원 사거리 신호등에 도착한다. 이마엔 땀이 송글송글 맺혀있다. 핸드폰을 확인해보니, 정확히 9시 55분 신호등이 녹색으로 바뀌자마자 종종걸음으로 건너기 시작한다. 예상했던 9시 57분 보다는 늦겠지만, 9시 59분에는 도착할 것같다 라는 생각에 약간의 안도감에 다시 일상 걸음으로 회사까지 걸어간다.
회사에 도착하자마자 9시 59분이라는 시간을 확인한다. 아슬아슬하게 지각을 피한 것이다. 여느때처럼 내 자리까지 걸어가면서 다시 슬랙 알림을 확인하기 시작한다. 그러나 오늘은 그것보다 먼저 해야 할 일이 있다. 내 자리에 앉아, 깊게 숨을 들이마신 뒤, 커피 내릴 준비를 시작한다.
때로 세상은 우리에게 예상치 못한 일들을 던져준다. 개발의 세계에서도 경력이라는 것이 그런 예상치 못한 일 중 하나일 수 있다. 회사에서 일하면서 경력을 얼마나 쌓았는지를 중요하게 생각하는 사람들이 많다. 그러나, 경력은 그저 매일 아침 울리는 알람 처럼 예측 가능한 요소일 뿐, 진짜 중요한 것은 그 경력을 어떻게 활용 하는 지에 있다고 생각한다.
아침 9시 20분, 알람이 울릴 때 내 기분은 그날의 개발 작업에 얼마나 효율적으로 임할 수 있을지에 대한 기대감과 불안감이 교차한다. 샤워를 하며 회사에 도착하기까지의 시간, 그리고 그 시간 동안 슬랙과 이메일을 확인하면서 어떤 일을 우선적으로 처리해야 할지를 계획한다.
그리고, 회사에 가는 길, 포스코 앞의 신호등처럼 때로는 예상치 못한 문제를 만나기도 한다. 그 문제를 어떻게 해결하느냐는 개발 경력을 어떻게 활용하느냐와도 흡사하다. 예상치 못한 문제나 버그, 혹은 새로운 요구 사항이 생겨나면, 그것을 해결하기 위해 우리는 지금까지의 경험과 지식을 동원해야 한다.
그럼, 어떻게하면 문제 해결 능력을 기르는 개발 경력을 쌓을 수 있을까? 애자일과도 연관이 있다. 빠르게 실패해보고, 빠르게 피드백 받아본다. 그리고 교정하여 다음부터는 동일한 실수가 나질 않게 예방한다.
TDD가 참 좋은 예이다. (엄격하게는 TDD와 다른 이야기이지만) 나는 TDD와 관련된 말 중에 이 말을 참 좋아한다. '테스트 코드는 도메인 코드가 가장 먼저 만나는 클라이언트다.' 내 코드에 대해 피드백 받을 사람이 없을 때, 내 코드가 릴리즈 되기까지 프로세스가 너무 오래걸릴때, 내 코드를 사용하는 첫 번째 클라이언트에게 먼저 피드백 받아보는것이다. 내가 하려는 것을 테스트 코드로 빠르게 실패해보고, 문제를 찾고, 개선할 수 있다. 지식이나 능력은 복리로 이자가 붙는다고 이야기한다. 쌓여있는 테스트 코드도 OR연산이 아닌 AND연산으로 소프트웨어에 이자를 안겨줄것이다.
일상에서의 작은 경험들도 빠르게 실패해보고, 피드백 받고 그 경험을 토대로 다시 발전해 나가는 것이 경험이 복리로 쌓이는 것이 아닐까 한다. 이렇게 시간을 쌓다보면, 밀도있는 시간을 경력으로 쌓게 될것이다.
걷기를 맨날 한다고해서 어느순간 걷기의 전문가가 되어지지 않는다. 정말 걷기의 전문가가 되고싶다면, 내 걷기 영상을 촬영한 뒤 전문가한테 피드백을 받고 개선점을 찾아나가는 것이다. 이 피드백 주기가 빠르면 빠를수록 더 밀도 있는 시간을 쌓고있다. 라고 말할 수 있다.
결국, 소프트웨어 개발에서의 경력 또한 단순히 시간의 축적이 아니다. 개발자로서 일하면서 시간을 얼마나 밀도있게 보냈는가? 그것이 바로 진정한 개발자 경력의 본질이라고 생각한다.