딱 3달만에 글을 작성하네요...!
지난 3월에 지원했던 하이퍼커넥트 Azar Studio, iOS Software Engineer 인턴 과정을 끝마쳤기 때문입니다🤓
인턴 과정을 마치고 나서 내부적으로도 피드백을 주고 받고, 회고하는 시간을 가졌지만 이와 별개로 작성해보려고 합니다.
한 달 단위로 나눠서 그 당시 들었던 감정, 중요하다고 느꼈던 부분들에 대해 짚어보면서 정리해보겠습니다!
(진행했던 프로젝트, 과정에 대한 상세 내용은 언급하지 않을 예정입니다🙏🏻 그렇다보니 추상적일 수도...)
정신이 없었던 4월
3월 마지막 주부터 인턴으로 합류하여 정식으로 과제를 부여받고 진행하기 시작했습니다. 과제를 어떤식으로 진행할지 함께하는 인턴분과 이야기를 많이 나누었고, 사실상 4월에 들어서고 나서부터 본격적으로 프로젝트를 진행했습니다. 간단한 코드/git 컨벤션부터 프로젝트의 아키텍쳐에 대해 이야기 나누며 틀을 잡고, 문서화 방법, 일정 산정 등에 대해 세세하게 이야기를 나누고 작업을 시작했습니다.
이전에 야곰 아카데미에서 git도 써보고, 협업도 해보고, 프로젝트의 요구사항에 대한 일정 산정, 기능 구현을 모두 경험해봤기에 어느 정도 도움이 되었던 것 같습니다. 그럼에도 병렬적으로 업무를 진행하는 부분은 경험해보지 못했던 부분이었고, 이에 동반하여 발생하는 git 충돌에 대해서도 많이 경험해보지 못했던 것 같습니다. 그래서인지... 이번에 엄청 많은 git 충돌을 겪었고, 초기에는 이 문제를 해결하는데 시간을 생각보다 많이 소모했던 기억이 있습니다. 그래도 처음에 잘 학습해둔 덕분인지 프로젝트 마지막에 다다랐을 때는 git을 사용한 협업에는 어느정도 자신감이 붙었던 것 같습니다. (rebase 지옥...충돌은 당연한 것...)
또 재택 근무 형태로 인턴 생활을 함에 있어, 걱정할 법도 했지만... "캠프도 6개월간 비대면으로 했는데 뭐"라는 생각에 걱정을 덜 수 있었습니다. 그래서인지 거의 매일 하루종일 google meet을 켜두고 협업을 했던 것 같습니다. 서로 커뮤니케이션이 필요한 경우에 슬랙의 DM을 보낼 수도 있지만, 수시로 의견 교환이 이루어져야 하는 경우가 주로 초반에 많았습니다. 물론 불편한 점은 아니었지만, 하루 업무를 마치고 나면 진이 빠지는 느낌을 받긴 했습니다...
또 iOS 직무로는 인턴이 처음이다보니, 과제를 수행하기 위한 일정을 정해두고 작업을 진행했음에도 생각보다 일정 맞추는게 어려웠습니다. 이에 중간쯤에 일정에 무리가 있을 것 같다고 판단하여 일정을 조금 연장하는 등 조치를 취하긴 했습니다. 이 과정에서 당연히 물리적인 시간이 많이 필요했기 때문에 필요할 때는 추가 근무를 하며 완수할 수 있도록 했습니다. (물론 야근비는 챙겨줍니다 💸)
프로젝트 이외에도 특정 주제에 대한 발표를 해야하는 것 또한 인턴으로서 하나의 업무였는데, 이 또한 생각보다 쉽지는 않았습니다... 캠프에 있으면서 발표는 많이 경험해보지 못했고, 사실 학부생으로 있을 때 있었던 발표 경험을 배경 지식 삼아... 전공도 다르지만... 우선 그렇게 진행했습니다. 발표를 준비하면서는 최대한 "왜"라는 관점에서 바라보려고 노력했으며, 덕분에 근본이 되는 개념들에 대해 궁금증을 가지고 이해해 볼 수 있었습니다.
아래의 키워드들로 첫 한 달을 정리해 볼 수 있을 것 같습니다
🤓 적응하는 과정
🤝🏻 합을 맞추는 과정
🔥 초반 스퍼트
적응하고 성장했던 5월
한 달 정도 프로젝트 + 발표를 진행하면서 어느 정도 적응한 것 같은 느낌을 받았습니다. 지난 한 달에 비해서 요구사항에 대한 일정을 산정할 때, 세부적인 일감으로 나눠보는 논리적이고 합리적인 과정을 거쳐 필요한 총 일정을 산정할 수 있는 역량이 생겼다고 느꼈습니다. 물론 아직까지도 완벽하지 못한 부분이지만 다양한 시도를 해보면서 적합하다고 생각한 방법론으로 적용하고 일정이 지켜졌을 때 나름 뿌듯했습니다.
이 시기가 프로젝트를 진행함에 있어도 가장 성장했다고 느꼈던 구간인 것 같습니다. 주로 테스트를 작성하는 그 자체 뿐만 아니라, 테스트 가능한 구조를 만드는 것에 집중하여 다양한 개념들을 학습했습니다. 기존에 학습했었던 의존성 주입을 기반으로 하여 객체들 간의 강결합을 방지하고, 테스트 케이스를 작성할 때 다양한 테스트 더블을 사용하며 테스트 코드를 작성했습니다. 이 과정에서 프로젝트를 구조적인 관점에서 볼 수 있게 되었다고 생각했습니다. 요구되는 기능들 자체에 각각 집중하기 보다는 전체적인 흐름에 집중하면서 구조를 바라볼 수 있었습니다.
계속되는 요구사항들을 충족하며, 이러한 구조에 신경을 많이 썼음에도 불구하고 현재 시점에서 바라봤을 때도 아직은 부족한 느낌이 들고 있어서... 어떻게 해야 개선해볼 수 있을지에 대한 고민은 여전히 진행중입니다...🤔
또 프로젝트를 진행하면서 처음 접해본 개념, 잘 모르겠는 부분들을 해결하기 위해 무한 검색을 하다가 답을 못찾겠을 때, 팀 내에 질문을 한다거나 멘토님께 질문을 해서 해결을 위한 힌트를 얻을 수 있었습니다. 이 과정에서 깨달았던 것은 스스로 질문을 하기까지의 과정이 오래 걸린다는 것이었습니다. 문제를 마주했을 때, 바로 질문하는 것도 좋지 않지만, 너무 늦게 질문하는 것도 좋지 않다는 것을 인지하고는 있었으나, 스스로 해결해보고 싶은 마음에 질문하기에 적당한 시기를 놓쳤던 경험이 있습니다. 이에 스스로 하루면 하루, 이틀이면 이틀을 정해두고 기한을 넘기는 경우에는 주변의 도움을 받는 것이 효율적이고 바람직하다는 것을 깨닫게 되었습니다.
5월도 간단하게 정리해보겠습니다!
⚒️ 테스트 + 테스트 가능한 구조
🗓 일정 산정의 중요성
🙋🏻♂️ 퀄리티있는 질문에 대한 고민
실수했었던 6월
왜 잘나가다가 실수했던 6월인가 하면... 앞서 말했듯이 일정 산정에 대한 중요성을 인지는 하고 있었으나 제대로 지키지 못했기 때문입니다🥲 같은 실수를 반복하지 않기 위해 지키지 못했던 이유에 대해서는 함께했던 인턴분과도 많은 회고를 했습니다.
먼저 학습하는 입장에서는 이해가 되지 않는 부분들에 대해서 PR을 보내는 것이 조금 꺼려졌었습니다. 캠프에서 학습했다 싶이 이유있는 코드를 작성해야할 필요성이 있고, 스스로 코드를 이해하고 있어야 이를 기반으로 소통할 수 있다고 생각했습니다. 다만 요구사항을 구현하는 와중에 낯선 도메인 + 프레임워크 지식이 필요하다는 것을 뒤늦게 알게 되었고, 이를 활용하여 구현을 진행하다보니 제대로 이해하지 못한 코드들이 프로젝트에 적용되어 있는 것을 볼 수 있었습니다. 이에 이해를 우선적으로 앞세우다 보니, 일정을 제대로 고려하지 못했고 이러한 문제 상황이 발생했던 것 같습니다. 결론적으로 회고를 했을 때, 추후 일정을 산정함에 있어 요구사항을 파악할 때 조금 더 세분화해서 나누어보고, 이를 구현하기 위해 필요한 것들을 나열해보고 사전 조사를 해보는 시간을 가져야겠다고 생각했습니다. 그러한 과정을 거쳐야 내가 무엇을 모르고, 어떤 것을 집중적으로 학습하고 적용해봐야하는 지에 대해서 정리해볼 수 있기 때문에 꼭 필요하다고 느꼈습니다.
물론 일정 부분을 제외하고 모든 부분은 완벽했다! 이건 또 당연히 아닙니다... 초반에 선정한 아키텍처의 흐름을 벗어나는 방식으로 코드가 작성되거나, 테스트 가능하지 못한 구조로 구현을 하는 등 꾸준히 어렵다고 느꼈던 것들에 대해서 문제가 생겼던 것 같습니다. 끝난시점에서 이 부분을 개선점으로 생각하고 있고, 아쉬운 부분이라고도 생각합니다. 어떻게 했어야 과정 중에서 온전히 해결할 수 있었을까 생각하다가도, 뭔가 간단하게 해결할 수 있는 문제가 아닌 것 같다고도 생각했습니다.
아무튼 할 수 있는 부분까지 최선을 다해서 마지막 요구사항까지 충족을 하고, 프로젝트에 대한 발표도 진행하고, 인턴 과정 중에 있었던 좋았던/아쉬웠던 점들에 대해 이야기하면서 과정을 잘 마칠 수 있었습니다.
6월도 정리해보자면..!
🗓 여전히 중요한 일정 산정
🤓 도메인 + 프레임워크 학습
⚒️ 테스트 가능한 구조
쓰다보니 3개월간 밀도있게 학습했던 것에 비해서 엄청나게 함축시켜서 작성한 것 같긴한데...
글을 쓸 때 기준으로 중요했다고 생각이 들었던 것들 위주로 작성하긴 했습니다!
본 인턴 과정에서 프로젝트를 진행하면서 코드 리뷰를 해주시고, 질문에 좋은 답변을 해주신 Azar Studio iOS 팀원 분들께 압도적인 감사를 표하고 싶습니다🙇🏻♂️ 뿐만 아니라 팀 내에서 진행하는 기술 공유 세션이나, 코드 리뷰, 오고가는 질문들을 통해 팀에 합류한다면 많이 배울 수 있겠다는 느낌을 받았었는데, 그 덕분에 인턴 과정을 좀 더 열심히 할 수 있도록 해준 동기부여가 되지 않았나 생각합니다.
아무튼... 다시 돌아와서 그렇게 인턴 3개월을 마치고 나서 전환면접의 기회를 얻을 수 있을지 긴장하고 있었는데...🥹
다행히도 좋은 평가를 받았는지 정규직 전환 면접의 기회를 얻을 수 있었다.
면접에서는 3개월 간의 여정이 어땠는지, 어느 정도의 성장을 했는지, 어려웠던 점은 무었이었는지 등에 대해 이야기를 나누었으며, 한 번 더 3개월의 시간에 대해 되돌아 볼 수 있었다.
마지막 전환 면접에서 나름 좋은 시그널이라고 볼 수 있는 표현들을 발견했지만... 뭔가 확정적으로 "너 전환이야!"라는 말을 들어야만 마음이 안정될 것 같았다.
결과는 면접 바로 다음 날 알 수 있었다!
이 메시지를 보고 마음 한 켠에 남아있던 걱정이 사라졌다... 참 다행이라고 생각했고, 동시에 앞으로 어떻게 하면 더 발전하고 성장할 수 있을지 고민이 되기 시작했다... 끝없는 고민과 학습의 연속...🥲
좋은 기회를 얻게 된만큼, 이를 적극 활용하여 폭풍 성장하고 싶은 마음이 크다. 지난 퇴사 이후 독학하던 시절, 캠프에서의 6개월, 인턴 3개월 모두 열정적으로 학습했던 것 처럼 앞으로 마주하고 있는 날들에 대해서도 후회와 아쉬움이 남지 않도록 열심히 배워서 성장해야겠다는 생각이 들었다.
이제 한 팀에 개발자로서 정식으로 합류하게 된 만큼, 우선 1인분 할 수 있도록 노력해야 할 것 같고, 빠르고 가파르게 성장하기 위한 길들을 모색해봐야겠다.
사실 하고싶은 말은 엄청 많지만... 이만 줄여보려고 합니다!
퇴사 이후에 오늘까지 응원해주셨던 모든 분들께 감사하고, 앞으로도 베풀면서 살 수 있는 그런 태도를 가진 개발자가 되기를 바라며 이만 마치겠습니다!
모두 화이팅입니다!💪🏻