개발자, 누구나 할 수는 있지만 누구나 오래할 순 없다


들어가며

3년 반의 시간동안 개발과 엔지니어링을 경험했지만 아직도 가야 할 길은 너무나도 멀게만 느껴졌다.
모르는 것들을 하나하나 공부한 후에 실제 실무와 프로젝트에 적용하는 과정을 여러 번 반복하며 개발에 대해 조금씩 알 것만도 같았다. 시간이 해결해준다고 하지만 유독 이 업은 시간이 해결해준다기 보단 자기관리와 일상의 루틴이 더 중요하다고 생각했다. 개발, 엔지니어링 어떻게 보면 다 과정이다. 과정이 제대로 이루어지지 않는다면 그 결과는 불보듯 뻔할 수밖에 없다.
지금까지 개발과 엔지니어링을 하면서 경험한 것들과 느낀 점 그리고 앞으로 개발자로 살아남기 위해 어떻게 해야 할지에 대해 간략하게 정리해보는 시간을 가지기로 하였다.


처음부터 개발에 관심을 가졌던 것은 아니었다

처음부터 소프트웨어 개발자나 엔지니어가 되고 싶다는 생각을 가지고 있진 않았다.
첫 시작은 어릴 때 봤던 영화 아이언맨을 통해 나도 저런 로봇을 개발하고 싶다는 이상적인 상상을 할 때부터가 아니었나 싶다.
상상을 현실로 만들고 싶어서였을까? 나는 로봇과 관련된 전공을 지원했다.
결과적으로는 합격했지만 지금 그 당시를 되돌아 보면 그때부터가 내 인생의 고난이 시작된 게 아닌가 싶다.
대학을 들어가니 실력있는 사람들이 너무 많았다. 로봇은 특히나 하드웨어와 소프트웨어를 동시에 잘해야 했기 때문에 여러가지로 신경 쓸 게 많았다. 단순히 로봇에 흥미가 있었고 관심을 가졌다고 해서 로봇을 만들 수 있을 것이라는 나의 생각은 완전히 무너지고 말았다.

일단 CAD나 SolidWorks를 다루는 게 너무 어렵게 느껴졌고 전기, 전자와 회로도 공부는 사실상 중간/기말고사 점수를 높여주는 효자과목에 불과했다. 지금과 같은 마음을 가지고 그 당시 개발 공부에 임했다면 충분히 대기업이나 중견기업 정도는 들어갈 수 있었을지도 모른다고 생각한다. 그때는 시야도 좁았고 미래에 대한 개척에 대하여 생각의 깊이도 많이 부족했다.
그래도 학교에서 C, Java, C# 등의 언어는 어느 정도 배울 수 있었지만 지금처럼 그렇게 와닿지는 않았다.
이게 도대체 뭘 배우는 건지 하는 마음만 가득했다. 학교에서 진행하는 팀 프로젝트나 캡스톤디자인 등을 통해 개발의 벽을 체감했고 졸업을 앞둔 상황에서 대체 무슨 일을 하면서 먹고 살아야 할지에 대한 고민만 가득했다.

내가 본격적으로 개발에 흥미를 가지며 관심을 기울였던 시기는 2019년 8월쯤이었다.
지금은 없어졌지만 우연히 알게 된 경기산업기술교육센터의 스마트사물인터넷 교육과정을 신청하였다.
이력서와 자기소개서를 제출하고 면접까지 본 끝에 합격하여 약 5개월 간 교육을 받게 되었다.
이 교육과정이 좋았던 이유가 교육생들에게 기숙사를 제공했다. 숙식 제공은 물론 온전히 교육장 옆에 있는 기숙사에서 자고 일어나 바로 오전부터 교육을 받으며 야간학습까지 할 수 있었으니 지금 생각해보면 엄청 꿀같은 교육과정이었다.

어떻게 보면 정말 행운이었다. 당시에는 정말 취업을 하기 위해 잠까지 포기하며 공부했다.
5일 기준으로 수면 시간이 15시간을 넘긴 적이 없었다.
물론 취업 때문에 마음을 단단히 먹고 공부한 것도 있었지만
그토록 개발 공부에 전념할 수밖에 없었던 이유가 뭐였을까?


방구석여포의 현실

취업을 준비하는 과정에서 조금이라도 취업을 향한 마음을 유지하기 위해 기본적인 HTML, CSS, JavaScript, C, Java 등을 공부한 적이 있었다.
마음 편안하게 집에서 개발 공부를 하다보면 흥미가 생기고 뭔가 할 수 있겠다는 마음을 갖게 된다. 하지만 거기까지였다. 뭔가 경험이 있거나 실무를 겪어봤다면 어떠한 방향으로 확장을 해야하며 개선을 해야 하는지를 잘 알지만 그때는 그런 게 전혀 없었다.
스스로 방구석여포 코딩을 반복하며 취업의 의지를 불태우는 것으로 그치지 않았나 하는 생각이 든다.
그래도 그 방구석여포 코딩시절이 마냥 후회된다고 생각하지 않는다. 졸업을 한 이후에 내 스스로 뭐라도 해보겠다는 심정으로 모니터를 켜고 코딩을 시작한 첫 걸음이었기 때문이다. 그전까지는 시험을 위해, 학교 프로젝트를 위해 모니터를 켜고 코딩을 했지만 이번에는 달랐다.
아무런 성과도, 경험도 없던 그 방구석여포의 마음속에 개발을 향한 마음이 조금씩 싹트기 시작했다.
전공을 살려서 취업을 하는 게 가장 현실적이고도 최적의 대안이라고 생각했던 내 입장에서 경기산업기술교육센터의 스마트사물인터넷 교육과정은 지금 생각해봐도 정말 신의 한 수라고 생각한다.


개발을 하려면 성과가 있어야 한다. 성과가 생기면 자신감과 의지가 생긴다

나는 스마트사물인터넷 교육과정을 성공적으로 수료했다. 팀장 역할을 맡아 I-HOME이라는 협업 프로젝트를 성공적으로 끝냈다. 믿기지가 않았다. 사실 난 학교에서 프로젝트를 진행할 때 보조 역할을 많이 수행했다. 프로젝트 문서화와 기술적인 역할들은 다른 팀원들이 수행했다.
그런데 이번에는 달랐다. 문서화는 물론 핵심 기술 개발과 프로젝트 관리 그리고 인프라 구축까지 거의 대부분의 역할을 수행했다. 처음으로 뭔가 스스로 주도해서 누군가에게 설명할 수 있을 정도의 기술적 퀄리티를 완성시킨 최초의 프로젝트였다.
해당 교육과정을 거치고 프로젝트를 진행하는 과정에서 엄청난 자신감을 갖게 되었다. 스스로 능력이 부족하다고 생각했던 내 자신이 프로젝트를 성공적으로 마무리하고 심지어 상까지 받을 거라고는 전혀 생각하지 못했으니 말이다.


I-HOME 프로젝트 링크:

포트폴리오:

유튜브:


