본문 바로가기

일기

2023-10-06 회고록

머릿말

2022.02부터 2022.05까지 짧은 3개월의 개발과, 중간 공부하는 시간을 지나 2022년 11월부터 현재까지 총 1년 조금 지나는 시간동안 개발세계에 발을 담고 있습니다. 돌이켜 보면 지금까지 우여곡절 끝에 마침내 제가 가야할 개발 방향이 무엇인지 조금이나마 알 것 같습니다.

마음에 확신이 선 지금 블로그 오픈 이래 한 번도 작성하지 않았던 회고록을 작성하기에 가장 최적의 시기라 판단하여 이렇게 글로나마 남겨 봅니다. 제 머릿속에 있는 모든 생각이 완벽하게 정리가 된 것이 아니기에 약간의 횡설수설함이 느껴질 수 있겠지만 현재 저의 생각을 기록하는데 의의를 두도록 하겠습니다.




2022 ~ 2023.현재

2022.02 거의 학부 졸업과 동시에 비교적 빠르게 취업을 했습니다. 나름 학교에서는 성적도 좋고, 사이드 프로젝트 경험도 많았기 때문에 자신만의 개발 철학도 확고했습니다. 신입 치고는 꽤 높은 연봉과 까다로운 입사 전형 절차까지, 기고만장했던 그 당시의 저로서는 입사하지 않을 이유가 없었습니다. 그렇게 자신감에 가득 찬 상태로 저의 첫 번째 Front-End 개발 커리어는 시작됐습니다.

기쁨도 잠시, 저는 실무 코드를 처음 접하고 많은 충격에 휩싸였습니다.

처음 입사했던 회사는 Vue.js를 활용하여 모니터링 솔루션을 개발하는 솔루션 회사였습니다. 솔루션 회사인 만큼 깊은 JavaScript 이해도가 필요했지요. 기본적인 JavaScript의 이해도 뿐만 아니라, 해당 회사에서 사용하고 있는 몇몇가지 라이브러리에 대한 학습도 필요 했습니다. 무엇보다도 회사 제품에 대한 충분한 이해도가 절실했지요. 그 당시의 저로서는 이 중에서 무엇하나 확실히 인지하고 있는 것이 어느것도 없었습니다. 약간의 자기방어를 하자면 취업준비를 할 당시 취업을 하려면 React나 Vue 혹은 Spring을 활용한 사이드 프로젝트 경험이 필요했고, 한 가지 프로그래밍 언어를 사용한 코딩테스트 문제풀이 위주로 공부를 했으니 회사에 적응하기 어려운 환경이기도 합니다. 그 당시에도 이러한 것들을 인정하고 받아들이면서 더 노력했으면 좋았을 텐데 말이지요.

하지만 저는 치기어린 마음에 제 자신의 문제를 직면하고 극복하기 위해 노력하기 보다는 회사의 제품 설계 방식에 대한 불만이 가득했습니다. 저에게 내려진 기능구현 업무에 대한 요구사항이 이해되지 않았고, 자꾸만 다른 방향으로 개발을 진행했습니다. 지금 생각해보면 참 당연합니다. 제품에 대한 이해도 없이 기능을 구현하는 것은 불가능에 가깝습니다. 제가 속한 과 같은 방향을 바라보고 나아가야 하는데 저 혼자서만 샛길로 빠져나가는 셈이지요.

결국 날이 갈수록 스스로 자괴감에 빠져들었고 개발이 저와 맞지 않는다 판단하여 퇴사를 결정하게 됐습니다.


퇴사 이후, 무엇이 문제인지 냉정하게 판단하기 위해 참 많은 고뇌에 빠졌었습니다. 개발이 맞지 않는 것 같아 그 좋은 조건을 내팽겨치고 나왔는데 우습게도 다시 개발을 하고 싶더군요. 그러나 같은 잘못을 반복하고 싶기 않았기에 스스로 부족하다 여겼던 JavaScript에 대해 학습하며 시간을 보냈습니다. 그리고 이번엔 Vue와 JavaScript가 아닌 React와 TypeScript를 활용하기로 했습니다.

블로그에도 적었지만 TypeScript를 선택한 이유는 단순했습니다. 첫 시작은 주변, 그리고 많은 곳에서 TypeScript를 사용하기에 공부를 시작했지요. 하지만 이 언어를 공부할수록 참으로 매력적이지 않을 수 없었습니다. 전 회사에서는 JavaScript를 활용했는데, 정확히 무슨 이유인지는 모르겠지만 Type Validation 로직이 굉장히 많았거든요. 근데 이러한 Validation은 사용자를 위한 것이 아닌 개발자 실수를 막기 위한 Validation 이었습니다. TypeScript를 사용하니 개발자의 휴먼에러는 당연히 줄어들더군요. 반복적이고 복잡한 Type Valiation이 런타임에 체크가 되니 이보다 만족스럽지 않을 수 없었습니다.

