진짜 장인은 사람을 만든다
TV나 인터넷에서 다양한 직업군에서 장인의 활약에 대한 미담을 간간히 접할 수 있다.
무언가 일을 하면서 생계를 이어가는 사람이라면, 자연스럽게 일을 잘 하고 싶은 욕망이 있기 마련이다.
맡은 일과 분야에 경험이 쌓이고, 일을 잘 하게 되며, 인정 받는것이다.
그러면 자연스럽게 대우도 좋아지고, 조금 더 편하게 생계를 꾸려나갈 수 있다.
일을 잘 하고자 정진하다보면 아주 소수의 기능인들은 '달인' 또는 '장인'이라는 명예를 얻는다.
그런 컨텐츠를 보고 있자면 드는 의문이 있다.
소프트웨어 개발자는 장인을 목표로 할수는 없는걸까?
소프트웨어 장인은 어떤 능력을 갖춰야 하는 것일까?
그저 할 일을 묵묵히 해나간끝에 장인으로 인정 받은 사람들이 많다.
나도 그런 인정을 받기를 바라며 하루하루 열심히 살아왔다.
그럼에도 아직 '나는 장인의 경지에 올랐는가?'에 대한 자문을 해보면 쥐구멍에 숨고싶을뿐이다.
2016년까지 타이어 판매 및 자동차 정비를 하는 회사에서 영업 사무직 업무를 보조하는 일을 했다.
마음은 편했지만 결국 4년에 걸친 '이게 개발자가 할 일이 맞는가'에 대한 고민의 결과는 'NO'였다.
나 스스로는 개발자로서 일하고 있지만, 개발자 커리어로 봤을때 좋은 직장은 아니었다.
다음 회사로 선택한곳은 POS(Point of Sales) 기기 임대 및 마케팅업을 하는 회사였다.
가맹점에 POS기기 임대 가맹비 및 카드 수수료를 받으면서 홈페이지 등 인터넷 마케팅을 지원하는 회사다.
여기는 최소한 소프트웨어 개발업은 달고 있는 회사여서 이력상 문제 없고 잡일 보다는 개발을 많이 할 수 있었다.
주요 가맹점은 중소규모 마트, 식당이었는데 여기서 사용될 업무 시스템과 가맹점 홈페이지 등의 개발을 했다.
회사의 주요 비즈니스 모델이 카드 수수료 및 장비 임대료이다 보니, 소프트웨어 개발은 고객만족을 위한 활동에 가까웠다.
그래서 개발 및 수정해야할 일거리는 항상 급하고 사업장마다 문제가 다양했다.
여기서 고객의 요구사항을 해결하면서 정말 많은 소프트웨어 개발의 나쁜 사례를 경험할 수 있었다.
같은 기능도 적용한 고객사마다 소스코드가 다르며, 버전관리가 되지 않는 프로시저에 모든 업무 로직이 다 있었고, 데이터도 표준화가 되어 있지 않아 신규 설치를 하면 동작하지 않았다.
심지어 기반 설계를 따르지 않고 어거지로 만들어놓은 기능도 많았다.
구입해서 넣은 POS 프로그램에서 표현이 안되거나 불편한 부분을 이기종 데이터 변환을 통해서 업무를 맞춰놓은 기능이 가장 최악이었다.
3~5개 업체의 요구사항이 어느정도 정리되기 까지 몇개월을 소비했고, 그나마도 전임자들이 한것처럼 해당 업체에만 맞게 동작하게 하는게 최선이었다.
그러던 어느날 다목적 POS 프로그램을 자사 기술로 만드는 새로운 임무를 맡게 되었다.
유통, 외식 업종을 포괄하는 POS를 만들어야 하고, 위에서 언급한 여러 문제를 안고있는 ERP의 표준화까지 해야했다.
혼자서 모든걸 해야 하는 상황이라 업무량도 많고, 체력적으로 힘들어 스트레스도 상당했다.
5개월에 걸친 고생끝에 어느정도 완성을 하고 마트에 설치를 했다.
내가 만든 프로그램으로 계산원이 계산하는 모습은 신기하기도, 설레기도 했지만 고통이기도 했다.
피드백을 정리해서 주기 보다는 실시간 피드백을 원해서, 그걸 받아적고는 다음날 사무실에 들어가 보완해야했다.
몇 달 내내 밤 12시 이전에는 집에 들어간적이 없었으니 몸도 많이 망가졌다.
결과적으로는 목표로한 소프트웨어를 세상에 내는데 성공했다.
'나는 장인정신으로 일 한다'라는 생각으로 무작정 열심히 일 한 결과다.
직장을 옮겨 새로운 일을 할때까지도 건강이 회복되지 않을만큼 나 자신을 갈아넣으며 일을 했다.
결국 3달 정도를 더 고생하고는 다 타 버린 연탄처럼 번아웃이 왔다. 타이어 판매회사에서 이직한지 불과 1년 9개월만이었다. 일 할때는 열정이라고 생각했지만 정말 미련한 짓이었다.
목표를 달성했다고 한들 거기에 내 인생이 없다면 무슨 의미가 있을까?
개발자들 간에는 신화같은 이상이 존재한다.
혼자서 10명분, 100명분 역할을 해내는 '슈퍼 개발자'가 존재한다는것이다.
누구보다도 빠르고 정확한 코딩으로 프로젝트를 성공으로 이끄는 슈퍼 히어로다. 나도 히어로가 되고 싶었다.
그래서 노력했다. 하지만 현실은 한계를 150%, 200% 끌어다쓰고는 망가져버리는 자신을 마주할뿐이었다.
흡사 모닥불에 날아드는 나방과도 같다.
아무리 목적을 이루기 위한 경험이나 역량이 있다고 하더라도 모든것을 혼자서 다 할순 없다.
반드시 승리해야하는 축구 경기에서 구단의 지원이 없어 혼자서 90분 경기를 뛰어야 한다고 생각해보자.
슈퍼 개발자가 혼자서 10명분, 100명분 생산성을 발휘하는것에는 여러가지 역량과 요인이 있겠지만 결국 중요한것은 환경이다.
제 아무리 실력이 뛰어난 선수가 있다고 한들 제대로된 팀 없이는 경기를 승리로 이끌지못한다.
아주 단순한 진리인데도 이상하리만큼 소프트웨어 개발은 소수의 인력이 많은것을 짊어지는 경향이 있다.
다른 분야의 최고 전문가들을 보더라도 그들은 혼자 일하지 않는다.
레스토랑, 중화요리, 의류 디자이너, 건축가 등 어떤 분야도 마찬가지다.
밑바닥부터 실력을 쌓아 그 자리에 올랐기에, 모든것을 혼자서 다 할줄알고 직접 하는게 편할것이다.
하지만 그들은 팀으로 일한다. 왜 일까?
해결해 나가야할 과제가 혼자서 하기에 크고 거대하다면 팀을 이뤄야 한다.
그렇다고 단순히 일을 분배할 사람을 모으는것은 크게 의미가 없다.
오합지졸(烏合之卒)이라는 사자성어가 괜히 있는게 아니다.
일을 같이 하려면 손발이 맞아야하며, 남이 이러한 역할을 해주기를 기대하지말고 스스로 해야한다.
소프트웨어 장인은 혼자서 잘난 개발자가 아니라, 일과 팀의 구심점이 될 수 있는 사람이 되어야한다.
톱니바퀴가 맞물려 돌아가는 기계에 구동축을 고정시키기 위한 중요한 부품으로 린치핀(Linchpin)이라는것이 있다.
톱니바퀴는 마모가 되어 주기적으로 바꿔줘야하지만 린치핀은 어지간해선 바꿀일이 없다.
소프트웨어 장인의 역할은 소프트웨어 개발 현장을 책임지는 린치핀이 되는것이다.
전체 소프트웨어 생산 공정과 목표를 정확히 정의하고, 인력을 적재적소에 배치해야한다.
그를 위한 모든 과정과 품질을 감독하고, 가르치고, 격려하는것이 해야할일이다.
멘토이자 롤모델로서 팀의 역량 향상과 문화를 주도해야하는것이다.
얼핏보기에 개발자의 역할이라기 보다는 전문 관리자의 역할로 보여 거부감이 드는 사람도 있을것이다.
1~2년 이내의 짧은 커리어를 생각하면 그럴수도 있지만, 세상일은 길게 바라볼 필요가 있다.
회사마다 여러가지 업무 형태가 있지만, 관리와 실무의 중간 가교가 되는 사람은 반드시 필요하다.
대체할 수 없는 린치핀이 되는것으로 개발자로서 커리어를 더욱 견고하게 다질 수 있는것이다.
많은 개발자들은 빠른 코드 생산성만이 자신의 가치라고 믿는다.
그래서 코딩에서 기여할 일이 줄어들거나, 기술 트렌드에서 멀어지게 되면 불안을 느끼는것이다.
하지만 IT 트렌드는 아주 빨리 바뀌고 도구의 숙련도로 먹고 살 수 있는 기간은 점차 빠르게 줄어가고있다.
지금 iOS 개발을 위해 사용하는 Swift가 업계에 자리잡기 전까지는 Objective-C가 사용됐다.
윈도우 프로그래밍은 이제 WPF, Electron 등이 사용되고 있지만 예전에는 MFC, 델파이가 많이 사용되었다.
웹서비스를 만들기 위한 기술은 말할것도 없다. 너무도 다양한 기술이 생겨나고 사라져갔다.
결국 '제품을 만드는 사람' 포지션으로 역량을 유지하려면 계속 새로운것을 배워나가야한다.
그렇게 하나둘 사용 할 수 있는 기술과 지식을 늘려가고, 혼자서 많은 일을 감당하는것이 역량으로 자리잡는다.
하지만 앞서 이야기했듯이 이 모든일을 혼자서 할수는 없다.
지식근로에서 업무를 처리하는것뿐 아니라 필요한 지식을 학습하는데 드는 시간과 노력도 비용이며, 큰일을 하기 위해서는 이러한 비용을 조직 구성원들과 분배할 줄 알아야한다.
일을 잘 하기 위해 새로운 것을 익히고 유연하게 역량을 변화해가는것이 지식근로자의 자질이며 역량이지만, 특정 개인의 역량에 기대는것은 한계가 있기 마련이다.
시간은 유한하고 일의 마감은 언제나 당신을 기다려주지 않는다.
전쟁터와 같은 프로젝트를 헤쳐나가기 위해서는 어려움을 함께하고 등뒤를 믿고 맡길 수 있는 동료들과 함께해야하며, 이런 동료는 그냥 얻어지지 않는다. 누군가는 소프트웨어 장인으로서 리더십을 발휘하여 조직 구성원간의 역할과 전문성에 대한 합의를 이끌어내야 비로소 진정한 팀워크를 발휘할 수 있는것이다.
'피할수 없다면 즐겨라'라는 말이 있다.
경력이 쌓이면서 해야할 일의 양과 중요도가 높아지는것은 피할수 없는 숙명이다.
준비 없이 시련을 맞닥뜨리는것보다 언제든 다른 사람을 이끌 수 있을 정도로 스스로 충분히 수련해야 한다.
현재 회사에서의 역할과는 무관하게 스스로 정한 커리어에 따라 성장할 수 있어야 한다.
그리고 그 성장을 동료들과 나눌 수 있을때, 당신은 진정 '소프트웨어 장인'으로서 자리잡을 수 있을것이다.