1년 회고록
인사말
안녕하세요.
유니크굿컴퍼니에서 리얼월드 서비스의 안드로이드 앱 개발 파트를 담당하고 있는 안드로이드 개발자 고현석입니다.
지난해 7월경 유니크굿의 멤버로 함께한 후 벌써 1년이 지났습니다. (11개월이면 거의 1년 ㅎㅎ..)
뜬금없는 1년 회고록에 회사를 떠나는 건가? 라는 생각이 들 수도 있지만..
떠나기 위한 것이 아니라, 새로운 1년을 맞이하기 위해 스스로 마음을 다잡고 준비하는 글입니다.
왠지 새해를 맞이하는 글 같기도 합니다 ^^.
지난 1년 동안 달라진 것과 배운 것 그리고 실패와 성공을 정리하며 새로운 1년을 위해 스스로 다짐하고자 합니다.
달라진 것
막상 글을 적기 위해 생각해보니 저는 크게 달라진 것이 없는 것 같습니다.
그렇지만 본인은 본인의 변화를 모른다는 말이 있기에.. 제 옆에서 머리를 쥐어짜며 코드를 작성하고 있는 사수님께 여쭤보았습니다.
나 : OO님, 제가 1년 동안 달라진 게 있나요?
사수님 : 없으면 안 되지 않을까?
나 : …
사수님 : 더 까불거리는 게 달라지긴 했죠.
네, 그렇습니다.
아무래도 회사에 잘 적응했다는 걸 돌려서 말씀하신 것 같습니다.
1년 전으로 돌아가 생각해보니.. 정말 적응하기 어려워했던 제 모습이 떠올랐습니다.
저는 기본적으로 낯가림이 심하고.. 고향을 떠나 모든 것이 새로웠지만 낯설었고, 처음으로 시작한 사회생활에 힘든 것도 많았습니다.
하지만 오랫동안 꿈꿔오며 준비한 개발자가 되어 성취감을 얻기도 하고, 멤버분들께서 이것저것 저를 많이 챙겨 주셨기에 잘 적응할 수 있었던 것 같습니다.
(그리고 스스로 돈을 벌기 시작하면서 경제 관념이 달라지기도 했습니다. 펑펑 쓰는 거죠 막… 그리고 후회하고..)
기술적으로 달라진 건 확실하게 말할 수 있습니다.
바로 테스트 코드를 작성할 수 있게 되었다는 것입니다.
이전까지 리팩토링을 진행할 때 안정성 등의 문제로 테스트 코드가 필요하여 작성하고자 했었지만 쉽지 않았는데, 책임의 분리에 대한 이해도가 부족하였기 때문이었습니다.
책임의 분리가 제대로 되지 않았기에 코드 간의 결합도가 높아졌고, 이것이 테스트 코드 작성에 어려움을 겪게 했습니다.
책임의 분리를 강하게 적용하고 나서는 테스트 코드를 굉장히 쉽게 작성할 수 있게 되었습니다.
현재 지속적인 테스트와 더 나은 테스트 코드 작성 그리고 예상하지 못한 실패 케이스 커버를 위해 개발팀분들과 함께 TDD 스터디를 진행 중입니다.
배운 것
배운 것에 대해 적어보겠습니다.
태스크 공유와 스케줄링
입사 후 몇 개월간 저는 개발자에게 필요한 덕목 중 하나인 협업하는 능력이 많이 부족했습니다.
제가 하는 일이 공유되지 않은 적이 많았고, 일정에 차질이 생기는 이슈를 공유하지 않은 적도 있었습니다.
이로 인해 같이 프로젝트를 진행하는 분들에게 큰 혼란을 안겨준 적도 많습니다 ^^…
그럴 때마다 사수님께서 저를 많이 도와주셨습니다. 예를 들자면 프로젝트를 진행하기에 앞서 예상되는 이슈 공유, 일정을 미뤄야 하는 일이 생긴 것을 공유하는 등.. 의사소통에 관한 도움을 많이 받았습니다.
또한 원활한 협업을 위하여 저희 서비스의 도메인과 시스템에 대한 높은 이해도는 필수적이었는데, 이것을 위해 직접 게임을 만들며 많은 인사이트를 얻기도 하였습니다. 그렇게 만들어진 게임은 회사 내부에 출시되어 많은 분이 재밌게 플레이하였는데, 다음에 이 게임을 소재로 한 글을 작성하여 보겠습니다.
덕분에 이렇게 사회의 건실한 일원(?)이 되어 멤버분들과 으쌰으쌰 열심히 일할 수 있게 된 것 같습니다.
리팩토링과 테스트
리팩토링 후 기존 기능이 그대로 유지 되는지 테스트하지 않고 그대로 출시해서 생긴 문제가 많았습니다.
처음 일을 시작했을 때는 이런 문제에 대한 위기의식이 부족했습니다.
하지만 제가 발생시킨 문제로 인해 생긴 사용자분들의 불편을 직접 본 후, 서비스의 안정성을 위해서 노력해야겠다는 생각이 들었습니다.
그 후 코드 작성 후 꼼꼼히 셀프 코드 리뷰도 진행하고 수정된 곳에서 많은 테스트를 진행하는 등.. 버그 발생을 줄이기 위해 여러 가지를 노력하였고, 이를 통해 안정성을 위해 해야 할 것이 무엇인지 알게 되었습니다.
실패
실패한 일들을 생각해보니 실패보단 포기했던 일들이 더 많이 떠오릅니다.
포기도 실패와 비슷하다고 생각하기에.. 하나하나 적어보겠습니다.
CI/CD 도입
몇몇 기술 블로그에서 모바일 앱 CI/CD 도입 관련 글을 본 후 배포 자동화, 테스트 자동화 등.. CI/CD가 가져다주는 이점에 매료되어 “나도 CI/CD를 도입하겠어!”라며 도입을 시도하였습니다. CI/CD 도구로는 현재 저희가 사용하고 있는 Azure DevOps의 Pipelines를 사용하려 했습니다.
하지만 CI/CD에 대한 낮은 이해도와 다른 일정, 버그 픽스..등의 이유로 포기하였습니다.
AR 기능 고도화
리얼월드 앱의 사랑받는 기능으로 AR 이미지 인식이 있는데, 카메라로 비추는 대상을 인식하고 그 위에 이미지를 띄워 사용자에게 특별한 경험을 제공해주는 기능입니다.
현재는 단순히 이미지 인식 기능만 있기에, 사용자에게 더 다양한 경험을 제공해주기 위해 카메라로 비추는 곳에 실제 세계와 상호작용하며 움직이는 물체를 보여주는 기능을 계획하였습니다.
AR 기능을 구현하기 위해 ARCore라는 기술을 사용하는데, 문서가 잘 되어 있어 별다른 어려움을 겪지 않을 것으로 생각하였습니다. 하지만 3D 오브젝트를 제작하고 움직이게 하고.. 실제 지형지물을 인식하는 등.. 기능 구현에 신경 써야 할 것이 많았습니다.
다른 일정이나 이슈 등.. 여러 일 때문에 잠시 뒤로 미루어서 아쉬운 마음이 듭니다.
제 맘속에 고이 모셔둔 위시리스트가 이렇게나 많습니다.
아직은 부족한 것이 많아 실패한 것이 있지만 올해 안에 멋지게 이루어내 보겠습니다.
성공
어떤 것에 성공했나 생각해보니.. “와 성공이다! 난 멋져! 역시 나야!”라고 할 만한 것은 없었습니다.
그렇지만 작게나마 이룬 것이 몇 가지 있습니다.
단계적 배포 적용
기존에 검토가 끝난다면 자동으로 100% 배포되던 것을 일정 조율과 앱 안정성을 위해 관리형 배포 + 단계적 배포를 적용하였습니다.
앱 번들
두 번째로 플레이 콘솔에 APK 파일로 배포하던 것을 앱 번들로 교체하였고 이를 통해 설치 용량을 감소시켰습니다.
테스트 코드
세 번째로는 위에서 설명해 드린 테스트 코드입니다. 모든 로직에 테스트 코드를 적용하지는 못했지만, 최근 작성된 코드 등에 테스트 코드를 추가하여 안정성을 높임과 동시에 효율적인 작업을 수행하였습니다.
BGM 기능
올해 초, 리얼월드에 새롭게 도입된 기능입니다.
각 게임에 BGM을 추가하여 플레이어에게 더욱 몰입감 있는 경험을 제공해주는 기능입니다.
BGM 기능은 노래 재생, 온/오프, 페이드인/아웃이 들어간 간단한 기능!
인줄 알았지만.. 리얼월드 앱의 특성상 하나의 게임을 진행하는 동안 여러 화면 전환이 일어나게 되는데, BGM을 유지하는 화면, 유지하지 않는 화면, 각 화면 전환 처리에 따른 BGM 변경..등 신경 써야 할 것이 많았기에 개발자, 기획자 모두를 힘들게 하였습니다.
하지만 많은 분이 BGM 기능을 사랑해주시고, 없어서는 안 될 존재가 되었기에 많은 보람을 느끼고 있습니다.
GPS 기능
방향을 가리키는 나침반을 통해 플레이어가 특정 장소로 길을 찾으며 이동하도록 하는 하나의 퀘스트입니다.
사실 GPS 기능은 개발팀 내부 R&D로 아주 작게 시작되었습니다.
그런데 어쩌다보니 사내에 소문이 나게되었고.. 이것으로 새로운 기능을 만들면 좋겠다는 의견이 나오게 되며, 기능 구체화 후 앱에 정식 기능으로 자리잡게 되었습니다.
실제 장소에 도착하는 것이 목적인 기능이기 때문에 제작 후 회사 근처 여러 곳을 돌아다니며 테스트를 진행하였습니다. (그리고 매우 즐거웠..)
그리고 이렇게 즐겁게 개발한 GPS 기능은 현재 부산, 울산, 대전 등 많은 장소에 사용되며 많은 분께 색다른 경험을 제공해주고 있습니다.
어떻게 하면 플레이어에게 더 좋은 경험을 제공할 수 있을까? 라는 생각에서 시작한 R&D가 저희 서비스의 한 부분이 되어 정말 기쁩니다.
여기까지 지난 1년간 이루어낸 성공입니다만.. 이렇게 적고 보니 정말 별거 아닌 것 같습니다.
그렇지만 이런 작은 노력이 모여 하나의 큰 성공을 이루어낼 수 있다고 생각합니다. (이 또한 소확행?)
앞으로의 다짐과 마무리
지난 1년간 유니크굿의 멤버로 함께 일하며 많은 것을 배웠던 것 같습니다. (왜 자꾸 떠날 것 같지..)
누군가 저에게 “지난 1년간 많은 성장을 이루어냈는가” 라고 물어본다면 조금은 망설이겠지만, 그래도 성장했다고 대답할 수 있을 것 같습니다.
1년 뒤, 2년 회고록을 적을 때까지 배우기만 하는 것이 아닌, 저도 도움을 줄 수 있는 사람이 되어 있으면 좋겠다는 생각이 듭니다.
다음에는 안드로이드 기술 관련 글을 가지고 돌아오겠습니다.
긴 글 읽어주셔서 감사합니다.