6년이 지난 지금도 그렇지만 뭐든지 자신감이 중요하다고 생각한다. 자신감을 가지려면 어느 정도 성과가 있어야 한다. 물론 처음부터 성과를 바로 경험하기란 쉽지 않다. 하지만 당장의 시도와 도전이 두려워서 아무것도 하지 않는다면 상황은 결코 달라지지 않는다.
6년 전, 나는 진짜 아무것도 가진 게 없었다. 개발을 하고 싶은 생각도, 개발자가 되고 싶은 마음도 없었다
왜 개발을 해야 하는지, 도대체 무엇 때문에 이걸 해야 하는지에 대한 인식도 없었다. 하지만 난 조금이라도 시도하려고 했다.
그 결과, 스스로 나에 대한 가능성을 알게 되었고 그때부터 이 길을 가기로 결심했다.


처음부터 올바른 방향과 방식으로 개발을 하는 것을 경험하는 게 좋다

교육과정이 끝난 이후 의료IT 업계의 회사로 취업을 했다. 근데 웬걸 처음 보는 언어를 가지고 개발을 해야 한다는 사실에 당혹감을 감추지 못했다.
.NET은 문법 자체도 이질적이어서 그런지 적응하는데 상당한 시간이 걸릴 것 같았지만 다행히 잘 적응한 덕분에 무사히 개발 현장에 투입되어 개발을 진행할 수 있었다. 그렇다고 해서 개발을 잘한 것은 아니었다. 코드 하나 수정하는 것도, 쿼리를 작성하는 것에 있어 손이 무겁게 느껴지는 경우가 많았다.


이렇게 해야 하나… 저렇게 해야 하나… 누군가에게 물어는 보고 싶은데 저마다 다 바쁘고 각자의 업무에 치중하느라 누군가에게 물어보기도 쉽지 않았다. 힘들게 취업한 첫 회사에서 실무를 경험하는 과정을 겪으며 진짜 개발을 잘하려면 어떻게 해야 할지에 대한 고민을 거의 매순간 했던 것 같다.
클린 코드, 형상 관리, 코드 리뷰, 업무 자동화 등은 어떻게 보면 개발을 잘하고 싶은 입장에서 볼 때 반드시 고려해야 하는 부분이다.
하지만 그때는 저런 것들을 전혀 모르고 개발했기 때문에 어떻게 해야 올바른 방향과 방법으로 개발을 하고, 테스트를 하고, 요구사항 반영을 어떻게 해야 하는지에 대한 노하우와 인식이 거의 없었다.

그렇게 개발을 계속하다 보니 뭔가 더 많은 경험을 하고 싶었다. 2년 반 정도 한 회사에서 개발을 하다 보니 여러모로 느끼는 것들이 많았다. 무엇보다 확장성과 안정성 그리고 어느 정도 트렌드를 반영할 수 있는 기술로 개발을 할 수 있는 개발자가 되고 싶었다.
성장을 중요하게 생각했던 나로서는 다른 선택의 여지가 없었다. 결국 퇴사를 결심했고 온라인 부트캠프를 신청하여 본격적으로 Java 백엔드 개발자가 되기로 결심했다.
생각해보면 그때 나의 선택이 괜찮았다고 생각한다. 왜냐하면 그때 Java를 공부하며 여러 경험을 한 덕분에
어떠한 관점에서, 어떠한 방향으로 개발을 해야 하는지에 대해 충분히 생각해볼 수 있었기 때문이다.


개발자에게 기능 개발은 당연하다, 문제는 성능과 확장성, 안정성 그리고 비즈니스 감각이다.

기능 개발에 치중하면 코더밖에 될 수 없다

기능 개발을 잘해야 하는 건 어떻게 보면 당연한 것이다. 제대로 동작되는 기능을 개발할 수 있다는 것에 대해 만족을 하기보단 그 기능이 제대로 동작될 수 있는 인프라와 개발환경 그리고 각각의 상황을 고려하면서 개발하는 과정이 훨씬 더 중요하다. 단순히 기능만 많이 구현할 줄 아는 개발자의 페이스를 유지하기 보단
메모리 현황과 사용자 트래픽, UX 트렌드, 사용자 편의, 개발 도메인의 특성, 비즈니스의 목적 등 여러 방면에서 고민하며 개발을 할 수 있어야 한다.


그렇기 때문에 테스트는 필수이고 운영 환경에 배포하기에 앞서 시뮬레이션과 사전/사후 계획을 세워 돌발상황과 이슈에 대응해야 한다는 인식을 가지며 개발하는 개발자가 진정한 개발자라고 생각한다.

오늘은 어떤 기능이 제대로 구현되는데 그 다음날이 되니 갑자기 구현이 안 된다? 그렇다면 해당 문제가 어디서부터 비롯되었고 그 문제를 해결하기 위해 어떻게 접근을 해야 하는지, 또 그 문제를 해결하기 위해 필요한 기술과 고려해야 할 특이사항들이 있는지를 확인해야 한다.


어제 다르고 오늘 달라질 수 있는 코드를 짠다면 그거야말로 엄청난 낭비가 아니겠는가?
실제로 현업에서 일하다 보면 고객의 요구사항이 지나칠 정도로 많아서 유지보수가 어려운 상황이 종종 발생한다. 그렇기 때문에 단순히 고객의 요구사항을 반영하기 보다 유지보수 측면을 고려해서 개발하는 경우가 무엇보다 중요하다. 간혹 나의 코드를 내가 아닌 다른 사람이 보는 경우가 있는데 그럴 때 어떻게 할 것인가. 하지만 생각보다 코드 스타일이 이 사람 다르고 저 사람 다른 경우가 많아서 유지보수나 사용자 요구사항 반영 작업에 지나칠 정도로 많은 시간이 소요되는 경우가 많았다.


진짜 이 일로 오랫동안 먹고 살 수 있는지를 고민해야

처음에는 높은 연봉이나 당장의 취업을 위해 개발자로 취업하는 것을 목표로 삼고 도전했을지도 모른다. 하지만 시간이 지날수록 과거의 목적과 목표는 희미해지고 자신의 한계와 번아웃을 경험하게 된다. 문제는 그러한 상황에서 어떻게 행동하느냐에 달렸다. 사실 나도 스스로 어떻게 해야 하는지 잘 몰라서 수없이 방황했다.

어느 순간 개발자라는 직종이 나하고 잘 맞나 하는 생각도 종종 했다. 하지만 그때는 잘 몰랐다. 몸이 힘들어서 개발을 하고 싶지 않은건지 아니면 커리어 전환이 필요한 순간이었는지. 생각해보면 아무리 힘들고 어려웠던 순간이었음에도 평일, 주말 구분없이 개발을 하면서 하루도 노트북을 손에서 놓지 않은 날들도 많았다.
근데 그렇게 평일, 주말없이 한 주를 보냈음에도 불구하고 뭔가 억울하거나 불편한 마음은 없었다. 오히려 개발을 하면서 마음이 편했다. 사실 이거 아니면 안 된다는 생각이 더 강해서 그랬는지 몰라도 개발을 하는 그 순간만큼은 집중이 잘됐다. 내가 쓸모있는 사람이라는 생각이 들었고 더 열심히 개발을 잘해서 성장하고 싶은 마음이 있었다. 지금도 마찬가지다. 늘 뭔가를 하기 위해 하루를 보낸다. 특별한 약속이나 일정이 없는 날에는

코딩으로 몸을 풀거나 부족한 지식들을 공부하며 하루를 보낸다. 더도 말고 덜도 말고 최소 몇 시간 이상은 공부를 해야 한다는 마음으로 하루를 보내려고 한다.


