회사에서 보낸 첫 주간 회고
8월 24일, 첫 출근을 보낸 뒤 벌써 열흘 가까이 흘렀다. 더 기억이 지워지기 전에 첫 주간에 대한 기록을 남겨두고자 한다.
회사 업무
내가 다니는 L사는 의료 인공지능 기술을 연구하고 또 개발하는 업체이다. 회사에서는 의학의 여러 세부 분야에 대해 인공지능 기술을 접목하려고 하는데, 그 중에서 내가 담당하는 업무는 "병리학자(pathologist)들이 의료 데이터셋에 어노테이션을 작성할 수 있는 플랫폼을 개발하는 것"이다.
어노테이션 플랫폼을 개발하기 위한 기술로써, 프론트엔드에서는 React, Redux, Redux-saga, 그리고 디자인 시스템으로써 Material-UI를 사용한다. 다만 우리 팀에서는 신규로 개발하는 플랫폼에서는 Next.js와 Recoil을 사용하려고 하는 것 같다.
지금부터 회사 찬양을 시작하겠습니다
지금껏 대학원에서 연구 경험만 있었던 나에게 회사는 너무나도 신세계와 같았다:
- 자율 출퇴근제 및 자유로운 재택 근무 (물론 나는 신입 개발자인 관계로 정시 출근을 하고 있다)
- 인당 1만원의 점심 및 저녁 식대 지원
- 라운지 내 간식 및 커피 무제한
- 데스크테리어 30만원 지원 (아직 사용하지 않음)
- 그리고 나를 존중하고 배려해주는 팀원들과 팀장님 (다만 나 정도면 대학원 사람들에게 꽤나 많은 배려를 받았다고 생각한다)
내게 추천서를 작성해 준 형에게 실제로 했던 이야기 중에는 "회사가 이렇게 퍼주면 대체 돈은 어떻게 벌어요?" 등이 있었다. 대학원과 비교했을 때, 회사에서 내게 지원해주는 물질적인 복지는 (연봉에 있어 아쉬움을 제외한다면) 정말 놀라움의 연속이었다.
회사에서 느낀 점
회사에서 팀장님 그리고 팀원들과 이야기를 나누면서 느낀 점, 그리고 업무를 진행하면서 느낀 점을 작성하고자 한다.
팀장님이 기다리지 않게 하기
친절하신 팀장님께서는 내게 넉넉한 업무 데드라인을 제시하시고, 여유를 갖고 일하도록 배려해주신다. 그럼에도 불구하고 어느 정도는 서두르는 것이 좋다고 생각한다. 내 업무 일정으로 인해서 팀장님이 기다려야 하는 참사를 막기 위함이다 — 나는 이 것을 "blocked by" 상태라고 표현한다.
서두르는 것이 무지성 무논리 스파게티 코드
를 짜라는 것을 의미하지는 않는다. 정해진 데드라인이 눈 앞까지 다가오기 전에, 미리미리 할 수 있는 일을 끝내두어야 한다. 그리고 팀장님께서 검토할 여유가 생겼을 때 바로 확인할 수 있도록 준비해주는 것이 좋다고 생각했다.
팀원과 논의 자주 하기
팀원들은 실제로 나와 협업하며 코드를 작성하고, 리뷰하거나 리뷰받는 입장에 있다. 내가 생각했던 것보다 그들과 더 자주 논의하고, 서로간의 생각을 동기화하는 시간을 가지는 것이 매우 중요하다고 느꼈다.
나는 회사에서 협업하면서 "같은 프론트엔드 개발자인데도 서로 간에 코드 작성 방법이, 코드 리뷰에서 중요하게 생각하는 것이 이렇게나 다르구나" 를 처음 느꼈다. 아마 지금까지 제대로 협업해본 적이 없어서 그런 것일지도 모르겠다.
새로운 라이브러리에 친숙해지기
회사에 와서 더더욱 느끼는 건데, 정말이지 새로운 라이브러리 써볼 기회도 시간도 점점 줄어들고 있음을 느낀다. 아예 처음부터 개발 프로젝트를 시작하는 것이 아니라면, 기존 코드베이스를 바탕으로 개발을 진행할 것이다. 완전히 처음부터 리팩토링을 하지 않는 이상 기존 코드베이스에서 사용하던 라이브러리에 종속되는 것을 피할 수 없고, 새로운 라이브러리를 접할 기회는 더더욱 낮아진다.
따라서 하루가 멀다하고 등장하는 새로운 라이브러리를 활용하는데 두려움을 가지지 말아야 한다. 즉, 새로운 라이브러리를 끊임없이 공부하고, 활용하고자 하는 습관을 기를 필요가 있다. 새로운 라이브러리를 공부하기 위한 방법은 여러 가지가 있겠다. 나는 최근에 시니어 프론트엔드 개발자 분들께서 개최하시는 사내 세미나를 듣거나, 다른 팀 프론트엔드 개발자들과의 미팅을 통해 새로운 지식을 접하고자 노력(?)하고 있다 — 다만 약간 소극적 노력인 것 같기는 하다... 내가 다른 개발자들에게 새로운 지식을 전파할 수 있을 정도의 적극성을 가질 필요가 있다.
남이 짠 코드 "잘" 이해하기
정말, 정말 빡세다! 남이 짠 코드에는 여러 가지 범주가 있을 것 같다 – 예컨대, 1년도 더 전에 작성되어 담당자가 퇴사한 코드라던지, 특정한 프론트엔드 라이브러리에 대한 이해가 부족한 상태에서 작성된 코드라던지, 무지성
으로 고민 없이 작성된 코드라던지... 하나의 개발 프로젝트에도 정말 다양한 사연이 담겨있을 것만 같은 코드가 혼재되어 있다.
특히 학부생 시절, 그리고 대학원 석사 과정에서 작성한 코드는 대체로 1인 개발 프로젝트이거나 코드베이스를 처음부터 쌓아올리는 종류의 프로젝트였던 만큼 "이미 작성된 코드를 이해하는 것"은 예상하지 못했던 난관 중 하나였다.
이 것 때문에 회사에서 내게 그만큼의 돈을 주고 일을 시키는 건가 싶은 생각이 처음으로 들었다. 특히, 특정한 기능을 구현한 코드를 이해하는 데 반나절이 걸렸을 때는 정말 고통스러웠다. 그럼에도 불구하고 먹고 살려면 해야지 별 수 있나 싶기도 하다...
맺음말
결론적으로 나는 회사에 상당히 만족하고 있으며, "신입 개발자로서의 관점"에서 느낀 점을 이것 저것 끄적여보았다. 위에서 순서 없이 작성한 내용을 중요도에 따라 다시 한 번 정리하자면 다음과 같다:
- 회사 업무에 투입되기 위해서 복잡한 코드베이스를 빠르고 정확하게 이해할 수 있는 능력이 굉장히 중요하다.
- 협업을 위해 팀원과 의사소통하는 능력이 중요하며, 주기적으로 팀원과 생각을 동기화할 필요가 있다.
- 팀장이 제시한 데드라인보다 더 여유있게 일정을 끝마치는 것이 중요하다.
- 이러한 와중에도 새로운 라이브러리나 프레임워크를 공부하고 익숙해지려는
노오오오력
을 기울여야 한다.
와... 내가 읽어도 정말 현기증 난다 😂