BFC 004를 나갔다. 두 달마다 열리는 대회라서 긴장감이 없어졌다. 남복 초심으로 나갔는데, 두 번째 경기에서 좋은 랠리가 하나 나왔었다. 당시에 녹화를 못해서 아쉬웠는데 상대팀이 유튜브에 올려놔서 볼 수 있었다. 어텐션도 따로 참가했었는데 나도 어텐션을 응원가고 어텐션 사람들도 응원와서 응원으로 기선제압은 확실히 할 수 있었다. 하지만 초심 본선 진출에는 실패했다.. 2월은 회사를 갔다가 평일벙을 가서 평일벙에는 거의 대부분 기운이 없었다. 평일이랑 주말에 치는 느낌이 확실히 달랐다. 1월에는 출근을 했을 때 피곤한 느낌이 거의 없었는데, 2월에는 민턴 후 간맥도 많이 마셔서 출근할 때 더 피곤했던 것 같다. 덕분에 주말에는 민턴 소모임을 갔다가 거의 쉬기만 했다. 즉, 주말에 공부하는 일은 거의 없었고 일정 관리는 실패했다.

1월에 웹캠 피드 전송을 구현했었는데, 2월에는 오디오 통신을 구현했다. 패킷 송신은 웹캠 피드를 받는 것 처럼 오디오 소스를 추가해서 구현되어 있던 인코드, 디코드 메소드를 사용해서 간단하게 완료했다. 이후에 stop video button이 모바일에서 의도한 대로 동작하지 않는 이슈를 발견해서 iOS 환경에서의 빌드를 진행했다. 빌드 환경을 다 구성했을 때 오디오 통신의 버그도 발견했다. 마이크의 입력 상태에 상관없이 마이크 장치가 추가되면 기존에 연결되어 있던 마이크도 끊어졌다. 모바일 빌드보다는 이게 더 중요도가 높다고 생각해서 바로 전환했다. 통신 구현은 라이브러리를 사용하면 끝나는 일이어서 비교적 빨리 구현했는데, 입력 도중에 입력 기기 변경은 coroutine을 다시 시작해야 할 것 같아서 audio pipeline 분석부터 시작했다.

크게 startmic 코루틴, 패킷 전송 코루틴 두 개로 이루어져 있는데, startmic 초기화, 오디오 전체 초기화 두 가지에 대한 모든 경우의 수를 시도해도 완벽히 커버되지 않았다. 시도한 방법 몇 가지는 마이크가 변경되었을 때 랜덤으로 될 때도 있고, 안될 때도 있었다. coroutine이 async이기 때문에 race condition에 처한 것이라 생각해서 아예 오디오 시스템만 프로젝트에서 분리해서 테스트를 진행해보았다. 다른 시스템(FMETP 등의 다른 라이브러리)의 영향 없이 오디오 시스템만 실행했을 때도 똑같은 결과가 나왔다. 어떻게 해결해야 할지 막막했는데, 윌리엄의 도움으로 audiosetting에 오디오 소스를 변경해주는 트리거 함수를 추가해주면 된다는 것을 알게 되었다. 결과적으로 코루틴과는 상관없이 오디소 소스 객체에 attribute를 추가해주면 끝나는 간단한 일이었다. 코루틴들 코드를 봐도 패킷 코루틴에서 edge case를 다 처리하는데 안되어서 막막했었는데, 허무하게 끝났다.

마지막 2주에는 고민을 많이 했지만, 2월까지만 하고 정규직 전환은 하지 않기로 했다. 백엔드와는 거리가 먼 업무가 가장 큰 이유였다. 업무를 원하는 내용으로 바꿔주고 원하면 연봉도 조절이 가능했지만, 회사일을 하면서 내 공부를 거의 못했기 때문에 업무를 바꿔도 완벽히 해결되진 않을 것 같았다. 만족하려면 depth 2까지는 공부하고 노션에 정리해야 하는데, 이걸 회사 일과 병행하기가 쉽지 않을 것 같다는 생각이 들었다. 구글링으로 문제를 해결하고 나중에 정리하자고 미루다가 안하는 상황이 나올게 분명했다.

지금 생각해보면 인턴 활동이라 생각하고, 내 공부를 따로 하지 못한 것이 심리적으로 크게 작용한 것 같다. 인턴도 경험의 일종이고 취준 기간이라 생각했는데, cs, 백엔드 등의 공부를 거의 안한 것이 부담스럽게 느껴진 것이다. 퇴사하면서 대표님께도 말했지만, 회사 분위기와 동료들은 정말 좋았다. 첫 회사 생활이었지만, 이보다 더 좋은 사람들을 만날 수 있을까라는 생각이 들 정도로 다들 서로를 잘 배려해주고 모난 사람 하나 없었다. 또한 unity-node 웹 소켓 통신, 협업을 경험했기 때문에 인턴 활동 자체는 얻은게 많았고 만족스러웠다. 3월부터는 계속 지원 공고에 접수할 예정이다. 아직까지는 일인분을 할 실력이 아니라 생각해서 공부하면서 면접 경험을 쌓을 것이다.

Leave a comment