어떤 언어를 써야 좋냐 어떤 직군이 전망이 좋냐 보단, 개발자를 준비해야 한다면 반드시 공통적으로 공부해야하는 부분은 같다.
먼저, 필자는 6년 전에 게임 개발을 첫 공부로 시작해서 현재, 백엔드 개발자로 근무하고 있으며, 기본기는 게임이던 백엔드던, 프론트던, AI 모듈 개발이던 크게 다르지 않았다.
다만, 필자의 경우 개발자가 되기 위해서 무엇을 배워야 할지 순서도 몰라 중구난방으로 공부하다가.
기본기가 매우 부족하다는 것을 뒤늦게 깨닫고, 아래 기술할 공부 순서대로 다시 새로 공부했다.
그럼 그 기본기를 익히기 위해선 어떤 공부를 해야 할지에 대해 적어보고자 한다.
1. 문법 공부.
언어는 아무거나 쉬운 것 부터 시작하라고 보통 하던데, 필자는 무조건 C++로 시작하는 것을 추천한다.
이유라고 한다면 추후에 배울 C++의 포인터 개념 때문인데. 이 개념을 이해하기 위해선 Memory에 대한 이해가 쌓일 것이고 차후 다른 언어에서의 Memory 관리에 대해 어떤 차이점이 있는지를 더 확실히 깨우칠 수 있기 때문이다.
또, 차후 언급할 자료구조를 공부할 때, Linked List와 동적 배열에 대한 차이를 머리로 깨우칠 수 있다.
특히나 게임 개발자를 지망한다면 C++은 무조건 필수라 볼 수 있다.
문법 공부는 솔직히 별거 없다. 아니 대부분의 프로그래밍 언어를 새로 배운다거나 공부할 땐,
변수에 대해 이해하고, I/O ( 입출력 ) 을 구현 해보고,반복문과 조건문에 대해 이해해보고
함수를 사용하고, 해당 언어의 자주 사용 되는 표준 라이브러리를 써보는 것으로 시작한다.
C++로 시작했다면 나아가 포인터 개념에 대해 배운다. 보통, 포인터를 배울 때 통곡의 벽이라고
많은 사람이 이곳에서 어려워하고 포기한다.
걱정마라 필자도 포인터를 배웠을 때 당장 이해하지 못했다가, 어셈블리 언어를 기초만 배우고나서 개념을 잡았다.
그리고 어셈과 C++에 대한 인강은 솔직히 필자 기준으로 인프런의 루키스 강의를 추천한다. 딱 Part1만 봐도 C++에 대한
기본 문법 개념은 모두 이해할 수 있다.
2. 자료구조 알고리즘
문법을 익혔다면 싫을 수 있겠지만 자료구조와 알고리즘을 공부해야 한다. 솔직히 필자도 이걸 처음 공부할 때 개노잼이라
생각했다. 일단 자료구조는 C++을 확실히 익혀뒀다면, 생각보다 쉽다.
C++에 제공되는 STL 컨테이너를 한 번씩 사용해보고 그 원리를 하나 씩 파악하면 된다.
종류가 이렇게 많은데 실질적으로, 다 알아두면 좋겠지만 핵심 몇 가지를 빼면 어차피 알고리즘을 공부할 때 배우게 된다.
핵심은 동적 배열 Array ( Vector ) Linked List , Stack , Queue , Map, Tree 정도만 알아둬도 된다.
특히나 C++을 계속 강조하는 이유는 Vector와 Linked List의 차이에 대한 내용이 면접에서도 기본중에 기본기를 묻는 질문으로 자주 나오는데 이 때, 메모리 구조에 대한 이해 없이 외운대로 말하는 것과
C++을 익히고 메모리 구조에 대해 이해하면 이 둘의 차이점은 잊을래야 잊을 수 가 없다.
그 이후 알고리즘인데, 필자는 예전에 알고리즘도 모르고 코딩 테스트 문제를 풀다가.
문제가 뭔 말인지 이해도 안되서 한 문제도 풀지 못했다.
근데 이 알고리즘이란거 자체가 수학 공식처럼, 몇 개만 이해하고 외워두면 되었고 그걸 잘 이해하고 응용하는 지를
테스트 하는게 코테라고 볼 수 있겠다.
그리고 이 코테는 취업을 위해선 반드시 준비해야 한다.
여하튼 알고리즘과 코테를 묶어서 어떤 유형의 문제들이 출제되는지 알아야 한다.
solved.ac 라고 자신이 코테를 푼 만큼 티어를 보여준다.
보통 코테를 뚫기 위해선 5단계정도 알아두고 풀면 좋다고한다. 뭔가 배워야할게 많아보이지만
근데 따지고보면 별거 없다.
1단계는 그냥 프로그래밍 할 줄아냐? 정도의 문제고
2 단계 부터 본격적으로 알고리즘다운 문제가 나오는데.
STL 라이브러리 의존 하지 않고 스택,큐,덱 직접 구현해볼 줄 아냐?
( 즉 이론적으로 이해하고 코드로 구현가능한지 )
정렬 알고리즘에 대해 알고 있냐?
완탐과 이분탐색에 대해 알고있고 응용해서 프로그래밍이 가능한지를 묻는 문제가 중심이다.
3 단계 부터, DP, BFS/DFS, 우선순위 큐, 분할 정복 등이 나온다 ( 이 부분이 핵심이다 )
특히나 BFS DFS ( 그래프 ) 문제와 분할 정복 알고리즘은 꼭꼭 많이 풀어보도록 하자.
3. 비동기 프로그래밍
이후 부턴, 이 비동기 프로그래밍에 대한 이해를 해야한다. 실무에서 가장 많이 쓰이며
해당 비동기에 대한 개념,이론,구현 모두 매우매우 중요하다.
뭐 대충 왜 필요한지를 살펴보면 어떤 서버에 요청을 보내고 나서, 한 없이 요청의 결과가
올 때 까지, 서비스가 멈춰버리면 안되니깐 필요한 개념이다.
그리고 이 비동기 프로그래밍을 이해하고 나서 멀티 스레드에 대한 공부를 시작하면
저절로 멀티 프로세스와의 차이점과 스레드의 동작 원리 CPU의 컨텍스트 스위칭에 대해
이해하게 될거다. 이 부분도 면접에서 자주 출제된다.
4. 프레임워크 공부
자 3단계 까지 왔으면 기본기는 다 땐 거다. 이제부터 프레임워크를 공부하던 자신이 배우고 싶은 분야를 공부하면 된다.
게임이건 프론트건 백이건 AI건, 뭘 배워도 이젠 어렵지 않을 것이다.
'Unity' 카테고리의 다른 글
그래픽스 용어를 알아보자 (1) | 2024.04.24 |
---|---|
[LeetCode] Arrays 101 (0) | 2024.04.02 |
01. 게임톤 개발 일지 카메라 구현 (1/5) (0) | 2022.07.14 |