흔히 워라밸을 말하고 개인의 삶이 보장된 그런 일을 해야 한다고 얘기한다. 하지만 개발자로 살아가는 입장에서 워라밸은 정말로 쉽지 않다. 워라밸을 하기 위해 개발자가 되고 싶은 사람이 있다면 솔직히 말리고 싶다. 개인 일정 때문에 업무 효율을 저하시키는 그런 식의 일처리가 지속된다면 그건 개발보다는 다른 업무를 하는 게 더 낫지 않나 하는 생각이 든다.

그리고 개발이 단순히 기능을 구현하고 서비스를 제공하는 것으로 끝나는 것이 아니라 24시간 내내 그 서비스를 정상적으로 동작하게 하도록 유지보수와 관리를 철저하게 해야 하기 때문에 항상 루틴을 유지하지 않으면 안 된다고 생각한다. 물론 하루종일 개발에만 집중하기란 불가능하다. 적당한 휴식과 여행도 필요하다.
하지만 적어도 이 일이 나에게 부담스럽거나 불편하게 느껴져서는 안 된다. 자신의 부족한 점을 찾게 되거나 누군가에 의해 알게 된다면 주저하지 말고 그것을 보완해나가기 위해 노력해야 한다.


부족하다고 자책하지 말고 계속 앞으로 나아가야 한다

잘하는 사람들이 너무나 많다. 자기 관리를 잘하는 사람들도 많다. 어떻게 할 거 다하면서 그렇게 개발들을 잘할까? 개발자 인생, 이대로 포기해야 하는 걸까? ‘그래, 나는 안 되니까 저기 뭐 어느 정도 생계는 유지하면서 개발 경력 좀 쌓을 수 있는 그런 회사 찾아서 취업 준비나 해야겠다.’ 뭐 이런 생각을 해야 하는 걸까?
부족하다고 느끼는 건 지극히 긍정적인 신호라고 생각한다. 자신의 역량을 객관적으로 파악할 수 있는 역량이 중요하다. 요즘 같은 시대에 AI를 활용하여 웬만한 건 다 할 수 있는 세상에서 개인의 역량을 파악하기란 정말 쉽지 않기 때문이다. 부족하다고 생각하면 더 노력해야 한다. 반복적인 노력도 중요하지만 자신만의 개성을
살려서 스스로에게 특화된 노력을 할 수 있는 게 정말 중요하다고 생각한다. 똑같이 노력을 하는데 더 잘 될 수 있을까?

이미 실력이 출중한 사람들은 더더욱 노력을 할 것이고 그로 인해 격차는 더 벌어질 것이다. 그렇다면 동일한 전장에서 나의 경쟁력을 더 키우려면 뭔가 전략과 계획이 있어야 한다. 그래야 성장을 기대할 수 있다.
잘하는 사람이 많다고 해서 포기하고 그만둘 게 아니라 날마다 작은 노력들을 하나씩 실천하는 것이다. 보잘 것없는 것이라도 괜찮다. ‘Hello World!’라도 치면서 하루를 시작하는 것이다. 의미 없는 노력이라고 생각할지도 모른다. ‘아무도 관심없고 누구도 쳐다보지 않는데 과연 이런 나의 노력이 언젠가 발현될 날이 올 수 있을까’라고 생각하며 포기와 절망에 빠질 수도 있다. 아니다. 그냥 하면 된다. 당장 돈이 안 되더라도 뭔가를 시도하는 것 자체에 의미가 있다.


누군가에게 보여주기 위해 개발을 시작했는가? 나 같은 경우 진실의 영역에서 건전하고 책임감있는 일을 하고 싶어서 개발자가 되기로 결심한 사람이다. 사람은 거짓말을 하지만 기술은 거짓말을 하지 않기 때문이다. 그런 기술을 보면서 어떻게든 고객들과 사용자들에게 내 마음이 담긴 코드를 통한 기술로 사회에서 꼭 필요한 사람이 되고 싶었다. 그래서 개발자의 길을 걷기로 했고 지금도 걸어가고 있다. 그냥 하면 된다. 복잡하게 생각할 거 없다. 이미 앞서간 사람들 때문에 주저할 필요도 없다. 의지만 잃지말고 매순간 동기부여를 지키기 위해 스스로를 닦달해야 한다. 가진 게 없다면 노력을 많이 하는 거 외에는 달리 생각할 게 없다.


개발자 = 스포츠 선수 = 프로게이머

개발은 스포츠와도 같다. 항상 훈련을 하지 않으면 안 된다. 훈련을 하지 않고 어떻게 개발 역량이 향상될 수 있겠는가? 나의 몸값을 높이려면 그만큼 노력을 해야 한다. 이직을 통한 연봉 인상 그리고 경력을 통해 상승하는 나의 연봉은 결국 내가 어떻게 살아가느냐에 달려 있다. 내가 뭔가를 잘하고 싶다면 그에 대한 대가가 필요하다. 어떠한 대가를 지불하지 않고서 성장에 대한 기대감만 가진다면 실패를 예약하는 것과 다를 게 없다.
개발은 분야가 너무나도 많다. 그리고 요즘은 인프라와 CI/CD까지 어느 정도 알아야 한다. 추가적으로 알아야 할 것도 많지만 여기서 더 얘기하진 않겠다.


다방면에 대한 관심을 가짐과 동시에 역량을 지속적으로 유지해야 하는 상황에서 날마다 무엇을 해야 성장을 할 수 있을지에 대해 매순간 고민해야 한다. 스포츠 선수들은 자신만의 루틴이 있다. 하루를 시작할 때 반드시 루틴을 실천한 다음에 훈련을 하는 선수들도 있다. 개발자도 마찬가지다. 어떠한 루틴이 나에게 맞으며 어떠한 업무 방식이 나 외에 다른 팀원들에게 잘 맞는지에 대해서도 한 번쯤은 고민할 수 있어야 한다.

단순히 개발을 잘하는 것만으로는 한계가 있다. 취업을 해서 회사를 다니든, 프리랜서로 활동을 하든 결국 경쟁력이 있어야 살아남는다. 기본적으로 코딩은 날마다 하는 게 좋다. 예전에 스타크래프트 프로게이머와 관련된 영상을 본 적이 있는데 3일만 쉬어도 완전히 감각을 잃어버려서 게임 실력에 영향을 준다고 했다. 생각해보니 코딩도 그랬다. 개발이란 게 원래 쉬는 텀이 길수록 역량이 떨어진다. 하다 못해 코딩을 안 하더라도

CS 지식을 공부하거나 영상을 통해 개발이나 기타 IT와 관련된 컨텐츠를 접하면서 계속 감각을 유지해야 하는데 그마저도 하지 않는다면 당연히 실력에 영향이 갈 수밖에 없다.

내 지론은 분명하다. 코딩은 평일이든, 주말이든 날마다 해야 한다. 그래야 감각이 유지가 된다. 참고로 타자를 치는 것과는 다르다. 코딩은 코드를 치면서 그 코드가 어떻게 작동이 되며 실제로 내가 작성한 코드가 어떠한 영향을 미칠지에 대해 생각을 하면서 작업하는 복합적인 과정이기 때문이다.

