Search

2024년 열 세번째 개발일지

작성자
상태
완료
날짜
2024/11/10
생성 일시
2024/11/10 09:12

3년의 개발

이번 달로 정확히 유니티 개발자로서 게임을 개발한 지 3년이 되었습니다.
지난 3년 동안 저는 개발자로서 많은 성장을 이루었다고 느껴지네요.
학생 때 배웠던 지식들이 실제 프로젝트에서 큰 도움이 되었고, 동시에 현업에서만 경험할 수 있는 다양한 실무 스킬과 문제 해결 능력도 쌓을 수 있었습니다.
이러한 경험들은 저를 더 탄탄한 개발자로 성장시켜 주었습니다.
그럼에도 불구하고, 저는 여전히 백준 알고리즘과 CS 공부를 지속하고 있습니다. 상당한 성장을 이루었다고 생각했지만, 반어적이게도 성장할수록 아직 배워야 할 것이 많다는 것을 알게되었습니다.
이번 개발일지에서는 지금까지 습득한 노하우를 간략히 정리하고, 앞으로의 개발 방향에 대해 살펴보고자 합니다.

현업에서만 배울 수 있는 기술들

유니티 개발자가 학생 때가 아닌, 실제 현업에서 배울 수 있는 기술들은 학생 때 배웠던 것의 100배 이상이라 생각합니다.
예를 들어 AWS CDN을 활용해서 어드레서블 에셋을 직접적으로 적용하는 방법.
실제 기획자분과 TA분들과 소통하는 방식.
여러 프로그래머분과 협업하는 방법.
등등..
현업에서 배울 수 있는 것들은 이외에도 무수히 많습니다.
이제서야 회사들이 경력자를 선호하는 이유를 이해하게 되었습니다.
신입인 제가 "나도 잘할 수 있다"고 생각했던 것이 다소 순진했다는 점을 깨닫게 되었네요.
제가 주로 개발하는 배틀 시스템을 예로 들어, 현업에서만 얻을 수 있는 경험을 간단히 설명해보겠습니다.
서버가 C++로 구현되어 있어, 배틀의 동기화를 위해 C++ DLL을 제작하고 배틀 로직을 C++로 개발해야 했습니다.
이 방식의 장점은 두 가지입니다.
첫째, 클라이언트에서 서버의 배틀 로직을 구현할 수 있습니다.
둘째, 로컬에서 C++ DLL을 실행할 때 해당 DLL 내에서 디버깅이 가능합니다. 즉, 중단점을 설정할 수 있어 효율적인 문제 해결이 가능합니다.
사실, 여기까지도 학생 수준에서는 도전하기 어려울 정도의 내용이지만, 이 정도까지는 그래도 학생들도 배울 수 있다고 생각합니다.
다만, 실제 문제는 서버와 통신이 이루어졌을 때 알 수 있습니다.
실제 서버는 DLL에서 실행하는 것과 달리 패킷 지연이 발생합니다. 이는 어느 정도 예상할 수 있지만, 그 발생 원인과 해결 방법은 현업에서 직접 테스트해보지 않고는 알기 어렵습니다.
이러한 이해를 바탕으로, 패킷 통신을 통한 게임 로직 개발 시 왜 여러 로직을 클라이언트에서 처리하는지 알 수 있습니다. 모든 로직을 서버에서 처리하는 것은 불가능할 뿐만 아니라, 그것을 패킷으로 통신하는 것 자체가 문제를 야기할 수 있기 때문입니다.
따라서 초기 설계 단계부터 어떤 로직을 서버에서 처리할 경우 패킷 통신에 과부하가 걸릴 수 있는지를 고려하며 로직을 설계해야 합니다. 이는 실제 경험 없이는 파악하기 매우 어려운 부분입니다.

앞으로의 계획

