며칠 전 개발바닥 유튜브에 클린코딩 하는데 구현을 못하는 개발자 영상이 업로드되었다. 관심이 많은 분야라 거의 올라오자마자 봤다.
영상을 정말 짧게 요약하자면, 클린코딩을 하면서 구현을 못 하는 개발자보다는, 어쨌든 정해진 기간 내 기능을 구현할 줄 아는 개발자를 선호한다는 것이다.
사실 당연한 결론이라고 생각한다. 결국 기간 내 구현을 못하면, 그 개발자는 클린코딩을 한 개발자가 아니라 구현을 못 한 개발자가 되는 것이다.
과거에 카카오에 지원해서, 과제를 풀었던 적이 있었다. 내가 지원했던 팀은 스토리지 팀이었다. 해당 팀은 다른 서비스 팀과 달리 시스템 프로그래밍에 능숙해야하기 때문에 추가로 과제가 나왔었다.
epoll을 활용해서 비동기와 병렬처리를 지원하는 curl을 만드는 과제였던 것으로 기억하는데, 기간은 일주일이었고 난 못 풀었다. 그래도 최선은 다해야겠다고 생각해서, 어찌어찌 기능처럼 보이게 개발하고 (실제로는 제대로 동작하지 않았다.) 굳이 요구사항에도 없던 로깅이라던가 config 파일 관리라던가 여러 요소를 개발했었다.
이런 항목들이 클린코딩이라고 할 수는 없지만, 어쨌든 결국 본질을 놓친 것이었다. 당연히 떨어졌고 과제에 대한 피드백도 받지 못했다.
또 다른 일화로 과거에 팀장이나 리드가 아닌, 개발팀원으로서 일할 때, 일정 확보를 잘해오거나 일정에 차질이 있을 때 추가 일정을 잘 확보하는 팀장이 좋은 팀장이었다. 지금도 그 생각은 마찬가지이긴 하다.
만약 그 시절이 지속되었다면 오히려 일정이 지연되는 것에 대한 당위는 너무 잘 이해하게 되고, 추가 일정을 확보하지 못하는 팀장에 대해 무능이라고 생각할 수도 있었을 것이다. 비슷한 느낌으로 팀장님이나 임원 욕을 했었던 것도 같다.
지금은 외주도 많이 해보고, 서비스도 개발해 보니 조금은 이해할 수 있게 되었다. 나 역시 마찬가지로 향로님과 호돌맨님처럼 “일단 구현할 수 있는 개발자”를 선호한다.
“일단 구현할 수 있는 개발자”가 되려면, 일단 많이 만들어봐야 하는 것 같다. 좋은 환경에서 많이 개발하면 사수로부터 배우고 좋은 코드도 많이 볼 수 있지만, 누구나 그런 환경에 있는 것은 아니다.
결국, 환경과 관계없이 일단 많이 개발하고 시도하면, “일단 구현할 수 있는 개발자”는 충분히 되는 것 같다.
내가 그랬다.