개발자는 스포츠 선수임과 동시에 프로게이머나 마찬가지다. 돈 받고 개발하는 사람들은 모두가 프로다. 그렇지 않은가? 그런데 돈을 받고서도 개발 역량을 제대로 성장시키지 못한다면 그건 프로라고 볼 수 없다. 수많은 삽질과 시행착오를 겪는 것이야말로 개발자에게 있어 필수코스이며 누구나 겪는 것이다.
그게 싫다고 한다면 개발자가 되면 안 된다. 하루, 이틀 심지어는 한 달 많게는 3개월에서 6개월이 지나도 풀리지 않는 문제들이 있는데 그걸 감당할 수 없다면 개발자의 길을 가서는 안 된다. 세상은 빠르게 변하고 새로운 기술들은 계속 나온다. 회사에선 어떻게든 비즈니스의 경쟁력을 높이고 성과를 달성하기 위해 여러가지 시도를 할 것이고 그 역할은 결국 개발자가 맡아서 해야 한다. 만약에 그런 역할이 자기 자신에게 주어진다면 어떻게 할 것인가? 포기할 것인가 아니면 책임감을 가지고 당당하게 시도할 것인가?

수많은 부트캠프에서 쏟아져 나오는 취준 개발자들과의 차별화는 100% 필수다. 실무 감각과 현업 프로세스에 대한 인식 그리고 다양한 영역을 고려할 수 있는 개발 역량을 보유하는 것에 많은 노력을 기울여야 한다고 생각한다. 아키텍처 설계, 문서 작성 능력, 프레젠테이션, 새로운 지식에 대한 관심과 학습 등 여러 방면에서 나름의 멀티 태스킹이 이루어질 때 비로소 개발자로서의 위치와 역량이 어느 정도 보장될 수 있지 않을까?


경력이 전부가 아니다

경력이 쌓이면 일을 더 잘하고 개발을 더 잘할 것 같지만 실상은 그렇지가 않다. 오히려 매너리즘에 빠져서 실력이 제자리에 머무는 경우도 적지 않다. 원래 익숙해지다 보면 성장보다는 유지하려는 경향이 더 강해진다. 그래서 개발자는 경력의 역설에 빠지면 안 된다. 기술적 이슈는 날마다 새롭게 느껴진다.

기존에 경험했던 이슈들은 쉽게 해결하지만 처음 접하는 이슈들은 경력자들에게 물어봐도 모른다는 답변을 받는다. 당연하다. 그런 이슈를 겪어본 적이 없으니까. 그렇다면 내 스스로 찾아야 한다. 난 여기서 말해주고 싶다. 누구도 겪어보지 못한 이슈를 접하고 그것을 해결하는 게 부담스럽다고 한다면 개발자를 하면 안 된다.
과거 나는 개발은 아니었지만 솔루션 엔지니어로 일하면서 한 번도 겪어보지 못한 이슈를 해결해야 하는 상황과 마주했다. 지금 생각해보면 그때 나는 성숙하지 못했다. 오히려 더 적극적으로 문제를 해결하기 위해 노력해야 했는데 그러질 못했다. 결국 팀원들의 도움을 받으면서 문제를 해결할 수 있었지만 그때의 나를 되돌아볼 때마다 깊이 반성한다. 매사 책임을 회피하지 않고 문제를 해결하기 위한 기본적인 규칙과 태도, 마음가짐을 지키는 것이 얼마나 중요한지를 깨닫게 된 경험이었다.

실무 현장에선 어떠한 일도 발생할 수 있다. 기술적 이슈뿐만 아니라 팀원 이슈, 인성 이슈, 일정 이슈 등 다양한 상황과 마주할 수 있다. 신기하게도 경력은 늘어나는데 사람 때문에 힘들다고 느껴지는 건 좀처럼 보완이 되질 않았다. 그때마다 내 스스로 되물었다. 내가 왜 이 일을 선택했고 지금까지도 이 일을 하고 있는지에 대해서 말이다. 어쩔 수 없다. 사람마다 성격이 다르고 성장배경도 다른데 모두가 일관된 성격과 성향을 가지고 일하는 조직이 어디있겠는가.


인정을 해야 한다. 군말없이 담담하게 일하면서 성장과 전진만을 생각하며 하루를 살아가는 것에 집중해야 한다. 나의 경력이 쌓이는 만큼 역량이 향상되고 노하우도 많아지겠지만 그만큼 책임감이 더 커지고 더 높은 수준으로 일해야 한다는 점을 잊지 말아야 한다.


이제는 거의 모든 부분을 고려해서 개발을 해야 하는 시대

결국 개발은 나 혼자 하는 게 아닌 여러 사람들과 같이 하는 것이다. 그리고 내가 작성한 코드를 통해 수많은 서비스들이 고객들에게 제공된다. 요즘이야 AI를 활용하여 개발을 하지만 내가 개발을 할 그 당시엔 ChatGPT가 없었다.

더군다나 내가 경험했던 도메인 자체가 워낙 전문적이고 특화된 곳이다 보니 구글링을 해도 문제가 쉽게 해결되지 않았다. 구글링도, AI도 없다면 어떻게 개발을 할 것인가? 아마 이걸 염두에 두고 개발을 하는 개발자는 거의 없지 않을까? 그럼 뭘 가지고 개발을 할 수 있었을까? 기술문서나 공식 사이트를 참고하거나 이전 선배들이 개발한 코드들을 참고해서 개발하는 게 전부였다. 하지만 그렇다고 해도 한계가 있었다. 고객 사이트의 특성과 요구사항, DB/인프라 측면을 고려했을 때 아예 개발 로직을 새로 구현해야 하는 경우도 많았다.
매일 밤늦게까지 고민하고 한숨 쉬면서 개발을 하고 또 개발을 했지만 성과는 미미한 수준에 그쳤을 때의 그 허탈감은 이루 말할 수 없었다.

하지만 아이러니하게도 그러한 과정 속에서 성과를 달성했던 경험 그리고 고객에게 감사하다는 말을 들을 때의 그 안정감 덕분에 지금까지도 개발을 하는 게 아닌가 싶다. 개발은 분명 매력이 있다. 코드를 통해 불편함을 해결하고 삶의 질을 높여준다는 측면에 있어 선한 영향력을 줄 수 있는 훌륭한 행위라고 생각한다. AI와 AI Agent가 활개를 치고 있는 요즘, 더 쉽게 개발을 할 수 있게 되었지만 역으로 개발 역량이 더 중요해졌다고 생각한다. 이제는 개발 외에 DB, 프론트엔드, 인프라, 클라우드, AI, 고객, 비즈니스, 트렌드 등
개발과 연관된 모든 것들을 다양하게 공부하고 학습하지 않으면 경쟁력 있는 개발자로 살아가기 힘든 시대가 되었다.


하지만 반대로 생각해보면 그만큼 개발에 진심이고 성과를 내고 싶은 욕구가 간절한 사람들에게 있어 최적의 시대가 아닐까 하는 생각이 든다. 아직도 실력은 부족하지만 개발에 대한 나의 의지와 일상 루틴을 지속적으로 유지하고 싶은 마음은 사그라들지 않았다. 숨쉬는 것만큼 개발을 하는 것에 있어 익숙함과 친숙함을 지키기 위해 오늘도, 내일도 달리고 또 달릴 것이다. 해 뜨는 일상이든 비 오는 일상이든 웃고 떠들 수 있는 자유는 돈이 많아서가 아니라 내가 하고 싶은 뭔가가 있기 때문에 가능한 것이 아닐까?


BeWrite님 글 더보러 가기 : https://brunch.co.kr/@codesche


