신입 개발자가 가져야할 기초 지식

이태현·2023년 10월 28일
2
post-thumbnail

2023 넥토리얼에서 오윤호 개발자님의 강연 내용을 발췌하여 정리하였다.
자세한 강연 내용은 넥슨: 채용의 나라 방문 후기에 자세히 정리되어있다.

기초 지식

1. 삶에 대한 상식

기초 지식이라고 하면 가장 중요한 것은 삷에대한 상식이다. 이것이 문제가 되는 경우도 꽤나 있다.(아마 인성에 대한 부분을 강조하신 것으로 보인다.)

2. CS 기본지식

사실 "코딩만 잘하면 되는거 아니야?"라고 생각할 수도 있지만, 어떤 문제는 논리적인 오류가 아닌 제약 상황에서 발생하는 경우가 생각보다 많다.
예를 들어, 모바일 환경에서 게임을 개발하는 것은 윈도우 환경에서 개발하는 것보다 많이 다르다. 하드웨어적 제한사항이 많이 발생한다.

이때, 그저 "이거 안되는데요."라고 하는 사람이 될것인가?
이게 왜 안되는지 찾아내서 수정하는 사람이 될것인가?는 기본 CS 지식에서부터 정해진다.

CS 지식이 충분하다면 개발을 시작하기 전에, 성능적 한계를 미리 설정하고, 그에 맞는 시스템을 설계할 수 있다.

3. 자료구조, 알고리즘

자료구조는 공부 할 때, 정말 실전에 사용될까 의문을 가지지만 성능에 극명한 차이를 가져다 준다. 그리고, C++의 STL에 대한 충분한 이해, C#의 Container에 대한 충분한 이해가 필요하다. 단순히 STL을 사용할 줄 안다 라는 것보다는 동작 원리를 깊게 이해하는 것이 필요하다.

4. 그래픽스

그래픽스 관련 지식은 크게 요구되지는 않는다. 클라이언트 프로그래머 같은 경우도, 개발 초기에는 그래픽스를 다룰 수도 있지만, 일정 궤도 이상 올라간다면, 일부 코어프로그래머를 제외하고는 더이상 다루지 않게 된다. 물론 그래픽스 지식이 없는 것보다는 있는 것이 도움이 되기는 함.

5. 병렬 처리

서버 개발자에게는 "더 확실한 CS지식"이 요구된다. 스레드를 몇개 돌릴 것이냐부터 시작하여, 관리를 어떻게 할 것이냐 모두 CS지식에 포함되기 때문이다.
추가적으로 병렬 처리 경험이 있다면 확실히 도움이 될 것이다.

6. 고급 개념

고급 개념에 대한 예로를 디자인 패턴이 있다. 사실 신입 개발자에게 이정도의 개념을 요구하지는 않는다. 신입 개발에게 요구하는 것은 "성장"이다. 기본적으로 2~3년 뒤에 이러한 것들을 적용할 수 있기를 기대한다.

7. 언어의 이해(C++, C#)

모든 프로젝트에서 기본적으로 요구하는 사항이며, C++, C#등 언어의 기초에 대한 이해는 거의 "완벽" 요구한다.
언어를 공부 할 때, CS지식이 없다면 높은 수준의 이해를 이끌어 내기는 힘들다.

이 부분에서 전공자, 비전공자 이야기를 안할 수가 없다. 전공자는 이미 학교에서 CS지식을 어느정도 쌓았기 때문에 완벽하지 않아도, "이게 그거구나"라며 기억해내는 경우가 많다. 그래서 비전공자에게는 더 많은 시간이 필요하다.

유니티를 배우며 C#을 시작하면,
C#을 아는 것이 아니라 "유니티의 C#"을 아는 것이다.

"C#"과 "유니티의 C#"은 다른 것이며, C#을 공부하고 유니티의 C#의 제약사항이 무엇인지 아는 것이 중요하다.

8. DB

전공 과목에 있는 Database에 대한 지식이면 충분하다.
조직에 DB에 특화된 프로그래머가 있는 경우도 있고, DBA의 도움을 받기도 한다.

9. 소통능력

인간의 인터페이스는 "말"과 "글"

가장 중요한 능력 중 하나이며, 당락에 큰 영향을 주기도 한다.
모든 업무는 이메일과 이슈를 발급받아서 처리하며, 기획자와 얘기하고, 디자이너와 얘기하고, 전혀 관련이 없을 것 같은 사업 분야와도 얘기하게 된다.
이러한 사람들의 공통점은 개발에 기술적 배경이 없다는 것입니다. 따라서 다른 분야의 사람들과 소통할 수 있는 충분한 자세를 가지는 것이 중요하다.

소통능력은 면접 시에도 중요한 능력이다.
면접관이 A를 물어보았을 때, B를 대답하는 사람이 있다. 이러한 경우는 얼마나 알고있냐를 떠나서, 소통 능력이 부족하다고 판단하게 된다. 소통 능력이 떨어지는 사람은 어떤 팀에서도 원하지 않는다. 질문을 들었을 떄, 핵심 요지를 빠르게 캐치하고, 내가 대답할 수 있는 것을 찾아내는 것도 능력이다.

프로그래머는 기획자의 요청사항을 최대한 구현하는 뱡향으로 나아가야 한다.

어떤 프로그래머는 기획자의 요청사항을 못한다고 빼는 경우가 있는데, 이렇한 자세는 회사가 요구하는 자세가 아니다.

팀프로젝트를 진행하면, 의도치 않게 오해가 발생하고, 다툼이 생길 수 있다. 이러한 과정이 모두 협업하는데 좋은 경험으로 작용한다.
그렇기 때문에 팀 프로젝트 경험을 조금더 높게 평가하는 이유이다.

면접 때, 팀 프로젝트를 하면서 힘들었던 경험이 없었는지 묻는 질문은, 이러한 경험을 묻기 위해서이다. 이 질문에 힘들었던 점이 한번도 없다고 대답하는 것은 "이 사람은 굉장히 긍정적이고, 포용하는 사람이었을거야"라기 보다는 "팀에 관심이 없는 사람이구나"라고 생각할 가능성이 크다

profile
할까말까 고민된다면, 일단 시작하자!

0개의 댓글