생산성이라는 것
개발 이야기뭔가 작업을 할 때 페이지 하나를 하루만에 다 쳐내고, 기능 금방 붙이고, 로직도 잘하고, 마크업도 잘하고.. 이런 것은 시니어 개발자에게 요구되는 최소한의 수준이다. 대부분 수년간 반복적으로 해왔기 때문에 이게 오래걸릴래야 오래걸릴 수가 없다.
로그인 페이지를 예로 들어보자. 신입들은 처음 만들어보는 로그인 페이지에 흥분하며 구조를 잡고 디자인을 올려가면서 작업을 한다. 그리고 그 와중에 axios라는 것도 써보고, react-hook-form과 yup에 개털리거나 하는 식으로 시행착오를 반복한다. 그리고 배포를 해보니 CORS 처맞고 피똥 싸면서 그렇게 한달의 시간 동안 로그인/회원가입/비번찾기/리셋 페이지 등을 구현하게 된다.
하지만 두번째로 작업할 때는 더 빨라진다. 이미 만들어본 것이라 이전의 지식도 남아 있고, 시행 착오도 체화되어 “훗 이건 당연히 할 줄 알지”, “큭 예상했던 오류다” 하면서 금방금방 쳐낸다. 그렇게 일주일 안에 페이지를 구현하게 된다. 세번째 네번째로 작업할때는 3일, 1일 하면서 시간이 점점 줄어들게 되어 시니어가 되어간다. 나중가면 결국 로직은 알던거 복붙에 마크업만 치는 식으로 끝나니까.
이렇게 단련된 능력 있는 사람들이 가장 바보가 될 때는 안해도 될 삽질을 반복하게 될 때이다. 이건줄 알고 이렇게 했는데, 알고 보니까 저거더라- 하면 결국 그 때 까지 투입한 시간은 아무 짝에도 쓸모 없어진다. 물론 이 과정에서 시행착오로 인해 경험치가 쌓이면 다행인데, 어떤 경우엔 경험치 조차도 얻지 못하는, 말 그대로 개고생에 시간 낭비만 발생하기도 한다. 횟수가 반복될 수록 두배 세배로 무능해지는 것이다.
리드를 맡아보며 가장 두렵게 생각하는 것이 이것이다. 우리 구성원이 작업을 할 때 쓸데없는 삽질을 하며 시간을 낭비하는 것. 일의 규모가 클 경우 적당히 격리된 최소한의 모형을 만들어 미리 진행해보고, 안전이 보장된 상태에서 본격적으로 작업에 임해야 한다. 나는 뻘짓을 참 좋아하긴 하지만, 이것도 작은 프로젝트일 때의 일이지, 프로젝트가 큰 상태에서 뻘짓을 하게 되면 팀 내에서 쉬쉬 하게 되고 본인 멘탈적으로도 데미지가 여간 큰게 아니다.
보통은 “음 뭐 금방 하겠네” 하면서 코딩 먼저 하고, 공식 문서를 슬쩍만 읽어보고 한참 작업하다가 “하 여기선 이걸 쓸 수 없네…” 하면서 후회하는 상황이 아쉽다. 생산성이라는 것은, 결국 삽질을 짧게 하는것이 아닐까 싶다. 생산성은, 작업 속도가 아니다. 일은 마라톤과 같고, 순간의 스퍼트 속도가 그렇게 중요하지 않다. 단거리가 빠른 사람 보다는 삽질을 하지 않는 사람이 되어야 한다.
나는 숙련도가 아주 높고, 스퍼트가 빠른 사람이라고 자부하지만.. 삽질을 하지 않는 사람이라고는 할 수가 없다. 뛰어들기 전에 공식 문서의 작은 글씨들을 더 유심히 읽고, 큰 기능을 만들기 전에 최소한의 모형을 만들어 키워가는 방향으로 작업하고자 의식적으로 신경쓰고자 한다. 몰입해서 일하는 것도 좋지만, 방향은 잘 잡고 일하는 것이 더 중요하다. 오스트레일리아와 오스트리아는 다르니까 비행기표 예매 잘못 하지 말자는거지.