들어가며

3년 반의 시간동안 개발과 엔지니어링을 경험했지만 아직도 가야 할 길은 너무나도 멀게만 느껴졌다.
모르는 것들을 하나하나 공부한 후에 실제 실무와 프로젝트에 적용하는 과정을 여러 번 반복하며 개발에 대해 조금씩 알 것만도 같았다. 시간이 해결해준다고 하지만 유독 이 업은 시간이 해결해준다기 보단 자기관리와 일상의 루틴이 더 중요하다고 생각했다. 개발, 엔지니어링 어떻게 보면 다 과정이다. 과정이 제대로 이루어지지 않는다면 그 결과는 불보듯 뻔할 수밖에 없다.
지금까지 개발과 엔지니어링을 하면서 경험한 것들과 느낀 점 그리고 앞으로 개발자로 살아남기 위해 어떻게 해야 할지에 대해 간략하게 정리해보는 시간을 가지기로 하였다.


처음부터 개발에 관심을 가졌던 것은 아니었다

처음부터 소프트웨어 개발자나 엔지니어가 되고 싶다는 생각을 가지고 있진 않았다.
첫 시작은 어릴 때 봤던 영화 아이언맨을 통해 나도 저런 로봇을 개발하고 싶다는 이상적인 상상을 할 때부터가 아니었나 싶다.
상상을 현실로 만들고 싶어서였을까? 나는 로봇과 관련된 전공을 지원했다.
결과적으로는 합격했지만 지금 그 당시를 되돌아 보면 그때부터가 내 인생의 고난이 시작된 게 아닌가 싶다.
대학을 들어가니 실력있는 사람들이 너무 많았다. 로봇은 특히나 하드웨어와 소프트웨어를 동시에 잘해야 했기 때문에 여러가지로 신경 쓸 게 많았다. 단순히 로봇에 흥미가 있었고 관심을 가졌다고 해서 로봇을 만들 수 있을 것이라는 나의 생각은 완전히 무너지고 말았다.

일단 CAD나 SolidWorks를 다루는 게 너무 어렵게 느껴졌고 전기, 전자와 회로도 공부는 사실상 중간/기말고사 점수를 높여주는 효자과목에 불과했다. 지금과 같은 마음을 가지고 그 당시 개발 공부에 임했다면 충분히 대기업이나 중견기업 정도는 들어갈 수 있었을지도 모른다고 생각한다. 그때는 시야도 좁았고 미래에 대한 개척에 대하여 생각의 깊이도 많이 부족했다.
그래도 학교에서 C, Java, C# 등의 언어는 어느 정도 배울 수 있었지만 지금처럼 그렇게 와닿지는 않았다.
이게 도대체 뭘 배우는 건지 하는 마음만 가득했다. 학교에서 진행하는 팀 프로젝트나 캡스톤디자인 등을 통해 개발의 벽을 체감했고 졸업을 앞둔 상황에서 대체 무슨 일을 하면서 먹고 살아야 할지에 대한 고민만 가득했다.

내가 본격적으로 개발에 흥미를 가지며 관심을 기울였던 시기는 2019년 8월쯤이었다.
지금은 없어졌지만 우연히 알게 된 경기산업기술교육센터의 스마트사물인터넷 교육과정을 신청하였다.
이력서와 자기소개서를 제출하고 면접까지 본 끝에 합격하여 약 5개월 간 교육을 받게 되었다.
이 교육과정이 좋았던 이유가 교육생들에게 기숙사를 제공했다. 숙식 제공은 물론 온전히 교육장 옆에 있는 기숙사에서 자고 일어나 바로 오전부터 교육을 받으며 야간학습까지 할 수 있었으니 지금 생각해보면 엄청 꿀같은 교육과정이었다.

어떻게 보면 정말 행운이었다. 당시에는 정말 취업을 하기 위해 잠까지 포기하며 공부했다.
5일 기준으로 수면 시간이 15시간을 넘긴 적이 없었다.
물론 취업 때문에 마음을 단단히 먹고 공부한 것도 있었지만
그토록 개발 공부에 전념할 수밖에 없었던 이유가 뭐였을까?


방구석여포의 현실

취업을 준비하는 과정에서 조금이라도 취업을 향한 마음을 유지하기 위해 기본적인 HTML, CSS, JavaScript, C, Java 등을 공부한 적이 있었다.
마음 편안하게 집에서 개발 공부를 하다보면 흥미가 생기고 뭔가 할 수 있겠다는 마음을 갖게 된다. 하지만 거기까지였다. 뭔가 경험이 있거나 실무를 겪어봤다면 어떠한 방향으로 확장을 해야하며 개선을 해야 하는지를 잘 알지만 그때는 그런 게 전혀 없었다.
스스로 방구석여포 코딩을 반복하며 취업의 의지를 불태우는 것으로 그치지 않았나 하는 생각이 든다.
그래도 그 방구석여포 코딩시절이 마냥 후회된다고 생각하지 않는다. 졸업을 한 이후에 내 스스로 뭐라도 해보겠다는 심정으로 모니터를 켜고 코딩을 시작한 첫 걸음이었기 때문이다. 그전까지는 시험을 위해, 학교 프로젝트를 위해 모니터를 켜고 코딩을 했지만 이번에는 달랐다.
아무런 성과도, 경험도 없던 그 방구석여포의 마음속에 개발을 향한 마음이 조금씩 싹트기 시작했다.
전공을 살려서 취업을 하는 게 가장 현실적이고도 최적의 대안이라고 생각했던 내 입장에서 경기산업기술교육센터의 스마트사물인터넷 교육과정은 지금 생각해봐도 정말 신의 한 수라고 생각한다.


개발을 하려면 성과가 있어야 한다. 성과가 생기면 자신감과 의지가 생긴다

나는 스마트사물인터넷 교육과정을 성공적으로 수료했다. 팀장 역할을 맡아 I-HOME이라는 협업 프로젝트를 성공적으로 끝냈다. 믿기지가 않았다. 사실 난 학교에서 프로젝트를 진행할 때 보조 역할을 많이 수행했다. 프로젝트 문서화와 기술적인 역할들은 다른 팀원들이 수행했다.
그런데 이번에는 달랐다. 문서화는 물론 핵심 기술 개발과 프로젝트 관리 그리고 인프라 구축까지 거의 대부분의 역할을 수행했다. 처음으로 뭔가 스스로 주도해서 누군가에게 설명할 수 있을 정도의 기술적 퀄리티를 완성시킨 최초의 프로젝트였다.
해당 교육과정을 거치고 프로젝트를 진행하는 과정에서 엄청난 자신감을 갖게 되었다. 스스로 능력이 부족하다고 생각했던 내 자신이 프로젝트를 성공적으로 마무리하고 심지어 상까지 받을 거라고는 전혀 생각하지 못했으니 말이다.


I-HOME 프로젝트 링크:

포트폴리오:

유튜브:


6년이 지난 지금도 그렇지만 뭐든지 자신감이 중요하다고 생각한다. 자신감을 가지려면 어느 정도 성과가 있어야 한다. 물론 처음부터 성과를 바로 경험하기란 쉽지 않다. 하지만 당장의 시도와 도전이 두려워서 아무것도 하지 않는다면 상황은 결코 달라지지 않는다.
6년 전, 나는 진짜 아무것도 가진 게 없었다. 개발을 하고 싶은 생각도, 개발자가 되고 싶은 마음도 없었다
왜 개발을 해야 하는지, 도대체 무엇 때문에 이걸 해야 하는지에 대한 인식도 없었다. 하지만 난 조금이라도 시도하려고 했다.
그 결과, 스스로 나에 대한 가능성을 알게 되었고 그때부터 이 길을 가기로 결심했다.