Vue에서 React로 넘어간 이유 또한 단순했습니다. Vue를 사용할 당시, 생각 외로 Vue Framework자체가 하는 역할이 적다는 판단이 들었습니다. 또한 Framework스럽게 Vue만의 문법이 꽤 엄격하다는 느낌도 들었지요. 대표적으로 React Hook에 비해 Lifecycle이 너무 많다고 느꼇습니다. 이런 무수한 Lifecycle을 주제로 팀 개발 회의 시간에 거쳐 내린 결론은 mounted, updated를 위주로 사용하자 였습니다. 또한 특정 기능을 구현하다가 구글링이 필요한 순간 검색하면 나오는 결과들은 거의 7:3비율로 React더군요. Vue의 점유율이 너무 적다는 생각이 들었습니다.

글을 적다보니 Vue가 안좋다는 느낌으로 적은 것이 없지않아 있는데 그런 의미는 절대 아닙니다. React를 공부해 보니 개인적으로 러닝커브는 Vue가 더 쉬운 느낌이더군요.

아무튼 이러한 우여곡절 끝에 지금 현재의 회사로 입사하게 됐습니다. 매번 그렇듯 이유는 단순했습니다. 이번엔 솔루션이 아닌 서비스를 개발하고 싶었습니다. 기술 스택 또한 저와 찰떡이었지요.

아. 물론 React를 활용한 Front-End 개발자로 뽑혔는데 우연찮게 그 외에도 다양한 기술을 활용하여 다채로운 것들을 만들어 내고 있습니다.

현재 처음 회사에 입사하고서는 전과 같은 실수를 반복하지 않기 위해, 바로 코드를 보는 것이 아닌 회사의 프로세스를 익히는데 집중했습니다. 그리고 회사에서 내어준 첫 업무가 주어졌습니다. 업무내용 자체는 단순했습니다. 업무는 기존의 오래된 인사시스템을 React와 Node를 활용하여 마이그레이션을 하는 것이었습니다. 사실 좀 부담됐습니다. 인사시스템에는 정말 많은 기능들이 있습니다. 현 회사에 대한 모든 조직 및 조직원에 대한 정보. 그리고 높은 분들이 사용하는 인사카드 및 실적 조회. 그리고 검색기능 및 사내 쪽지 보내기 기능. 그리고 당연하게도 조직개편 및 인사발령에 따른 자동화를 고려하여 구현해야 했으며 사내 직원 전용 App에서 볼 수 있도록 반응형 작업까지... 첫 엄무 치고는 부담이 이만저만이 아니었습니다.

물론 많은 시니어 분들의 도움이 있었기에 성공적으로 프로젝트가 마무리 될 수 있었지만 기존에 잘 돌아가던 시스템을 마이그레이션 한다는 것은 저에게 큰 부담이 됐습니다. 또한 사내 직원들 사이에서 가장 사용률 높은 시스템 TOP3 안에도 뽑히는 시스템이기도 했구요.

사실 지금와서 다시 이 프로젝트에 참가하겠냐고 하면 좀 자신이 없습니다. 하지만 이런 경험을 통해 많이 배우고 많은 것을 느끼기도 했기에 뿌듯하기도 합니다. 그리고 전 회사에서 그러한 경험을 했다보니, 저에겐 참 애정이 가는 시스템이면서 동시에 많은 성장을 할 수 있게 좋은 경험을 준 프로젝트가 아닐까 싶기도 하구요.


프로젝트가 끝나고 운영 및 유지보수 단계에 들어서니 좀 여유로워 졌습니다. 진행할 때 당시에는 야근도 좀 하고 그랬는데, 유지보수 단계에 들어서니 좀 숨이 트이더군요. 그리고 동시에 학습 시스템 및 회원 관리쪽 유지보수도 덩달아 진행했습니다. 물론 이러한 시스템 또한 레거시 시스템입니다. 좀 오래된 코드이기도 하고 여러 사람의 손을 탄 코드이다 보니 보기 좀 난해한 것도 없지않아 있지만 재밌더군요. 그리고 중간중간에 들어오는 개발 업무도 매우 재밌고 성공적이게 잘 진행했습니다.

