나의 개발 첫 걸음
나에게 개발은 창작활동이다
•
공연기획과 운영을 7년간 본업으로, 창작을 좋아해 그 외에 패션, 그림 등 다양한 분야에서 활동을 했다. 그렇기에 개발자도 결국 창작활동을 하는 좋은 직업이라고 생각해 접근했다.
개발 공부
•
코로나로 공연 수입이 끊기고 생활고에 시달리던 중, AI가 그림을 그린다는 소식을 듣고 AI 개발에 관심을 가지게 되었다. 물론 지금은 프론트엔드 개발자이지만...,<br/>그때 당시엔 개발 붐이 있었고, 스팩과 전혀 무관하게 실력만 있다면 도전할 수 있다는 생각에 개발 공부를 시작해 42서울을 수료하고, 2023년 9월 게임 회사에 웹 개발자로 입사했다.
나의 개발자로서 첫 회사
첫 개발자로서 회사 생활 초기
•
회사에서는 웹 개발이라는 분야의 개발직군이 존재하지 않았다. 그렇기에 내가 입사할 당시 회사 내부에 유일한 웹 개발자였다. 실제로 나는 한달간 방치를 당했다... 아무도 일을 시킬 수도 없는 상황에서 나에게 주어진건 몇 천줄짜리 엑셀의 게임 운영툴 기능 명세 파일이였다. 그렇게 혼자서 열심히 기능에 대해 모르는게 있다면 주변 분들에게 조언을 요청하고 이 운영툴에 필요한게 무엇인지, 언어, 프레임워크 등 여러가지로 내가 직접 알아보고 선택해서 결정해야하는 상황이였다. 사실 신입 개발자가 경험해보기 힘든 거라고 생각한다.
내가 직접 결정하고 설득하는 경험
•
특정 기능과 언어, 프레임워크등 내가 직접 알아보고 선택했어야 했다. 이 경험은 42서울에서도 실제 프로덕트를 만들어보기 위해 팀 결성을 하고 팀 빌딩을 해본 경험이 많은 도움이 됐다.그 경험을 토대로 나는 내가 그래도 당장 개발할 수 있는 Typescript와 NextJS를 선택하고 이를 개발기간이 부족하다는 이유와 추후 개발자를 뽑기 쉬운 프레임워크로 실장님을 설득해 입사 4일만에 첫 코드를 입력하게 된다.
게임 회사 개발 문화
•
게임 회사 개발 문화 중에 "크런치" 기간이 존재한다. 이 크런치 기간엔 모두가 같이 10시~10시 근무를 한다. 게임 컨텐츠 개발과 리소스 등 만들어야할게 많이 밀려있는 상황에서 이런 크런치 기간을 가지는데, 나는 입사하고 오픈 초기(24년 4월에 오픈)까지는 거의 크런치를 하고 있었던 것 같다. 워라벨이라는 단어가 소중하다는걸 경험해본 좋은 기간이였...
첫 프로젝트
다국적 사용자를 위한 시스템
•
다국어 지원
◦
게임 운영툴이지만 CS업무를 진행해야하는 GM분들은 글로벌 게임인 만큼 다국적 GM분들이 계시는 상황이였다. 그렇기에 나는 한국어, 영어, 일본어, 중국어 (번체)를 지원해야하는 상황이였다. 물론 i18n같은 아주 멋있는 라이브러리가 있었지만, 그때 당시 그 라이브러리를 사용할 생각을 못 하고, 직접 비슷한 구조를 만들어 사용했다. 실제 인게임 용어들도 존재했고, 그 용어들을 필요한 UI에 key: value로 묶어서 GM 이 선택한 언어로 모두 보일 수 있게 컴포넌트를 개발했다.
•
타임존 핸들링
◦
실제 게임의 시간을 GM이 선택한 UTC 기준으로 시간값을 표기해 주는 컴포넌트를 만들고, 시간값을 넣어야 하는 컨텐츠(예를 들면, 접속 보상 관련)에 넣어야 하는 시간값은 브라우저내부에서는 타임존이 적용된 Date객체로 인한 일관적인 ms값을 구하기 위해 타임존 계산 및 실제 Date를 보여줘야하는 화면에서도 GM이 선택한 UTC, TimeZone을 계산해 보여주는 등 많은 고민을 통해 개발했다.
2월에 사전 오픈
•
회사에서 내 첫 프로젝트가 올해 2월에 처음으로 내부와 퍼블리싱 회사에 오픈이 됐다. 이때 정말 많은 부담감이 있었다... 내가 만든게 세상에 나왔지만, 이 프로덕트로 인해 오류나 버그로 인해 데이터가 이상하게 바뀐다거나, 다른 외부 서버, DB등에 악영향을 끼쳐 실제 게임에 피해를 주면 손실이 생길 것 이라는 상상을 했고, 많이 떨리는 순간이였다.
실제 버그 제보와 피드백은 마음 쓰리다
•
실제 GM분들이 사용하시고 버그 제보와 피드백등은 마음 쓰리다. 처음에는 버그 제보와 피드백을 받아 수정하는 것에 많은 스트레스를 받았다. "내가 너무 부족한가?", "내가 조금 더 꼼꼼하게 했어야 했는데..." 등 많은 자책을 했다. 하지만 이 버그들을 수정하면서 내가 만든 프로덕트가 실제로 사용되고 있다는 것을 느끼고 뿌듯했다. 또한 이런 버그들을 수정하면서 내가 만든 프로덕트가 실제로 사용되고 있다는 것을 느끼고 뿌듯했다.
게임 운영툴은 많은 데이터와 제약이 필요하다
나는 화면을 이쁘게 꾸미는걸 좋아한다. 하지만 게임 운영툴은 화면을 이쁘게보단 많은 데이터를 한 화면에 많이 보여주고, 그 데이터들을 정확히 핸들링하고, GM이 하는 모든 행동에 대한 제약, 현재 하고 있는 업무에 대한 실수 등을 줄이기 위한 방법을 강구해야 했다.
승인 시스템
•
유저, 게임 데이터 등을 수정하기 위한 행위는 모든 제약과 기록이 필요했다. 이 부분에서 승인(티켓)시스템을 만들었고, 이 시스템을 통해 GM이 하는 업무에 대한 실수를 방지하며, 그 실수들로 인한 사이드 이펙트등을 줄이는데 큰 도움이 됐다. 승인 권한이 있다고 셀프승인은 절대 없고, 무조건 그 이슈에 대한 승인권한을 가진 다른 GM만이 승인할 수 있게 크로스체크를 하게 만들었고, 많은 부분에서 이 시스템을 통해 휴먼 에러를 잡을 수 있었다.
요즘 회사에서 나는?
기획팀에서 다루는 metdata 검증, json table viewer 등 사내에 필요한 기능들을 만들며 다른 직군에 계시는 분들에게도 도움을 드리는 것에 많이 기여하고 있고, 예전에 내가 만들어둔 코드들에게서 기술부채를 줄여가고 있다... 현재 최대 관심사는 view, model을 나누는 작업?
지금 나는?
프론트엔드 개발자로서 경험이 부족하다고 생각한다. 같은 프론트엔드 개발자분들과 협업을 통해 기술적 토론과 성장을 해본 경험이 없고, 혼자서 공부하고 혼자서 개발하는 상황이다. 이런 점에서 흔하게 사람때문에 많은 스트레스를 받지 않으니 실제로 "꿀 빤다."라고 표현하신 분도 계신다. 물론 내가 지금까지 경험했던 글로벌 서비스에 필요한 기능, 유저 데이터를 쉽게 바꾸면 안되기에 만든 승인(티켓) 시스템, 다국적 이용자가 있기 때문에 타임존 핸들링등 경험을 쉽게 할 수 있는 건 아니라고 생각한다. 그렇지만 아직까지는 같은 직군의 개발자분들과 협업을 경험을 꼭 해보고 싶다. 사이드 프로젝트를 하기엔 회사 업무강도상 어려운 상황이기에 많이 고민이 많은 시점이고, 이직도 고민하고 있는 시기이다. 물론 이제 막 1년차에서 2년차가 된 시점에 무슨 이직인가 싶지만,,,?