처음부터 올바른 방향과 방식으로 개발을 하는 것을 경험하는 게 좋다

교육과정이 끝난 이후 의료IT 업계의 회사로 취업을 했다. 근데 웬걸 처음 보는 언어를 가지고 개발을 해야 한다는 사실에 당혹감을 감추지 못했다.
.NET은 문법 자체도 이질적이어서 그런지 적응하는데 상당한 시간이 걸릴 것 같았지만 다행히 잘 적응한 덕분에 무사히 개발 현장에 투입되어 개발을 진행할 수 있었다. 그렇다고 해서 개발을 잘한 것은 아니었다. 코드 하나 수정하는 것도, 쿼리를 작성하는 것에 있어 손이 무겁게 느껴지는 경우가 많았다.


이렇게 해야 하나… 저렇게 해야 하나… 누군가에게 물어는 보고 싶은데 저마다 다 바쁘고 각자의 업무에 치중하느라 누군가에게 물어보기도 쉽지 않았다. 힘들게 취업한 첫 회사에서 실무를 경험하는 과정을 겪으며 진짜 개발을 잘하려면 어떻게 해야 할지에 대한 고민을 거의 매순간 했던 것 같다.
클린 코드, 형상 관리, 코드 리뷰, 업무 자동화 등은 어떻게 보면 개발을 잘하고 싶은 입장에서 볼 때 반드시 고려해야 하는 부분이다.
하지만 그때는 저런 것들을 전혀 모르고 개발했기 때문에 어떻게 해야 올바른 방향과 방법으로 개발을 하고, 테스트를 하고, 요구사항 반영을 어떻게 해야 하는지에 대한 노하우와 인식이 거의 없었다.

그렇게 개발을 계속하다 보니 뭔가 더 많은 경험을 하고 싶었다. 2년 반 정도 한 회사에서 개발을 하다 보니 여러모로 느끼는 것들이 많았다. 무엇보다 확장성과 안정성 그리고 어느 정도 트렌드를 반영할 수 있는 기술로 개발을 할 수 있는 개발자가 되고 싶었다.
성장을 중요하게 생각했던 나로서는 다른 선택의 여지가 없었다. 결국 퇴사를 결심했고 온라인 부트캠프를 신청하여 본격적으로 Java 백엔드 개발자가 되기로 결심했다.
생각해보면 그때 나의 선택이 괜찮았다고 생각한다. 왜냐하면 그때 Java를 공부하며 여러 경험을 한 덕분에
어떠한 관점에서, 어떠한 방향으로 개발을 해야 하는지에 대해 충분히 생각해볼 수 있었기 때문이다.


개발자에게 기능 개발은 당연하다, 문제는 성능과 확장성, 안정성 그리고 비즈니스 감각이다.

기능 개발에 치중하면 코더밖에 될 수 없다

기능 개발을 잘해야 하는 건 어떻게 보면 당연한 것이다. 제대로 동작되는 기능을 개발할 수 있다는 것에 대해 만족을 하기보단 그 기능이 제대로 동작될 수 있는 인프라와 개발환경 그리고 각각의 상황을 고려하면서 개발하는 과정이 훨씬 더 중요하다. 단순히 기능만 많이 구현할 줄 아는 개발자의 페이스를 유지하기 보단
메모리 현황과 사용자 트래픽, UX 트렌드, 사용자 편의, 개발 도메인의 특성, 비즈니스의 목적 등 여러 방면에서 고민하며 개발을 할 수 있어야 한다.


그렇기 때문에 테스트는 필수이고 운영 환경에 배포하기에 앞서 시뮬레이션과 사전/사후 계획을 세워 돌발상황과 이슈에 대응해야 한다는 인식을 가지며 개발하는 개발자가 진정한 개발자라고 생각한다.

오늘은 어떤 기능이 제대로 구현되는데 그 다음날이 되니 갑자기 구현이 안 된다? 그렇다면 해당 문제가 어디서부터 비롯되었고 그 문제를 해결하기 위해 어떻게 접근을 해야 하는지, 또 그 문제를 해결하기 위해 필요한 기술과 고려해야 할 특이사항들이 있는지를 확인해야 한다.


어제 다르고 오늘 달라질 수 있는 코드를 짠다면 그거야말로 엄청난 낭비가 아니겠는가?
실제로 현업에서 일하다 보면 고객의 요구사항이 지나칠 정도로 많아서 유지보수가 어려운 상황이 종종 발생한다. 그렇기 때문에 단순히 고객의 요구사항을 반영하기 보다 유지보수 측면을 고려해서 개발하는 경우가 무엇보다 중요하다. 간혹 나의 코드를 내가 아닌 다른 사람이 보는 경우가 있는데 그럴 때 어떻게 할 것인가. 하지만 생각보다 코드 스타일이 이 사람 다르고 저 사람 다른 경우가 많아서 유지보수나 사용자 요구사항 반영 작업에 지나칠 정도로 많은 시간이 소요되는 경우가 많았다.


진짜 이 일로 오랫동안 먹고 살 수 있는지를 고민해야

처음에는 높은 연봉이나 당장의 취업을 위해 개발자로 취업하는 것을 목표로 삼고 도전했을지도 모른다. 하지만 시간이 지날수록 과거의 목적과 목표는 희미해지고 자신의 한계와 번아웃을 경험하게 된다. 문제는 그러한 상황에서 어떻게 행동하느냐에 달렸다. 사실 나도 스스로 어떻게 해야 하는지 잘 몰라서 수없이 방황했다.

어느 순간 개발자라는 직종이 나하고 잘 맞나 하는 생각도 종종 했다. 하지만 그때는 잘 몰랐다. 몸이 힘들어서 개발을 하고 싶지 않은건지 아니면 커리어 전환이 필요한 순간이었는지. 생각해보면 아무리 힘들고 어려웠던 순간이었음에도 평일, 주말 구분없이 개발을 하면서 하루도 노트북을 손에서 놓지 않은 날들도 많았다.
근데 그렇게 평일, 주말없이 한 주를 보냈음에도 불구하고 뭔가 억울하거나 불편한 마음은 없었다. 오히려 개발을 하면서 마음이 편했다. 사실 이거 아니면 안 된다는 생각이 더 강해서 그랬는지 몰라도 개발을 하는 그 순간만큼은 집중이 잘됐다. 내가 쓸모있는 사람이라는 생각이 들었고 더 열심히 개발을 잘해서 성장하고 싶은 마음이 있었다. 지금도 마찬가지다. 늘 뭔가를 하기 위해 하루를 보낸다. 특별한 약속이나 일정이 없는 날에는

코딩으로 몸을 풀거나 부족한 지식들을 공부하며 하루를 보낸다. 더도 말고 덜도 말고 최소 몇 시간 이상은 공부를 해야 한다는 마음으로 하루를 보내려고 한다.