회사에서 돌아와 좀 아쉬운 감도 없지않아 있어 개인 프로젝트도 여럿 진행하며 꾸준히 발전하고 있다는 느낌이 듭니다. 어찌보면 전 회사보다는 처우가 좀 아쉽지만 올바른 길로 가고 있다는 생각도 여럿 들기도 하구요. 그러다 보니 2023년도 거의 막바지에 이르더군요...




참 다양한 종류의 개발자를 많이 만났습니다. 레거시 시스템을 유지보수하다 보면 참 다양한 느낌을 많이 받습니다. 저는 사실 말로는 많이 들었지 실제로 겪고 느낀건 처음이기도 하구요. 많은 개발자가 그러지요. 프로그래밍은 개인마다 취향이나 스타일이 다르다고. 실제로 다양한 언어, 그리고 다양한 사람이 작업한 내용을 보면 다채로운 것들이 참 많습니다. 정말 오래된 코드들을 보면 지금처럼 인터넷 검색이 많이 발달하지 않은 시기에는 정말 구현하기 어렵겠다 싶은 것들도 훌륭하게 구현한 흔적들이 참 많습니다.

이에 반해서 새로 들어오시는 분들이나 제 동기 분들 중에서는 곧죽어도 레거시는 못하겠다 하시는 분들도 많습니다. 그래서 들어오자마자 모든 레거시 시스템을 React나 Node를 활용하여 마이그레이션 하자는 분들도 계시구요.

이런 말들을 듣다 보면 전 회사에서의 제 모습이 떠오르곤 합니다. 그리고 지금 현재 스스로 드는 생각은 훌륭한 퍼포먼스와 유연하고 느슨한 설계가 필요한 시스템의 경우 React가 정말 좋은 결과를 줄 수도 있겠다 싶지만, 사내에서 사용하는 백오피스의 경우 React를 활용하면 좀 난감할 것 같다는 생각도 많이 듭니다. 추가적으로 제작해야 하는 페이지에 대한 요구사항은 끊임없이 오고, 시스템 내부적으로 설계에 약간의 변화를 주어야 할 때.. 이런 다양한 상황을 고려하면 마냥 React, Vue, Angular와 같은 오픈소스가 좋은 것은 아니라는 생각마저도 듭니다.

그리고 무엇보다도 이러한 요청은 빠르게 수행이 돼야 하는데, jQuery를 활용하여 한 장의 페이지를 찍어내는 것이 때로는 편할 때도 있기도 하구요. React로 설계하고 무언가 만들어 내기엔 설계에 투자하는 시간과 프로젝트 초기 셋팅에 들어가는 시간이 너무나도 오래 걸리는 것 같기도 합니다. 물론 저도 숙련도로 보나 제가 개발에 더 자신이 있는 것은 React이기도 하지만요...

그리고 실제로도 React를 더 사랑하기도 합니다.

이렇게 돌이켜 보니 과거의 제 자신이 얼마나 무지했는지 깨닫게 되는군요. 집에서 혼자 개인 프로젝트 및 외주를 진행하면서 좋은 개발이란 무엇인가에 대해 항상 생각합니다. 어떻게 개발해야 앞서 제가 말씀드린 선배님들처럼 지속 가능한 시스템이 탄생할 수 있을지, 그리고 어떻게 개발해야 훗날 이어서 개발할 후배들이 쉽고 간단하게 읽을 수 있을지. 항상 고민을 해보지만 아직까지도 잘 모르겠습니다. 저는 시스템의 생명주기가 짧다고 생각하는 사람 중 한명인데, 이러한 깊은 고민 끝에 탄생한 시스템이 수명이 긴 시스템이 아닐런지요. 참.. 어렵네요.


---

클린코드. 참 가슴 뜨거워지는 단어 같습니다. 저는 이런 클린코드, 유연하고 느슨한 아키텍쳐로 저만의 시스템을 하나 개발하는 것이 목표입니다. 여태까지 참 다사다난 했네요. 그리고 길진 않지만 다양한 경험을 많이 했고 이를 토대로 성장도 한 것 같습니다. 이렇게 꾸준히 성장하여 언젠가는 제 이름을 딴 시스템이 하나 탄생하지 않을까요. 항상 느끼는 거지만 글을 어떻게 마무리해야 잘 마무리 하는 것인지 잘 모르겠네요.

늘 그렇듯 갑자기 마무리 하도록 하겠습니다.

정말 강한 개발자가 되기를 기원하며...

'일기' 카테고리의 다른 글

성장 가능성과 지속 가능성  (0) 2024.11.09
그놈의 TypeScript  (0) 2022.10.08
실행에 옮기지 못했을 뿐이다.  (0) 2022.07.27
왜 그렇게 다들 블로그에 집착하는가  (0) 2022.07.07