프로그래밍 이야기

게임 프로그래밍을 잘 하면 팀에서 가장 이득을 보는 사람은?

원생계 2019. 4. 16. 01:38

 

© Pexels, 출처 Pixabay

 

회사의 팀 프로젝트 관련된 이슈가 말 그대로 폭발적으로 생겨나고 있습니다. 그만큼 만들어야 할 게임 시스템이며 로직들이 많다는 이야기인데요, 게임 프로젝트를 개발/서비스하다 보면 항상 없던 걸 만들어 붙이기만 하지는 않습니다. 새로운 걸 만들면서도, 기존의 것을 수정한 뒤에 추가해야 하는 경우가 대부분일 겁니다. 어떤 경우엔 기존의 걸 많이 제거하고 새로운 걸 조금 추가하게 되기도 합니다.

기존의 걸 수정해야 하는 양이 많아진다면 자연스럽게 프로그래밍 시간도 그만큼 늘어나게 됩니다. 여기서, 프로그램의 구조 설계와 디자인이 잘 짜여 있다면 시간을 크게 절약할 수 있습니다. 잘 짜인 프로그램이란, 많은 프로그래머들이 책과 강연에서 말하는 걸 듣고 대략 제 생각을 정리해보면, 아래 특성을 갖춘 프로그램 혹은 프로그래밍 된 코드라고 하고 싶습니다.

1. 기존에 있던 비슷한 구조의 시스템을 확장하기 용이하다.

2. 기존 코드를 수정해야 할 때, 리딩 해야 할 기존 코드의 양이 적다.

3. 객체와 인터페이스 디자인만으로도 코드의 의도를 쉽게 이해할 수 있다.

게임은 개발 과정에서 "재미"를 추구하기 위해 계속해서 기존에 없던 것이나 새로운 것, 혹은 기존 것의 뒤틈이 잦은 소프트웨어이기 때문에, 구조 설계와 프로그램 디자인적인 스킬이 크게 필요한 분야라고 생각합니다.

프로그래밍 구조 설계와 디자인 베이스가 탄탄한 게임 프로젝트는, 개발 프로세스와 새롭거나 수정된 기획에 대응하기 좋아지고, 결과적으로는 개발 프로세스의 효율 상승과, 그 개발팀의 개발력을 전체적으로 상승시킬 수 있습니다.


그렇다면, 구체적으로 개발팀의 어떤 사람이 가장 큰 이득을 볼까요? 프로그램과 연관이 큰 기획자나 그래픽 아티스트를 생각해볼 수도 있겠지만, 저는 프로그래머 자신이라고 생각합니다. 더 구체적으로는, 같은 개발팀의 다른 프로그래머도 아니고, 그 코드를 직접 작성하고 보게 될 자기 자신 말입니다.

소설 작법서를 보면 이런 내용이 심심치 않게 등장합니다.

"초고를 다 작성하면 손이 잘 닿지 않는 서랍이나 책꽂이에 처박아두고 한 달 뒤에 다시 꺼내서 읽어보라."

대략 상상이 갑니다. 오래전에 썼던 블로그의 글을, 나중에 다시 읽어볼 때의 화끈거림이 느껴지는군요. 코드 역시 마찬가지입니다. "코드를 누가 이따위로 짜놨어!?"라고 생각하기 전에 로그를 추적합니다. 자기 자신일 가능성이 절대 낮지 않습니다.

코드를 많이 짜는 날은 수백 라인 정도 타이핑하기도 합니다. 간단하게 100라인이라고 쳐도 10일이면 1000라인, 한 달이면 3000라인. 1년이면 10,000라인 이상 타이핑하게 될 수도 있습니다. (단순 계산입니다. 실제로는 리펙토링을 통해 코드의 양이 줄어드는 작업도 많이 하니까요.) 이렇게 많은 코드들이 장기간 쌓이게 될 것이고, 내가 지금 짜고 있는 코드는, 1주일, 1달, 1년 뒤의 나에게는 생소한 코드가 될 수도 있습니다.

그래서 저는 코딩을 할 때, 마치 타임캡슐처럼, 미래의 나에게 부끄럽지 않을 코드를 짜기 위해 노력하는 편입니다. 개인 프로젝트를 자주 개발하면서 생긴 습관이기도 합니다. 기본 설계에 최대한 의도를 담을 수 있도록, 현실적인 자원을 생각하며 과설계가 되지 않도록 경계하고, 도저히 설계나 디자인으로 풀기 어려운 이슈는 꼼꼼하게 주석을 남깁니다. 필요하다면 더러운 코드는 다른 사람들이 참조하거나 확장하지 못하도록 격리하기도 합니다.

이렇게 잘 짜기 위해 노력한 코드에 대한 평가와 그 열매의 수확은, 미래의 내가 하게 될 가능성이 매우 큽니다. 내 의도대로 확장되거나 유지되고 있는 코드의 구조. 내가 부족함을 느꼈던 디자인을 다른 프로그래머(혹은 나)가 수선해서 커밋 해놨을 때 그걸 참조하면서 얻는 학습의 즐거움. 도저히 해결법을 못 찾아서 격리시켜놨던 코드를 다시 열어봤을 때 해결법이 떠오른다면 맛볼 수 있는 레벨업의 느낌 등등.

프로그래밍 구조 설계와 프로그램 디자인은 보통 추상적이고 어렵고 낯선 분야로 인식하는 분들이 많다고 알고 있습니다. 저 역시 아직도 가장 어려운 분야 중 하나이지만, 적어도 이제 낯설지는 않아진 것 같습니다. 프로그래밍을 잘 하기 위해 노력한 시간은 결국 미래의 나에게 경험치와 즐거움, 실력 향상이라는 보상으로 돌아올 것이고, 점진적으로 더 좋은 구조 설계와 디자인을 할 수 있게 될 것입니다.

 

 

728x90
반응형