흔히 워라밸을 말하고 개인의 삶이 보장된 그런 일을 해야 한다고 얘기한다. 하지만 개발자로 살아가는 입장에서 워라밸은 정말로 쉽지 않다. 워라밸을 하기 위해 개발자가 되고 싶은 사람이 있다면 솔직히 말리고 싶다. 개인 일정 때문에 업무 효율을 저하시키는 그런 식의 일처리가 지속된다면 그건 개발보다는 다른 업무를 하는 게 더 낫지 않나 하는 생각이 든다.

그리고 개발이 단순히 기능을 구현하고 서비스를 제공하는 것으로 끝나는 것이 아니라 24시간 내내 그 서비스를 정상적으로 동작하게 하도록 유지보수와 관리를 철저하게 해야 하기 때문에 항상 루틴을 유지하지 않으면 안 된다고 생각한다. 물론 하루종일 개발에만 집중하기란 불가능하다. 적당한 휴식과 여행도 필요하다.
하지만 적어도 이 일이 나에게 부담스럽거나 불편하게 느껴져서는 안 된다. 자신의 부족한 점을 찾게 되거나 누군가에 의해 알게 된다면 주저하지 말고 그것을 보완해나가기 위해 노력해야 한다.


부족하다고 자책하지 말고 계속 앞으로 나아가야 한다

잘하는 사람들이 너무나 많다. 자기 관리를 잘하는 사람들도 많다. 어떻게 할 거 다하면서 그렇게 개발들을 잘할까? 개발자 인생, 이대로 포기해야 하는 걸까? ‘그래, 나는 안 되니까 저기 뭐 어느 정도 생계는 유지하면서 개발 경력 좀 쌓을 수 있는 그런 회사 찾아서 취업 준비나 해야겠다.’ 뭐 이런 생각을 해야 하는 걸까?
부족하다고 느끼는 건 지극히 긍정적인 신호라고 생각한다. 자신의 역량을 객관적으로 파악할 수 있는 역량이 중요하다. 요즘 같은 시대에 AI를 활용하여 웬만한 건 다 할 수 있는 세상에서 개인의 역량을 파악하기란 정말 쉽지 않기 때문이다. 부족하다고 생각하면 더 노력해야 한다. 반복적인 노력도 중요하지만 자신만의 개성을
살려서 스스로에게 특화된 노력을 할 수 있는 게 정말 중요하다고 생각한다. 똑같이 노력을 하는데 더 잘 될 수 있을까?

이미 실력이 출중한 사람들은 더더욱 노력을 할 것이고 그로 인해 격차는 더 벌어질 것이다. 그렇다면 동일한 전장에서 나의 경쟁력을 더 키우려면 뭔가 전략과 계획이 있어야 한다. 그래야 성장을 기대할 수 있다.
잘하는 사람이 많다고 해서 포기하고 그만둘 게 아니라 날마다 작은 노력들을 하나씩 실천하는 것이다. 보잘 것없는 것이라도 괜찮다. ‘Hello World!’라도 치면서 하루를 시작하는 것이다. 의미 없는 노력이라고 생각할지도 모른다. ‘아무도 관심없고 누구도 쳐다보지 않는데 과연 이런 나의 노력이 언젠가 발현될 날이 올 수 있을까’라고 생각하며 포기와 절망에 빠질 수도 있다. 아니다. 그냥 하면 된다. 당장 돈이 안 되더라도 뭔가를 시도하는 것 자체에 의미가 있다.


누군가에게 보여주기 위해 개발을 시작했는가? 나 같은 경우 진실의 영역에서 건전하고 책임감있는 일을 하고 싶어서 개발자가 되기로 결심한 사람이다. 사람은 거짓말을 하지만 기술은 거짓말을 하지 않기 때문이다. 그런 기술을 보면서 어떻게든 고객들과 사용자들에게 내 마음이 담긴 코드를 통한 기술로 사회에서 꼭 필요한 사람이 되고 싶었다. 그래서 개발자의 길을 걷기로 했고 지금도 걸어가고 있다. 그냥 하면 된다. 복잡하게 생각할 거 없다. 이미 앞서간 사람들 때문에 주저할 필요도 없다. 의지만 잃지말고 매순간 동기부여를 지키기 위해 스스로를 닦달해야 한다. 가진 게 없다면 노력을 많이 하는 거 외에는 달리 생각할 게 없다.


개발자 = 스포츠 선수 = 프로게이머

개발은 스포츠와도 같다. 항상 훈련을 하지 않으면 안 된다. 훈련을 하지 않고 어떻게 개발 역량이 향상될 수 있겠는가? 나의 몸값을 높이려면 그만큼 노력을 해야 한다. 이직을 통한 연봉 인상 그리고 경력을 통해 상승하는 나의 연봉은 결국 내가 어떻게 살아가느냐에 달려 있다. 내가 뭔가를 잘하고 싶다면 그에 대한 대가가 필요하다. 어떠한 대가를 지불하지 않고서 성장에 대한 기대감만 가진다면 실패를 예약하는 것과 다를 게 없다.
개발은 분야가 너무나도 많다. 그리고 요즘은 인프라와 CI/CD까지 어느 정도 알아야 한다. 추가적으로 알아야 할 것도 많지만 여기서 더 얘기하진 않겠다.


다방면에 대한 관심을 가짐과 동시에 역량을 지속적으로 유지해야 하는 상황에서 날마다 무엇을 해야 성장을 할 수 있을지에 대해 매순간 고민해야 한다. 스포츠 선수들은 자신만의 루틴이 있다. 하루를 시작할 때 반드시 루틴을 실천한 다음에 훈련을 하는 선수들도 있다. 개발자도 마찬가지다. 어떠한 루틴이 나에게 맞으며 어떠한 업무 방식이 나 외에 다른 팀원들에게 잘 맞는지에 대해서도 한 번쯤은 고민할 수 있어야 한다.

단순히 개발을 잘하는 것만으로는 한계가 있다. 취업을 해서 회사를 다니든, 프리랜서로 활동을 하든 결국 경쟁력이 있어야 살아남는다. 기본적으로 코딩은 날마다 하는 게 좋다. 예전에 스타크래프트 프로게이머와 관련된 영상을 본 적이 있는데 3일만 쉬어도 완전히 감각을 잃어버려서 게임 실력에 영향을 준다고 했다. 생각해보니 코딩도 그랬다. 개발이란 게 원래 쉬는 텀이 길수록 역량이 떨어진다. 하다 못해 코딩을 안 하더라도

CS 지식을 공부하거나 영상을 통해 개발이나 기타 IT와 관련된 컨텐츠를 접하면서 계속 감각을 유지해야 하는데 그마저도 하지 않는다면 당연히 실력에 영향이 갈 수밖에 없다.

내 지론은 분명하다. 코딩은 평일이든, 주말이든 날마다 해야 한다. 그래야 감각이 유지가 된다. 참고로 타자를 치는 것과는 다르다. 코딩은 코드를 치면서 그 코드가 어떻게 작동이 되며 실제로 내가 작성한 코드가 어떠한 영향을 미칠지에 대해 생각을 하면서 작업하는 복합적인 과정이기 때문이다.

