컴퓨터 공학을 전공했지만 프로그래밍 언어에 대해서는 아무것도 몰랐습니다. 학창 시절에는 술을 마시고 산에 다니며 즐기는 것이 멋인 줄 알고 살았습니다. 지금도 개발자가 인기가 많은데 IMF 이전에도 컴퓨터 공학과가 인기가 많아 취업이 잘되었습니다. 전망이 좋기에 그냥 그 학과를 가게 되었고 내가 소프트웨어 개발을 할 줄은 상상도 하지 못했습니다. 프로그램 언어를 배운다는 것은 넘지 못하는 거대한 벽처럼 느껴졌습니다.
어려운 C언어와 C++로 코딩을 하며 과제를 척척 내는 친구들은 선망의 대상이었습니다. 그들이 참 멋있어 보였고 나는 초라했습니다. 소프트웨어 개발에 대해서 아는 것이 없었고 언젠가 내가 이해하는 날이 올 것이라는 희망도 없었습니다. 나와 똑같은 심정이라면 걱정하지 말고 그렇게 느끼는 것이 당연합니다. 개발자가 되기 위해서는 천재일 필요는 없습니다. 게다가 평균 이상의 지능도 필요가 없습니다. 그냥 평범한 사람이라면 누구나 개발자가 될 수가 있습니다.
이렇게 프로그래밍을 모른 채 이력서를 지원하기 시작했습니다. IMF 전에는 무척 호황이 이서 정보통신 쪽 인력을 상당히 많이 채용했습니다. 개발자 인력이 부족했기에 정보통신 관련 학과이면 대부분 취업이 되었습니다. 원하는 기업에 원서를 냈고 나의 관점에서 잘한다고 생각하는 부분은 이력서에 잘했다고 지나칠정도로 화려하게 적었습니다. 운 좋게도 원하던 회사에 취업을 하게 되었고 생각했던 것보다 훨씬 더 건실할 회사여서 만족했습니다. 그런데 그들은 나에 대한 기대가 너무 컸고 나는 그들의 기대를 만족시킬 수 없었습니다. 이력서에 내가 잘한다는 것과 그들이 원하는 것이 전혀 달랐고 현격하게 차이가 있던 것이었습니다.
같이 일하는 팀의 여성 개발자 사수를 만났습니다. 천사 같고 아름다운 미모를 갖춘 품격이 있는 여자 사수였습니다. 처음부터 결과물을 보여줘야 하는 개발을 맡아 코딩 실력이 바로 드러나는 업무였습니다. 좌충우돌하고 정리가 안되다 보니 순한 양 같던 여자 사수가 폭발하기 시작했습니다. 그때부터 빚에 쫓기는 빚쟁이처럼 매일 쫓기는 프로그래밍을 했고 바쁘기만 했고 매번 보여주기 식의 데모 프로그램으로 하루하루 연명해 나갔습니다. 프로그램 실력이 발전이 아닌 후퇴였고 마음의 상처는 깊어 갔습니다.
그때만 해도 지리 정보시스템(GIS)이 각광을 받아서 그쪽 분야 공공사업들이 많았습니다. 지금이야 네이버 지도, 카카오톡 지도, Google map 이 클릭하면 지도가 뜨지만 그때 당시만 해도 특정 위치를 지도로 띄우는 것조차 상당히 어려운 기술이었습니다. 세계적으로도 지리정보시스템 소프트웨어가 드물어 상품화를 하기가 어려운 업무였습니다. 코딩 실력이 안되는데 바로 결과물을 보여줘야 하는 업무를 하는 것이었습니다. 아파트 모델하우스를 짓고 나서 다시 부수고 또 짓는 것과 같은 겉보기식의 코딩을 하게 되었습니다. 성장하는 것이 하나도 없이 하루살이처럼 그냥 하루를 그냥 보냈습니다.
몇 년 후에 다른 팀으로 옮기면서 두 번째 여성 개발자 사수를 만났습니다. 가는 곳마다 여자 사수를 만나다니 운이 좋은가 봅니다. 좀 독특하고 코딩에 자존심이 강한 여자 사수였습니다. 그 사수는 C++ , MFC와 객체 지향에 대해서 체계적으로 가르쳐 주었고 일정이 급해도 가능한 일정을 제시를 해서 좀 열심히 하면 따라갈 정도의 업무를 진행했습니다. 체계적으로 잘 배워서 그나마 하루하루 성장을 할 수가 있었습니다. 그 사수를 통해서 코딩 세계로 제대로 입문을 하게 되었습니다.
IMF 시절에는 구조조정이 있어 부서별로 몇 명씩 의무적으로 구조 조정할 인원을 할당을 했습니다. 처음 만났던 여자 사수도 구조 조정으로 그만두게 되었고 나가는 사람도 힘들지만 남아있는 사람들도 그 차가운 공기와 고통을 잊을 수가 없습니다. 그런 상황에서 프로그램을 배우고 하루하루 조금씩 성장을 할 수가 있었습니다.
요즘 회사 같은 경우에는 이렇게 많이 기다려주지 않고 자꾸 언제까지 되냐고 들이댑니다. 나도 그렇게 거기 앉아서 일정이나 체크하고 싶고 속으로 ‘당신은 대체하는 일이 무엇이냐’라고 외쳐봅니다. 입사 후 일정 기간 내에 바로 결과물을 보여줘야 합니다. 코딩 시험도 보니 어느 정도 실력을 갖춰야만 회사 문을 두드릴 수가 있습니다. 인생에서 누구를 만나느냐에 따라서 직장 생활이 천국이 되기도 하고 지옥이 되기도 합니다. 좋은 사수를 만나는 것은 행운이지만 그럴 확률은 좀 낮습니다. 자기 일도 바쁜데 친절하게 와서 가르쳐 줄 개발자들이 많지는 않으니 스스로 습득을 해서 회사 업무를 헤치고 나가야 합니다. 좋은 사람을 직접 만나기는 어렵더라도 유튜브, 개발자 모임, 책, 유료 강의 등을 통해서 좋은 스승을 만날 수 있습니다. 온라인으로 배우는 것이 훨씬 더 빠릅니다. 두꺼운 프로그래밍 책을 들고 다니는 개발자들이 있는데 그 책을 처음부터 끝까지 읽는다고 절대로 프로그래밍 실력이 늘지 않습니다. 온라인 강의나 자료를 통해서 먼저 배우고 직접 부딪혀 보고 막힐 경우 책에 혹시 해답이 있나 찾아보는 것이 훨씬 더 효율적입니다.
우리가 사람과 대화를 할 때 한국어, 영어, 프랑스어를 배우듯이 개발자가 컴퓨터와 대화를 하려면 프로그래밍 언어를 배워야 합니다. 하나의 언어를 먼저 확실하게 한 후에 그다음 업무를 시작할 수가 있습니다. 언어를 알지 못하면 외국인과 멀뚱멀뚱 쳐다보는 것처럼 프로그램 언어를 알지 못하면 모니터만 바라봐야 합니다. 모니터 커서는 끊임없이 깜박거리며 코딩을 기다라고 있습니다. 항구에 돛을 내린 채 바다로 향하려 하는 것처럼 한 발짝도 앞으로 나아갈 수가 없습니다.
우선, 기본적인 코딩을 할 정도의 코딩 실력을 갖춰야 합니다. 프로그램 언어를 아주 깊이까지는 알 필요는 없지만 작은 차이가 나중에는 코딩 수준을 나타내고 생산성과도 직결됩니다. 처음에는 기본적인 것들만 알고 차츰 개발을 해나가면서 고급 기술을 습득하는 편이 훨씬 더 좋습니다. 언어를 모르는데 개발 업무는 시작을 할 수가 없습니다. 프로그래밍 언어 중 하나는 잘해놓아야 자신감이 생기고 당당하게 업무에 임할 수가 있습니다. 코딩 실력이 어느 정도 되어서 주변을 돌아볼 여유가 생겼다면 주위 동료나 후배들은 위한 좋은 사수가 되면 더 좋을 것입니다. 6시 칼퇴해야 하니 더 헌신하라고는 못하겠지만 다른 사람을 도와줄 때 본인 코딩의 실력이 더 확장이 됩니다.
실리콘 밸리의 직장인들이 중고등학교에 가서 봉사 수업을 할 때가 있습니다. 이때 진심으로 누가 많이 배운다고 생각하십니까? 학생입니까? 아닙니다. 설명하고 있는 실리콘 밸리 직장인이 가장 많이 배우게 되고 설명하면서 자기 실력을 객관 해가며 실력이 성장합니다. 부족한 부분을 찾아내 실력을 향상하고 업무에 더 기여하게 되고 더 성장합니다. 어느 후배 개발자를 위해서 좋은 사수가 되어 기억에 오래 남는 개발자가 되는 것도 의미가 있을 것입니다. 저는 두 번째 여자 사수한테 항상 빚진 마음이 있으며 늘 감사한 마음을 갖고 있습니다.
회사 내에 문서 시스템을 구축하는 것도 좋은 방법이어서 선임 개발자 시간을 너무 많이 빼앗지 않게 되고, 신규 입사자가 아무리 못해도 마이너스 인력이 되지는 않습니다. 문서를 보고 스스로 공부를 할 수 있으니 후배의 노력에 따라서 얼마든지 빨리 배울 수도 있습니다. 또한 입사 후 실전 개발에 투입되는 시간은 훨씬 빨라지고 분석, 설계를 제대로 해서 개발을 하는 것입니다. 문서화를 한다는 것이 말은 참 쉽지만 현실에서 적용하기는 정말 어렵습니다. 이슈관리 시스템이나 위키 시스템 등 소프트웨어 회사에 필수적으로 필요한 시스템은 잘 구축되어 있어야 합니다.
분석, 설계 문서는 SW를 개발하는데도 필요하며 이 문서들은 나중에서 신입 사원을 교육하는데도 매우 유용합니다. 이런 체계를 갖춘 회사에서는 신입 개발자가 입사를 해도 바로 개발에 투입이 가능하다. 물론 개발 능력을 갖춘 신입 개발자여야 한다. 개발 능력 자체가 부족하다면 얘기가 안 됩니다. 한 사람 몫을 하려면 상당히 시간이 걸리기는 하겠지만 선임을 그렇게 많이 방해하지는 않습니다. 궁금한 것이 있으면 문서나 시스템을 통해서 스스로 배울 수도 있고, 설계가 잘 된 시스템에서는 개발을 할 때 알아야 할 정보의 범위가 작습니다. 자신이 개발해야 할 시스템 인터페이스와 요구사항만 알면 됩니다.
개발자로서 가장 좋지 않은 모습은 한번 가진 기술로 몇십 년 동안 반복해서 사용하는 모습입니다. 가장 심각한 실수는 자신의 경력을 사업처럼 생각하지 않아 경력만 많지 실력은 그대로인 개발자입니다. 생계를 위해 코드를 작성하는 사람은 같은 구덩이를 의미 없이 매일 삽질하는 사람과 같고 다람쥐가 쳇바퀴를 돌듯이 무한 반복일 뿐 성장이 없습니다. 소프트웨어 개발자는 자신의 경력을 사업으로 보아야 하고 자신이 창업을 했다고 가정을 하고 개발을 해야 합니다. 어느 회사의 직장인이 아니라 소프트웨어 직업인으로서 자기의 사업을 가졌다고 생각하고 임해야 합니다. 사용자를 당신이 창업해서 만들어 운영하고 있는 개발사의 고객이라고 생각합니다. 그 고객이 월급을 주고 유지비를 준다고 생각하면 무의미한 코딩과 수동적인 태도에서 벗어나 자유함과 진지함을 갖고 코딩을 할 수 있을 것입니다. 개발자는 자신이 사업가라고 생각하고 코딩을 했을 경우 몇 년 후 그 차이는 확연하게 달라집니다.
단순히 월급만 많다고 만족해서 수동적인 코딩을 하지 말고 사업가적인 마인드를 가지고 코딩을 해야 합니다. 개발자는 창업가 정신이 있어야 하고 항상 고객의 입장에서 코딩을 하게 될 것이고 더 섬세한 프로그램이 됩니다.
코딩도 생산성을 높이기 위한 방법들을 스스로 찾게 될 것입니다. 우선 프로그램 언어를 어설프게 알지 말고 손흥민 선수처럼 자유자재로 볼을 다룰 수 있을 만큼 언어를 파고들어 봅니다. 수많은 관중들이 열광하는 것처럼 사용자가 열광하는 프로그램을 만드는 멋진 개발자로 탄생을 해봅니다. 어느 누구나 뛰어난 개발자 될 수가 있습니다. 열정만 있으면 쉽게 코딩을 하고 꼭 필요한 프로그램을 개발할 수 있습니다.
노코드 열풍도 불고 있어 갈수록 쉽게 코딩하는 개발 툴들이 많이 나오고 있어 절대로 코딩을 두렵다고 생각하면 안 됩니다. 부딪혀보면 별것 아닙니다. 아마 몇십 년 개발한 개발자보다 더 특출 나게 잘할 수도 있습니다. 코딩을 반드시 잘하겠다는 의지가 있으면 금방 시작을 할 수가 있습니다. 언어를 시작한 후에 분석, 설계, 디자인, 코딩, 테스트, 유지보수 단계를 거치면서 코딩의 세계로 빠져들게 될 것입니다. 진짜 아무나 쉽게 할 수 있고 나 같이 코딩에 대해 전무한 상태에서도 하고 있습니다.
코딩을 체계적으로 하고 함수를 잘 나눠서 코딩하느냐에 따라서 그 사람의 발전 속도에 차이가 있습니다. 코딩은 기본으로 하고 업무를 분석하고 설계하는 능력까지 갖춘다면 고급 개발자로서 두각을 나타내게 될 것입니다. 본인이 몇 년 개발을 했다는 경력은 아무 의미가 없습니다. 1년을 코딩했더라도 열정을 갖고 체계적으로 코딩을 했다면 25년 동안 코딩한 사람보다 훨씬 더 훌륭한 개발자입니다. 결코 개발을 얼마 했느냐가 중요하지 않습니다. 내가 지금 사업가 정신으로 개발을 하고 있고 코딩을 생산성 있게 하고 있다면 최고의 개발자입니다. 사용자가 원하는 결과물들을 빨리 내놓는다면 앞길이 훤히 열릴 것입니다.
코로나 팬데믹 이후에 정치는 사라지고 실력만으로 평가를 받게 돼있고 본인 확실한 결과물을 중간 관리자가 가로채 가는 것이 없어졌습니다. 순수하게 본인 업적으로 인정을 받게 된 시기가 되었습니다. 사업가 정신으로 무장해서 코딩을 합니다. 요즘은 디지털 트랜스포메이션이 되면서 필요한 아이템을 찾은 후 실력 있는 몇 명의 개발자가 모여 창업을 해서 좋은 회사들을 만들 수가 있습니다. 여기서, 디지털 트랜스포메이션이란 기술을 사용해 아날로그 프로세스를 디지털로 전환하는 것을 말합니다. 유니콘 기업들이 몇 명이 시작해서 조가 넘는 매출을 넘는 회사가 되었습니다. 몇 조는 힘들더라고 몇 억 정도 매출을 일으키는 스타트업 기업은 충분히 만들 수 있는 세상이 되었습니다. 창업을 꿈꿔야 합니다. 복권 당첨되듯이 일확천금을 꿈꾸지 말고 시나브로 천천히 실력을 기르다 보면 사용자의 요구사항과 딱 맞아떨어질 때 잭팟을 터뜨리게 될 것입니다.