마치며
컴투스 서버캠퍼스에 대해
좋았던 점
사실상 게임 분야에 입문한거나 마찬가지인데 많은 재미있었다. 게임을 상상하면서 서버를 만드는 것이 재미있었다. 앞으로 계속 게임 서버 분야에 있어도 좋을 것 같다.
현업에서 시선과 관점을 알 수 있었던 것이 좋았다. 개발하면서 실제 있었던 일화들을 설명해주셔서 재미있게 들었던 부분도 있었다.
아낌없는 지원이 좋았다. 스터디룸에 모니터로 갖다주시고, 학습할 수 있는 책을 구매해서 주셨다. 또, 배포도 해볼 수 있게 라즈베리파이를 제공해주시기도 했다. 그리고 가장 좋았던 것은, 이런 것들을 요청하기 전에 미리 필요를 알고 제공해주셨던 것이다.
작년에 인턴으로 들어와 신입사원으로 일하고 있는 선배와의 만남, 데이터 팀장님과의 멘토링 시간도 너무 좋았다. 비전공자라서 현업자 지인이 없기 때문에, 실제 업무할 때 어떤 일을 하는지가 가장 궁금하다. 그런 것들을 풀어낼 수 있고, 취업을 준비할 때 어떤 것들을 준비하면 좋을지도 알 수 있어서 좋았다.
밥을 주는 것도 너무 좋았다. 삼시세끼 다 지원해준 것도 좋았는데 맛도 매우 훌륭해서 좋았다. 사실 지원금은 없어도 왔을 것 같다.
아쉬웠던 점
교육생 중 과정에 100% 집중할 수 없는 환경의 학생들이 있어서 아쉬웠다. 같이 충분히 고민하고 같이 으쌰으쌰하고 싶었는데, 11명 중 4~5명 정도만 스터디룸에 나와서 학습했다. 하지만 여건상 스터디룸에 오지 못했던 교육생들이었기에 그냥 아쉬움으로 남을 뿐이다.
시간과 능력이 있었으면 간단한 클라이언트도 만들어봤으면 좋았을텐데 하는 아쉬움이 있다. 주어진 과제에 욕심을 살짝 내려놓고 효율적으로 구현할 걸 그랬다. 그리고 클라이언트를 시도해볼 걸 그랬다.
어려웠던 점
처음엔 ASP.Net Core, Mysql, Redis 사용이 서툴러서 헤맸다. 그래도 문서들을 충분히 뒤져보고, 다른 교육생들이랑 같이 얘기하고 연구해보면서 학습하며 잘 해결해갔다.
프레임워크랑 라이브러리를 사용하는 것도 어려움이 좀 있었다. 그냥 쓰면 동작은 하는데, 내부에서 어떻게 돌아가는지 모르겠어서 머리에 그림이 안그려졌다. 그래서 sql kata는 깃헙 들어가서 소스코드도 좀 열어봤는데, 여전히 다 이해되진 않았다.
이름짓기도 꽤 어려웠다. 이름 짓는것 자체가 어렵다기 보다는 실무에서 통상적으로 쓰는 단어들을 잘 몰라서 어려웠다. 오픈소스들을 좀 열어보면서 그런 힌트를 얻어봐도 좋을 것 같다.
성장한 점
객체 지향 : 객체지향이 뭘 지향한다는 건지, 각각의 객체들을 어떻게 설계하고 구현해서 사용해야하는지 잘 이해가 안갔다. 이번에 프레임워크에 맞춰서 설께하고 프로그래밍 하다보니 이해가 됐다. 모델, 서비스, 컨트롤러 등 각각의 역할에 맞게 class를 설계하고 구현해서 사용하다보니, 아 이런게 객체지향이구나 하는 느낌이 왔다.
프레임워크, library 사용 경험 : 지금까지는 프로그래밍 해보면서 프레임워크를 사용해본 적이 없고, Library도 표준외의 것들을 써본적이 없다. 그리고 이렇게까지 레퍼런스가 협소한 라이브러리는 더더욱 쉽지 않았다. 그래도 사용해보고 뜯어보면서 이런게 프레임워크고 libarary이구나 하는 것을 느꼈다.
DataBase 사용 경험 : DataBase의 스키마를 직접 설계한 것, 내가 만든 프로그램이랑 DataBases랑 연결을 맺어 정보를 주고 받는 것을 처음해봤다. 기업에서 하는 서비스에 비하면 아주 간단한 연결들이겠지만, 나에게는 매우 값진 경험이었다. 앞으로 데이터베이스에 대해 더 많이 학습해봐야겠다.
좋은 코드 : 좋은 코드, 클린코드가 무엇인지에 대해 고민하고 적용해봤다. 그 결과로, 3주차 코드리뷰 때 “저번보다 보기 좋아졌다”는 칭찬의 피드백을 받을 수 있었다. 그리고 포트폴리오 때문에 내가 예전에 짰던 코드를 꺼내봤는데,,, 정말… 지금은 많이 좋아진 것 같다 ㅎㅎ 앞으로도 좋은 코드에 대해서 계속해서 고민하고, 관련 자료와 책을 찾아봐야겠다.
이제야 깨달은 것
왜 이렇게 구현했어요?
실장님이 코드리뷰 해주실 때, 왜 이렇게 구현했냐는 물음에 대해 오해했다. 지금 나는 배우는 입장이고 게임 도메인에 대해서도 모르고 실제 서비스와 가까운 프로그래밍을 해본 것이 처음이었다. 그래서 내가 했던 것들이 다 맞다는 확신은 없었다. 그래서 실장님이 왜 이렇게 구현했냐고 하신 말씀이 “내가 틀렸고, 그렇게 하면 안된다”는 말씀으로 생각해버렸다. 근데 실장님이 이런 질문에 가만이 있으면 안된다고 하시면서 조언을 해주셨다. 왜 이렇게 구현했냐는 물음은 나의 생각과 구현의 근거를 묻는 거였다. 처음부터 내가 틀렸다고 생각하지 말고, 내 생각을 충분히 말씀 드릴걸 그랬다.
욕심은 좀 더 나중에 부릴 걸
이번 서버캠퍼스에서의 가장 큰 목표는 “성장”이었다. 그래서 제시된 기획안을 한 단계 더 발전시켜서 구현해봤다. 그래서 시간이 좀 더 걸리고 이런 저런 시행착오도 있었던 것 같다. 그리고, 내 마음대로 발전시킨 기획안 내용은 나 혼자만의 것으로 공유가 안되어 있었기 때문에, 코드리뷰 해주시는 실장님 입장에서는 정확한 리뷰를 해주실 수 없게 된 것이었다. 일단 주어진대로만 최대한 간단하게 만들고, 그 이후에 덧붙여볼 걸 하는 생각이 들었다.
시간을 들여서 winform으로라도 클라이언트를 만들어볼걸
내가 만든 api가 제대로 동작하는지 확인하기 위해서 postman으로 http 요청을 주고 받았다. 그렇게 할 때 route를 써주고 그에 맞는 body data를 넣어주는 시간들이 꽤나 오래 걸렸다. 테스트 할 때 소모된 시간들을 모았다면 winform으로 간단하게는 만들 수 있었을 것 같다는 생각을 했다.
앞으로 나에게 필요한 것
경험
설계를 잘못해서 전체를 뒤집고, 시간이 오래 걸린 이유는 결국 경험이 부족해서인 것 같다는 생각을 했다. 교육 과정 중에 많이 들었던 피드백 중 하나는 “통상적으로 이렇게 하지 않는다”는 말이다. 게임 서버를 잘 몰랐고, 아직 통상적인게 무엇인지 몰라서 자잘한 어려움들이 있었던 것 같다. 앞으로 경험을 쌓으면서
내 생각을 충분히 말할 수 있는 자신감
코드리뷰 받을 때, 실장님 앞에서 왜 이렇게 작아졌는지 모르겠다… 충분히 생각하고 고려해서 짠 코드고 내가 만들 코드들이니, 자신감을 갖고 내 주장을 충분히 말하자. 아무 생각 없이 짠 코드가 아니니, 자신감을 갖고 틀리더라도 나의 주관을 확실하게 전달하자.
더 하고 싶은 것들
여러 머신으로 쪼개보기
mysql 머신, redis 머신, WebAPI 머신, 접근하는 클라이언트 머신을 따로따로 돌려보고 싶다.
유닛 테스트
유닛테스트를 현업에서 어떤식으로 한다고 말씀을 듣긴 했는데, 정확하게 이해하지 못했다. 관련하여 내용을 찾아보고 시도해봐야겠다.
클라이언트
WebAPI 서버를 구현했는데, 기능 테스트를 단순히 postman으로 밖에 못하고 있다. route과 request body를 그때그때 수동으로 설정해주면서 테스트를 해서 매우 어려웠다. 내가 만든 게임 서버가 잘 동작한다는 것을 보여줄 수 있을 정도의 클라이언트는 만들어보자
데이터베이스 공부
아직은 데이터베이스를 제대로 학습해본적이 없다. 이번에 개발해보면서 데이터베이스의 중요성을 크게 느꼈으니 데이터베이스를 충분히 공부해보자. (키워드 : 설계, 인덱스, 세컨더리 인덱스, 조인, 어떻게 동작하는지, 엔진별 차이, 실행계획 등)
Last updated