개발자는 스포츠 선수임과 동시에 프로게이머나 마찬가지다. 돈 받고 개발하는 사람들은 모두가 프로다. 그렇지 않은가? 그런데 돈을 받고서도 개발 역량을 제대로 성장시키지 못한다면 그건 프로라고 볼 수 없다. 수많은 삽질과 시행착오를 겪는 것이야말로 개발자에게 있어 필수코스이며 누구나 겪는 것이다.
그게 싫다고 한다면 개발자가 되면 안 된다. 하루, 이틀 심지어는 한 달 많게는 3개월에서 6개월이 지나도 풀리지 않는 문제들이 있는데 그걸 감당할 수 없다면 개발자의 길을 가서는 안 된다. 세상은 빠르게 변하고 새로운 기술들은 계속 나온다. 회사에선 어떻게든 비즈니스의 경쟁력을 높이고 성과를 달성하기 위해 여러가지 시도를 할 것이고 그 역할은 결국 개발자가 맡아서 해야 한다. 만약에 그런 역할이 자기 자신에게 주어진다면 어떻게 할 것인가? 포기할 것인가 아니면 책임감을 가지고 당당하게 시도할 것인가?

수많은 부트캠프에서 쏟아져 나오는 취준 개발자들과의 차별화는 100% 필수다. 실무 감각과 현업 프로세스에 대한 인식 그리고 다양한 영역을 고려할 수 있는 개발 역량을 보유하는 것에 많은 노력을 기울여야 한다고 생각한다. 아키텍처 설계, 문서 작성 능력, 프레젠테이션, 새로운 지식에 대한 관심과 학습 등 여러 방면에서 나름의 멀티 태스킹이 이루어질 때 비로소 개발자로서의 위치와 역량이 어느 정도 보장될 수 있지 않을까?


경력이 전부가 아니다

경력이 쌓이면 일을 더 잘하고 개발을 더 잘할 것 같지만 실상은 그렇지가 않다. 오히려 매너리즘에 빠져서 실력이 제자리에 머무는 경우도 적지 않다. 원래 익숙해지다 보면 성장보다는 유지하려는 경향이 더 강해진다. 그래서 개발자는 경력의 역설에 빠지면 안 된다. 기술적 이슈는 날마다 새롭게 느껴진다.

기존에 경험했던 이슈들은 쉽게 해결하지만 처음 접하는 이슈들은 경력자들에게 물어봐도 모른다는 답변을 받는다. 당연하다. 그런 이슈를 겪어본 적이 없으니까. 그렇다면 내 스스로 찾아야 한다. 난 여기서 말해주고 싶다. 누구도 겪어보지 못한 이슈를 접하고 그것을 해결하는 게 부담스럽다고 한다면 개발자를 하면 안 된다.
과거 나는 개발은 아니었지만 솔루션 엔지니어로 일하면서 한 번도 겪어보지 못한 이슈를 해결해야 하는 상황과 마주했다. 지금 생각해보면 그때 나는 성숙하지 못했다. 오히려 더 적극적으로 문제를 해결하기 위해 노력해야 했는데 그러질 못했다. 결국 팀원들의 도움을 받으면서 문제를 해결할 수 있었지만 그때의 나를 되돌아볼 때마다 깊이 반성한다. 매사 책임을 회피하지 않고 문제를 해결하기 위한 기본적인 규칙과 태도, 마음가짐을 지키는 것이 얼마나 중요한지를 깨닫게 된 경험이었다.

실무 현장에선 어떠한 일도 발생할 수 있다. 기술적 이슈뿐만 아니라 팀원 이슈, 인성 이슈, 일정 이슈 등 다양한 상황과 마주할 수 있다. 신기하게도 경력은 늘어나는데 사람 때문에 힘들다고 느껴지는 건 좀처럼 보완이 되질 않았다. 그때마다 내 스스로 되물었다. 내가 왜 이 일을 선택했고 지금까지도 이 일을 하고 있는지에 대해서 말이다. 어쩔 수 없다. 사람마다 성격이 다르고 성장배경도 다른데 모두가 일관된 성격과 성향을 가지고 일하는 조직이 어디있겠는가.


인정을 해야 한다. 군말없이 담담하게 일하면서 성장과 전진만을 생각하며 하루를 살아가는 것에 집중해야 한다. 나의 경력이 쌓이는 만큼 역량이 향상되고 노하우도 많아지겠지만 그만큼 책임감이 더 커지고 더 높은 수준으로 일해야 한다는 점을 잊지 말아야 한다.


이제는 거의 모든 부분을 고려해서 개발을 해야 하는 시대

결국 개발은 나 혼자 하는 게 아닌 여러 사람들과 같이 하는 것이다. 그리고 내가 작성한 코드를 통해 수많은 서비스들이 고객들에게 제공된다. 요즘이야 AI를 활용하여 개발을 하지만 내가 개발을 할 그 당시엔 ChatGPT가 없었다.

더군다나 내가 경험했던 도메인 자체가 워낙 전문적이고 특화된 곳이다 보니 구글링을 해도 문제가 쉽게 해결되지 않았다. 구글링도, AI도 없다면 어떻게 개발을 할 것인가? 아마 이걸 염두에 두고 개발을 하는 개발자는 거의 없지 않을까? 그럼 뭘 가지고 개발을 할 수 있었을까? 기술문서나 공식 사이트를 참고하거나 이전 선배들이 개발한 코드들을 참고해서 개발하는 게 전부였다. 하지만 그렇다고 해도 한계가 있었다. 고객 사이트의 특성과 요구사항, DB/인프라 측면을 고려했을 때 아예 개발 로직을 새로 구현해야 하는 경우도 많았다.
매일 밤늦게까지 고민하고 한숨 쉬면서 개발을 하고 또 개발을 했지만 성과는 미미한 수준에 그쳤을 때의 그 허탈감은 이루 말할 수 없었다.

하지만 아이러니하게도 그러한 과정 속에서 성과를 달성했던 경험 그리고 고객에게 감사하다는 말을 들을 때의 그 안정감 덕분에 지금까지도 개발을 하는 게 아닌가 싶다. 개발은 분명 매력이 있다. 코드를 통해 불편함을 해결하고 삶의 질을 높여준다는 측면에 있어 선한 영향력을 줄 수 있는 훌륭한 행위라고 생각한다. AI와 AI Agent가 활개를 치고 있는 요즘, 더 쉽게 개발을 할 수 있게 되었지만 역으로 개발 역량이 더 중요해졌다고 생각한다. 이제는 개발 외에 DB, 프론트엔드, 인프라, 클라우드, AI, 고객, 비즈니스, 트렌드 등
개발과 연관된 모든 것들을 다양하게 공부하고 학습하지 않으면 경쟁력 있는 개발자로 살아가기 힘든 시대가 되었다.


하지만 반대로 생각해보면 그만큼 개발에 진심이고 성과를 내고 싶은 욕구가 간절한 사람들에게 있어 최적의 시대가 아닐까 하는 생각이 든다. 아직도 실력은 부족하지만 개발에 대한 나의 의지와 일상 루틴을 지속적으로 유지하고 싶은 마음은 사그라들지 않았다. 숨쉬는 것만큼 개발을 하는 것에 있어 익숙함과 친숙함을 지키기 위해 오늘도, 내일도 달리고 또 달릴 것이다. 해 뜨는 일상이든 비 오는 일상이든 웃고 떠들 수 있는 자유는 돈이 많아서가 아니라 내가 하고 싶은 뭔가가 있기 때문에 가능한 것이 아닐까?


BeWrite님 글 더보러 가기 : https://brunch.co.kr/@codesche

Unpublish ON
previous arrow
next arrow