현재 제 업무의 90%가 배틀 시스템과 관련되어 있습니다.
때때로 이벤트나 기타 소소한 업무를 수행하기도 하지만, 제 경험의 대부분은 배틀 시스템 개발에 집중되어 있습니다.
따라서 배틀 시스템을 개발하면서 개인적으로 궁금했던 다양한 알고리즘과 CS공부를 하게 되었습니다. 이러한 학습은 앞으로도 이어갈 계획입니다.
다만, 이제부터는 좀 더 다양한 개발을 해볼 생각입니다.
이전에도 언급했듯이, 저는 AI에 매료되어 있습니다. 현재 ChatGPT, Notion AI, GitHub Copilot 등을 유료로 구독하여 활용하고 있으며, 다양한 AI 시스템을 경험해 보았습니다.
작년 공모전에서는 ChatGPT를 활용한 수학 오답노트 시스템을 개발하여 입상했습니다.
현업에서의 경험, 공모전 참여, 그리고 다양한 알고리즘과 CS 공부가 제 개발 실력을 크게 향상시켰습니다.
하지만 생산성 측면에서 AI를 활용하는 것이 믿기 힘들 정도로 높은 상승효과를 가져다준다고 생각합니다.
현업에서의 경험과 공부 등을 모두 뛰어넘을 정도로 말이죠. 정말 열심히 공부하고 성장했다고 생각하지만, 그럼에도 불구하고 제 강점을 꼽자면 AI를 제대로 활용할 수 있다는 점이라고 생각합니다.
따라서 앞으로 1~2년 동안 현업에서의 경험을 쌓고 CS 공부를 심도 있게 한 후, AI를 최대한 활용한 개인 프로젝트를 진행해보고자 합니다. 그 시점에 개발자가 사용할 수 있는 모든 AI 기술을 총동원할 계획입니다.

내가 생각하는 개발자

최근 들어 제가 추구하는 개발자상이 이전과는 다소 달라졌다 생각합니다.
이전에는 단순히 최적화를 잘하고 확장성 높은 코드를 설계하는 사람이 뛰어난 개발자라고 생각했습니다. 하지만 지금은 그런 개발자보다 생산성 있는 개발자가 더 뛰어나다고 생각합니다.
제가 생각하는 개발자의 수준을 세 가지로 나누어 보겠습니다.
먼저, 삼류 개발자는 단순히 주어진 업무만을 완수할 수 있는 개발자입니다.
이류 개발자는 한 단계 더 나아가, 기획자의 의도를 정확히 파악하고 미래의 확장성을 고려한 코드를 작성합니다.
예를 들어, 공격력 버프를 구현할 때 추후 등장할 수 있는 공격 속도 버프 등 다양한 버프 시스템을 고려하여 설계하는 것입니다.
이러한 접근 방식은 약간의 오버엔지니어링을 포함하지만, 결과적으로 더 생산적인 코드를 만들어냅니다.
일류 개발자는 한 걸음 더 나아가 기획 단계까지 참여할 수 있는 개발자라고 생각합니다.
이는 정말 많은 경험이 필요하겠지만, 예를 들어 기획서를 봤을 때 대략적인 개발 시간을 예측하고, 해당 기획이 실제 게임에 적용되었을 때의 잠재적 문제점을 파악할 수 있습니다. 더 나아가, 개발 시간을 대폭 줄이면서도 더 나은 대안을 제시할 수 있는 능력을 갖춘 개발자입니다.
이것이 제가 현재 꿈꾸는 개발자상입니다. 저는 이제야 이류 개발자의 문턱에 들어선 것 같습니다. 기획에 참여하고 기획자분들과 의견을 나누지만, 정작 해당 콘텐츠가 완성되면 "아, 그때 좀 더 나은 대안이 있었구나"라고 깨닫게 되죠.
그렇기에 제가 생각하는 일류 개발자가 되기 위해 노력하는 과정을 현재 제 개발 블로그에 담아내고 싶습니다.
이를 통해 제 성장 여정을 기록하고 공유할 수 있기를 바랍니다.