개발자를 시작한, 희망하는 그대에게
2019년 11월. 나는 고민에 빠져 있었다.
안그래도 사용량이 많아 거대한 트래픽이 발생되는 네트워크에서 DDoS(분산 서비스 거부 공격)를 동적으로 탐지하고, 자동으로 대응하는 시스템을 만들어야 했다.
사업 기간은 종료시한을 넘어가고 있었고, 중요한 파트를 담당했던 업체는 목표 기능을 충족하지 못하는 오픈소스를 설치하고 철수해버렸다.
거대 트래픽을 수집하고, 분석해야할 역할인 서버 장비는 목표에 비해 성능이 부족하지만 변경할 수 없었다.
입사 6개월차에 프로젝트 진행상황 확인차 투입된 개발현장은 암울함 그 자체였다.
'죽느냐 사느냐, 그것이 문제로다.'
햄릿 주인공의 고뇌와는 다르겠지만, 죽느냐 사느냐 고민을 하고 있었다.
왜냐하면 사업의 목표를 충족하기 위해서는 전면 재개발이 필요한것으로 판단 되었기 때문이다.
말하자면 자살행위였다. 하지만 그렇게라도 하지 않으면 돌파구가 없었다.
대한민국에는 다양한 국가 조직과 지자체의 대표 웹서비스가 있다.
정부24, 청와대 홈페이지, 문화체육관광부 등 대한민국 정부 마크찍힌 서비스 외 기초지자체 대표 서비스 등이다.
2000년대초 눈부신 인터넷 환경의 발전에 힘입어 전자정부의 기초가 구축되었고, 현재에 이르기까지 다양한 서비스를 하고 있다.
이러한 서비스를 하기 위해서는 당연한 이야기지만 서버가 존재하고, 서버를 운영하는 주체가 있다.
대한민국의 대표적인 공공 서비스 인프라를 운영하는 곳이라 함은 업계 사람들은 익히 알고 있을것이다.
이번 일은 여기서 보안관제를 수행하는 전문가들이 사용할 업무용 도구를 만드는 일이었다.
다양한 기능들이 필요했지만 핵심기능은 DDoS 탐지 및 알림 기능이었다.
클라이언트와 서버를 오가는 수 많은 트래픽 중 정상적인 트래픽과 비정상 트래픽을 구분하기란 쉬운 일이 아니다.
우리나라에 ADSL 등 무제한 인터넷이 보급되던 시기에는 DDoS도 대역폭 공격이 주를 이뤘으나, 보안장벽이 높아지는 만큼 공격 수법도 고도화되어갔다.
가장 골치아픈것이 Slowloris 같은 세션 대역폭 점유 공격이나, DRDoS(분산 반사 서비스 거부 공격) 였다.
기존의 모니터링 체계로는 감지할수도 없고, 공격자를 특정할 수도 없다.
보이지 않는 암살자를 잡아내야 하는 임무를 손발 다 묶인 상황에서 수행해야 했다.
보통 이런 이야기에는 슈퍼 개발자의 영웅담이 따라올것이다.
혼자서 아무도 해결 못한 문제를 단시간에 해결해 회사의 영웅이 되었다 같은 이야기 말이다.
아쉽게도 이 이야기는 마냥 해피엔딩은 아니다.
결론부터 이야기 하자면 문제가 되는 모든 상황을 해결하지는 못했다.
하지만 최소한 사업 검수를 못해서 지체상금을 물어내야 하는 상황에서는 벗어났다.
분명 나는 짧은 기간내에 동적으로 트래픽을 분석, 학습하고 명확한 룰셋기반으로 DDoS를 탐지하는 솔루션을 개발했다.
그러나 위에서 이야기한 여건상의 이유도 있었고, 고객의 눈높이에 충족하지 못해 검수를 받지 못하는 날이 이어졌다.
결국 이 문제를 매듭 지은것은 나의 기술적 우월함이 아니라 회사의 비즈니스적 역량이었다.
이 이야기에서 얻을 수 있는 교훈은 무엇일까?
기술이 중요하지 않다라는 이야기를 하고 싶은게 아니다.
오히려 현재 생각하는것 보다 더 높은곳을 바라보고 성장해야 한다고 말하고 싶다.
세상에는 정말 다양한 직업이 존재한다.
사회의 다양한 필요에 따라 다양한 산업이 존재하기 때문이고, 이를 지탱하는 사람들이 있다.
그 중 정보기술(Information Technology)의 근간을 만들고 유지하는 기술을 주요 역할로 근로를 제공하는 사람들을 우리는 '개발자'라고 한다.
개발자에 대해서 어떠한 경험을 했던, 어떤 이미지를 가지고 있든 우리는 이 세상 모든 개발자들이 하는 일과 기술에 대해서 모두 알 수는 없다.
현대 사회를 이루는 정보의 종류는 보통 사람의 인지능력을 벗어날 정도로 아주 많고, 이 모든 지식을 알거나 경험할 수는 없기 때문이다.
그래서 정보를 다루는것 자체가 전문 기술로서 특별하게 취급되는 경향이 있지만, 정보는 숭배되기 보다는 사용될때 의미가 있다. 사람의 필요에 의해 일이 정의되고, 일을 하기위해 자료를 정리하여 정보가 탄생하며, 이를 잘 활용하여 새로운 가치를 창출하게 되는 것이다.
개발자는 사람의 문제를 해결하여 가치를 창출하는 직업 중 하나이다.
그 방법과 도구가 프로그래밍, 통계학, 인공지능 등 다양한 정보기술일뿐이다.
처음은 누구나 낮설고 두렵다. 나 또한 그러했다.
솔직히 이제는 어렴풋한 기억이 되어 버렸지만 첫 회사 면접날이 떠오른다.
나는 대학을 중퇴하고 국비지원 학원에서 5개월 과정을 수료하고 취업전선으로 뛰어 들었다.
IT직종이 유망해서라기 보다, 단지 컴퓨터를 이용한 사무일을 하고 싶었던것인지도 모른다.
지금 생각해보면 학원 졸업과제로 만든 정말 볼품없는 포트폴리오 하나 가지고 취업에 도전했다.
별다른 배경이나 능력은 없지만 먹고 살아야 하기에 패기는 없었지만 절박함은 있었다.
어릴적 부터 말을 잘 꾸며내거나 사람을 휘어잡는 능력은 턱없이 부족했다.
그래도 내가 아는 선에서 거짓없이 대답하려 노력했다.
그렇게 지방 중소기업에서 나의 첫 개발자 생활은 시작됐다.
첫 회사는 IT 보안 솔루션 회사였다. 공공기관이나 대기업 전산실에 설치될 국내외 네트워크 보안 장비 및 소프트웨어 솔루션을 판매 및 유지보수 하며, 고객이 요구하는 소프트웨어 개발이나 커스터마이징 하는 회사다.
처음 개발자로서 채용되어 자리를 배정받으면 낯선 환경에서 오는 두려움과 새로운 미래에 대한 기대와 흥분이 교차한다.
'과연 내가 배운것이 쓸모가 있을까?'
'내가 이 회사에서 쓸모 없으면 어쩌지?'
'그래도 오늘부터 새로운 생활을 하게 될거야.'
개발조차 익숙지 않은데 네트워크, 해킹, 보안은 정말 다른 세상에 있는 일이었다.
학업을 중도포기했다는 죄책감과 무엇하나 내새울것 없다는 상실감을 잊고자 열심히 일하고 배웠다.
힘들지 않았다고 하면 거짓말이고, 괴롭기만 했냐 하면 그렇지도 않다.
그 날로부터 10여년이 지난 지금도 인연을 이어가는 사람들도 있고, 지금까지의 커리어에서 그곳이 아니었다면 경험하고 배우지 못했을 나만의 노하우도 있다.
몇번이나 직장을 옮겼지만 거저 주어지는 경험은 없고, 그저 좋을뿐인 사람 관계도 없음을 배웠다.
이렇듯 나는 사회의 어떤 단면을 경험 하든 배울것이 있다고 생각한다.
인생을 기회비용으로 생각하여 가능한 빨리 출세하는것을 목표로 하는 사람들도 있고 어느정도 동감한다.
하지만 시간이 유한하기에 '현재를 희생해서 더 나은 미래를 산다'는 생각에는 동의하기 어렵다.
현재가 행복해야 미래에도 행복할것이다.
행복을 위해서는 경제적인 영향도 중요하지만 사람은 빵으로만 살지 않는다.
자신이 감당 가능한 기회비용을 지불하여 현재를 꾸리고 더 나은 미래를 꿈꾼다.
만족의 척도는 개개인의 가치관에 따라 다를테지만 사회에 발을 내딛는 이상 목표를 명확히 해야할 필요가 있다.
당신이 어떤 회사에 소속된 직장인일수도, 자유로운 프리랜서일수도, 혼자 또는 여럿의 동료를 이끄는 기업가일수도 있지만, 수행하는 일의 본질은 동일하다.
우리는 다양한 지식을 도구로 사람의 문제를 해결하는 전문가다.
그렇기에 개발자의 일은 코딩에 국한되지 않는다.
주위를 둘러보고 정보기술을 이용해 해결할 수 있는 일이 있는지 찾아보고 해결하는것이 개발자의 일이다.
이것이 개발자가 갖춰야할 '문제해결 능력'의 실체다.
개발자 커리어를 시작하는 단계에서 이러한 생각을 이해하고 받아들이기는 쉽지 않을 수 있다.
하지만 언젠가는 받아들여야할 임계점이 다가올것이다.
ai가 세상을 뒤집어 놓은 현재, 개발자가 코더로 머무는것은 구시대적 생각이 되어 버렸다.
코딩 기술을 갈고 닦는 것도 중요하지만 그 이상으로 주위를 둘러보고 배울 수 있는것은 배우는것이 좋다.
경험에 가치를 매기고 상하 등급을 나누는것은 우리의 시간은 유한하기에, 인생이나 커리어에 얼마나 긍정적인 영향이 있느냐 판단에 의한 결과다.
이른바 얼마나 '가성비'가 있느냐 인데, 스스로의 인생 조차 무의식적으로 자본주의 논리로 가격을 매기는 것이다.
인생에 가격을 매기면 자본가들의 숫자놀음 보다 못한 인생이 되는 결말이 대부분이다.
그래서 많은 직장인들이 본업에 흥미를 잃고 주식이나 코인 투자에 빠지게 되는 것이다.
값어치를 높이는것도, 값싸게 덤핑으로 처리하는것도 당신의 책임이다.
사람의 문제를 해결하기 위해서는 사람을 알아야 한다.
오늘날 개발자와 같은 전문 분야의 실무자에게 인문학적 역량을 요구하는 이유가 그것이다.
역량을 과시하고 실적을 빠르게 높이는데는 코딩과 같은 하드스킬의 숙련도가 크게 작용한다.
하지만 당신을 세상에서 대체 불가능한 위치로 데려다주는 원동력은 커뮤니케이션 능력과 같은 소프트스킬이다.
'개발자는 평생 배우는 직업이다.'라는 이야기가 있다.
요즘 대부분의 직업인이 마찬가지지만, 개발자의 길을 가기로 했다면 성장을 게을리 해서는 안된다.
과거에 코딩했던 코드의 가치가 영원하지 않을 뿐 더러, 현재 가진 코드 생산 능력의 가치 또한 길게 가지 못하기 때문이다.
프로그램, 앱과 같이 결과물로 남는 가치가 있는가 하면, 프로젝트가 원활히 진행 될 수 있도록 전문가 입장에서 고객 컨설팅을 하거나, 클린코드 기법을 교육해서 개발팀의 생산력을 향상 시키는 등 영향력을 통해 가치를 증명할 수 있다.
이렇듯 개발자의 가치는 유튜버, 시인, 소설작가와 같은 생산적인 활동을 하는 '크리에이터', 피아니스트, 축구선수와 같이 활동을 통한 보상을 받는 '플레이어'와 같기도 하고 다르다.
스스로 개발자로서 행복하기 위해서는 '나는 누구인가?'라는 질문을 항상 가슴에 안고, 방향을 잃지 않아야 할것이다.
개발자로서 커리어를 시작하는 모든 이가 각자 나름대로의 만족을 얻는 내일이 되기를 바란다.