정신없이 상반기를 지나와 가을이 된 것 같다(아직 많이 덥지만)
요즘 생각할 일이 많았는데 어떤 일이 있었는지 글을 쓰면서 회고를 해봐야겠다
1. 새로운 플젝 진행
회사에서는 해외 진출을 꿈꾸고 있어서 기존 플젝을 해외 버전으로 만드는 과정이 필요했는데 많은 투자를 하기에는 리스크가 있어서
나 + 인턴 한명을 투입시켜 프로토 타입을 만드는 작업에 들어가게 했다
기존에는 만들어진 플젝을 유지보수 하는 측면이 더 강했는데
이번에는 짧은 기간에 아예 처음부터 만들어야 한다는 생각에 부담이 있었던 것 같다
그리고 기존 스택과 다른 기술 스택을 선택해 뭔가 도와줄 사람이 없다는 생각도 있었던 것 같다(특정 파이썬 라이브러리를 써야해서 fast api로 작업을 진행함)
때문에 부실한 기획 + 부실한 기술력으로 얼레벌레 일단 1차 마무리 단계에 있긴 하지만
솔직히 프로젝트를 진행하면서 현타가 많이 오긴 했다
물론 내가 실력이 있었다면 여유있게 처리했겠지만...
내가 좀 더 다른 사람을 챙길 여력이 있었다면 이렇게 주먹구구식으로 일하지는 않았겠지만...
해야할 것은 많은데 하나 조차도 버겁게 처리하는 내 모습을 보면서 현타가 오기도 했다
팀장님께서는 긍정적으로 생각하면
언제까지 막내로 있을 수는 없으니 누군가를 이끌면서 플젝한 경험은 도움이 될 것이라고 하셨지만..(물론 인턴분께서 많은 부분을 해주셔서 오히려 도움을 많이 받은 느낌이 들지만)
기술적으로는 이번 플젝은 하면서 구글링 등으로 해결하기는 어려운 문제들이 많이 일어났다
라이브러리 버전 문제 때문에 내부 구현을 봐야 한다거나
혹은 에러 스택이 세세하지 않아서 어떤 문제가 있는지 라이브러리 내부까지 디버깅을 하면서 알아내야 한다거나
기존처럼 에러 복붙/구글링을 하고 있으니 팀장님께서는 그런 식으로는 어떤 문제도 해결할 수 없을 것이고 결국 라이브러리 아래까지 디버깅을 하거나 공식문서를 확인하는 것만이 문제 해결의 답이 될 것이라고 했다
디버깅을 위해서 해당 문제 상황을 재현한 모듈을 만들고 디버깅을 하면서
문제를 찾을 수 있긴 했다(다행히 해당 에러는 rabbitmq 관련해서 이미 알고 있는 에러였는데 스택트레이스로 찍었을 때 나오지는 않았고 특정 라이브러리의 Future가 해당 exception이 터지면서 끝나는 것을 확인할 수 있었다)
얼마나 내가 때려맞추기식 개발을 하고 있었는지 알 수 있었고 앞으로 문제 해결을 위해 어떤 식으로 디버깅 등을 해야할지 알 수 있었다
그리고 해결 했을 때 단순히 해결했다고 끝나는 것이 아니라 그 원인과 결과를 정확히 파악해야 한다는 것도...
2. 새 팀장님의 등장(과 나의 기술적 밑천이 드러남)
상반기 일을 하면서 가장 큰 변화는 팀장님이 바뀌었다는 것이다
개발팀에서 사람이 나가는 일도 흔하지 않은 일이었는데 2년 가깝게 나와 함께 일을 했던 팀장님이 나가신 것은 조금 큰 일이긴 했다(물론 열정이 있으신 분이기 때문에 언제든 떠나실 것이라 생각해서 별로 놀라지는 않음)
새 팀장님은 우리 회사의 모든 코드를 확인하셨고
내리신 결론은 회사에서 사용하는 기술/어플리케이션이 우리의 요구사항에 비해 많고,
우리의 실력에 비해 너무 깊이 있는 기술들이 도입돼있다고 하셨다
(가령 tcp 통신에 대해서 잘 모르지만 grpc가 도입돼있다거나 멀티스레딩도 잘 모르는데 대부분의 스택이 webflux로 구성돼있다거나 등등)
그리고 회사의 코드들이 너무 구현에만 치중 돼있다는 것도...
특히 내 코드에서는 조급함이 보였는지 따로 부르셔서 혹시 회사에서 일정의 압박이 있었는지 등에 대해서 물어보셨다
물론 그렇다고 그게 좋은 개발을 못하는 이유가 되지 않으며 개발에 대한 고민이 부족한 것이 원인이라고 하셨다
그리고 왜 회사에서 열심히 일하는지에 대해서도 한번쯤은 다 내려놓고 고민이 필요한 부분이라고 했다...
이런 식으로 개발을 하면 회사는 좋아할지 몰라도 나에게는 어떤 도움도 되지 않을 것이라 하셨는데 솔직히 맞는 말씀 같아서 고민을 많이 했다
(전 팀장님도 같은 결로 말씀하신 적이 있음)
2년 동안 크고 작은 사고들이 일어났고 그 사고를 처리하기에 급급했기 때문에,
그런 사고들이 일어나지 않게 하기 위해 기존 로직에 추가적으로 많은 구현을 해야했다고 변명이라도 해보고 싶었지만
그것이 오히려 다른 사람들이 코드를 읽기 어렵게 만들고 안전하지 못한 코드를 만들 수 있다는 것도 사실이기 때문에
앞으로는 고민을 많이 하고 개발을 해야겠다고 생각했다
팀장님께서는 개발을 할 때 라이브러리/어노테이션 등을 쓰면 그 동작과정을 설명할 수 있을 정도만 되면 된다고 하셨다
그것을 위해서는 2depth 정도는 더 들어가서 동작 과정을 살피는 과정이 필요하다고 하셨다
처음 하면 어렵지만 시간이 지나면 익숙해질 것이라 하시며...
언젠가 그렇게 하다보면 스프링에게 일을 시키던 것을 넘어서 jvm에게 일을 시킬 수도 있고 그걸 넘어서 os에게 일을 시키는 날이 올 수 있다고...
그리고 이전 팀장님은 처음부터 확장성 있는 코드 및 우아한 아키텍처를 지향하시는 것과 다르게
새 팀장님은 현재는 안전하고 기본적인 구조로 짜고 나중에 필요할 때 리팩토링으로 확장을 하는 것을 추구하시는 것 같았다
(가령 인터페이스를 미리 따지 않는다거나)
스타일이 다른 팀장님을 만나니 신기했고
나에게는 여러 스타일의 팀장님들을 만나면서 어떤 스타일의 코드를 짜나갈지 생각해보면 좋을 것 같다는 말씀도 해주셨다
3. 학생 인턴과 업무를 함께 했다는 것
이번 플젝에는 학생 인턴 친구가 함께 했는데 네카라쿠배에 가겠다는 포부를 가진 친구여서 뭔가 열정도 넘치고 개발하면서 당연하다고 생각해왔던 것도 새롭게 받아들이는 모습을 보며
약간 2년전의 내 모습이 이랬을까 이런 생각을 많이 했다
(하지만 나보다 무려 5살이나 어린데다 일을 깔끔하게 잘한다)
뭔가 학생다운(?) 질문도 많이 하고 코드도 보면 하고 싶은 것이 많은게 느껴지기도 하고
또 개발적으로 깊이있게 개발하고 싶어하는 마음도 있는 것 같아서
이러한 고민을 하지 않고 기계적으로 일을 하는 나는 많이 늙었구나(!)라는 생각을 하게 됐다
그리고 나는 원래 바닥이 뽀록날까봐(!) 기술에 대한 설명이나 대화를 잘 하지 않고
모른다는 말로 도망가기 바빴는데 이제 내가 무언가를 알려줘야 할 입장이 되니
모른다는 말을 할 수 없는 것 또한 신기했다
그래서 명확하게 기술을 설명하는 능력 또한 필요하다고 생각하게 됐다
아무튼 인턴 친구가 든든하게 맡은 일을 잘 해주고 기획적인 부분도 많이 해줘서 많이 고마웠고
나도 이제 누군가에게 도움을 주는 위치에서 도움을 받는 위치로 변했구나라고 느끼기도 했다
너무 많은 변화가 있어서 앞으로의 방향성에 갈피를 못 잡는 중이긴 하다..
지금하는 플젝에서 개발적인 깊이를 가져갈 수 있을까 의문이 드는 것도
이제 이직할 연차가 됐는데 지금 회사를 계속 다녀야할지도
개발을 어떤 마음가짐으로 해야할지도 잘 모르겠다
팀장님께서는 꿈을 크게 가지라고 좋은 곳을 목표로 하고 실력을 키우라고 말씀하시지만
또 좋은 회사에는 괴물같이 잘하는 사람들만 있어서 내가 하루하루 자괴감속에 일할 수 있다는 것도 직접 겪어봐서 알기에(잘하는 사람들 사이에서 못 견디고 도망간 적도 있다)
그냥 이렇게 살아야 하기도 싶긴 하지만...
뭐 시간이 지나면 뭐라도 했겠지..(?) 하며 일단 회고록이나 써본다..