수많은 코드
처음 회사코드를 보기 전까지, 많이 긴장했었다. 인턴 경험이 없었기때문에 이게 정말 바로 실전이라는 생각에 내가 지금까지 해온 개발이 맞는지 검증을 실무에 바로 적용해야하는 상황이었다. 프론트엔드로 입사했지만, 그냥 컴퓨터 과학을 파고드는 걸 좋아했다. 그래서 개발 업무 외에도 CTO님과 하루를 통째로 잡아 네트워크 포트 현황을 점검하고, 회사에서 쓰지만 밖에서는 생소할 수 있는 라이브러리 응용법까지 배우는 기회를 얻을 수 있었다.
우리 회사는 논코딩 툴을 만드는 회사다. 좀 더 정확히 말하면, AI를 잘 모르는 사람도 논코딩 방식으로 쉽게 모델을 학습시키고, 이를 실제로 적용하고 활용할 수 있게 하는 것이 목표다. 그래서 내가 평소에 관심 있던 도메인과 꽤 잘 맞아떨어졌다는 느낌이 들었다. 난 일단 게시판 형태의 웹도 좋지만 툴 기반의 웹을 만들때 더 구현이 복잡해지는 것에 재미를 느꼈다. 학부때도 논코딩 툴을 만들며 개인프로젝트로 많이 어필했었다.
사실 이런 부분은 내가 처음부터 작성한 코드에 기능을 추가하는 것이라면, 로직을 잘 알고 있어서 비교적 쉽게 구현할 수 있다. 하지만 사내 코드는 상황이 많이 달랐다. 여러 사람의 손을 거쳐 만들어진 코드라 구조도 복잡하고, 이해하는 데 시간이 더 걸릴 것 같았다. 다행히 평소에 오픈소스 코드를 읽는 경험이 몇 번 있어서 자신은 있었지만, 실제로 코드를 들여다보니 통일된 컨벤션 없이 작성된 부분이 많아 생각보다 쉽지 않았다.
내 것으로 만드는 법
입사 첫 주에 목표를 하나 세웠는데, 사내 코드 중 data management
관련된 부분의 흐름을 수기로 정리해보고, 그 과정에서 발견되는 버그들을 직접 해결해보는 것이었다. 개발 실력이 가장 빠르게 성장하는 순간은 오류를 해결하는 경험이라고 생각했기 때문에, 그런 과정을 통해 스스로 성장하고자 했다. 그리고 무엇보다, 내가 다니는 회사만큼은 프론트엔드 코드를 직접 보고 있지 않더라도, 누가 물으면 바로 로직을 설명해줄 수 있을 정도로 이해하고 싶었다.
현재 디렉토리 구조를 시작으로, 전역 변수들의 연관 관계, 각 이벤트가 발생하는 트리거와 그 흐름까지 모두 수기로 정리하며 파악하고자 했다. 이 과정에서 개선할 수 있을 만한 부분들도 함께 기록하며, 전체적인 구조를 더 깊이 이해하려는 것이 목표였다. 이후 실제 서비스에 들어가 다양한 QA를 진행하면서, ‘완벽한 서비스는 없다’는 전제 아래 어떻게든 버그를 찾아보려 노력했고, 그 결과 5개 정도의 버그를 발견할 수 있었다. 발견한 버그들은 실제 DEV 코드에 직접 적용하지 않고, 복사본을 만들어 모두 수정해보며 해결 과정을 연습했다. 추가로 레이아웃의 경우에는 모두 다른 색을 주고 각각의 컴포넌트 종속관계를 파악해보며 빠르게 적응할 수 있었다.
레거시를 두려워하지 말자
나는 사람이 작성한 코드를 무서워하지 않는다. 시간만 충분하다면 어떤 코드든 읽고 이해할 수 있다고 생각하고 있고, 시간이 부족하다면 밤을 새워서라도 해내면 된다. 회사의 코드 역시 대부분 React로 작성되어 있었지만, 일부는 PHP나 C++로 구현된 부분도 있었다. 언어나 스타일이 다르더라도 결국 사람이 만든 코드이기에, 충분한 시간과 의지만 있다면 반드시 파악할 수 있다고 생각한다. 그리고 이후 부터는 내 스타일이 덮어져, 다른 사람이 이런 반복된 작업을 하지 않도록 하기위해, 유지보수, 확장성을 고려한 개선 작업을 이제 진행하면 된다.
실제 모듈화를 잘 못했을때는 내가 가장 좋아했던 내 개인 프로젝트도 한 파일에 1000줄이 넘었고, 코드를 짜는 다음날 그 코드가 레거시가 되는 상황이었다. 그리고 모듈화를 이후 잘 하고 재사용성을 고려한 코드라도 언젠가는 레거시가 될 것이다.
그렇기 때문에 나는 레거시를 일종의 유통기한이라 생각한다. 내 코드 역시 언젠가는 다른 컨벤션이나 구조에 의해 덮이게 될 것이고, 그것은 너무나 당연한 일이라고 생각한다. 중요한 것은 지금 이 시점에서 가장 이해하기 쉽고, 유지보수가 용이하며, 다음 사람이 이어받기 편한 코드를 작성하는 것이다. 그렇게 쌓인 코드가 누군가에게는 또 하나의 레거시가 되겠지만, 좋은 레거시는 다음 사람의 시간을 아껴주는 코드가 되는 것이라고 생각한다.
첫 주에서 회고 마무리
회사에서는보통 2달 정도를 적응기로 보지만, 나는 일주일 만에 끝내고 싶었다. 그래서 첫 주 금요일 회고 시간에 위 과정을 정리해 공유했다. 다행히 동료들도 긍정적으로 봐준 것 같았다. 내가 이 회사에서 좋다고 느낀 점 중 하나는, 기술을 도입할 때 분명한 이유만 있다면 개발자에게 충분한 자유를 준다는 것이다. 덕분에 나는 초반부터 단순히 주어진 업무를 수행하는 것을 넘어서, 코드의 구조를 이해하고, 개선점을 찾고, 필요한 기술을 제안하며 더 능동적으로 일할 수 있었다. 이런 환경은 개발자로서의 성장을 더욱 가속화시켜줬고, 동시에 팀과 서비스에 더 깊이 몰입할 수 있는 계기가 되었다.