만약 C언어 코딩도장 책을 다 끝내고 실력을 올리고 싶다면
C언어 문제집을 풀어야할까요,
아니면
C언어로 무언가를 만드는 노력을 해야할까요??
둘 다 해보는 게 좋습니다.
다만, 목적성이 필요합니다.
취업을 위한 코딩 공부라면 어느 직종에 취업하고 싶은가에 따라 학습을 결정해야 합니다.
대체로 네카라쿠배 같은 빅테크 기업은 알고리즘, 코딩 테스트 위주로 선발하기 때문에 알고리즘과 코딩 테스트 위주로 공부하는 게 좋습니다. 코딩 테스트를 위한 언어는 C++, 파이썬이 좋습니다.
언어는 도구이므로 보통 3-5개 정도의 언어를 학습하는 게 좋습니다. 폴리글랏 프로그래밍이라고 하고, 대부분의 프로그래머는 3-5개 정도의 언어는 잘 알고 있습니다.
파이썬, 자바, 자바스크립트가 필수 3종 언어에 해당할 것입니다.
C++는 게임 업계 취업을 위해서 학습하지만, 다른 분야에서는 많이 쓰이지는 않습니다.
C 언어는 임베디드 업계지만, 안드로이드로 많이 넘어갔으므로 자바가 메인입니다. 아직도 저수준 하드웨어에서는 C 언어를 사용하지만, 인력 수요 자체가 많지는 않습니다. C 언어는 비교적 간단한 문법으로 된 언어이므로 C++, 자바 등의 언어를 공부하기 전에 입문 언어로 이용됩니다.
스타트업에서 일할 기회를 찾는다면 백엔드, 프런트엔드 구분도 있지만, 공통은 자바스크립트(실제로는 타입스크립트를 더 많이 사용)입니다. 그위에 리액트 같은 프레임워크 사용을 익혀야 합니다.
자바는 안드로이드 앱 개발이나 SI쪽에서는 스프링 프레임워크 학습으로 넘어갑니다.
빅테크는 컴퓨터 공학의 기초와 알고리즘/코딩 테스트만 집중적으로 파야 합니다. 코테에 떨어질 실력이면 면접 기회 자체가 없습니다.
면접에서는 네트워크, 운영체제, 자료구조, HTTP 프로토콜 같은 컴퓨터 공학에서 접하는 주제들을 더 많이 물어봅니다만, 이건 면접 후기로 많이 공유되고 있을 것입니다.
대기업은 똑똑한 사람들을 선발해서 가르치면 된다이고, 교육할 여력이 있습니다. 스타트업을 비롯한 중소기업은 교육할 여력은 없고, 지금 당장 일할 수 있는 사람을 뽑는 경향이 있습니다.
물론, 네이버의 초봉이 얼마더라라고 하지만, 대부분은 스타트업에서 이직하면서 5년씩 경력을 쌓고, 코테를 준비하면서 지원하고 합격하는 것이므로 '경력 같은 신입'이 채용되기는 합니다. SKY 대학 출신이어서 코테 중심으로 빅테크 취업 코스를 타거나 SKY가 아니면 스타트업부터 경력을 쌓으면서 코테 준비하면서 채용 공고 나올 때마다 시도하는 두 가지 루트가 일반적입니다.
어쨌거나 눈으로 볼 수 있는 계량적인 지표가 필요합니다. 1순위는 학벌이고, 2순위는 코테를 비롯한 실력입니다. 코테 또는 과제 중심 선발을 전혀 하지 않는 회사도 있지만, 결국 더 나은 처우와 연봉을 위해 이직한다면 다시 코테에서 막히게 됩니다.
회사의 처우에 따라 1, 2, 3급으로 나눈다면 코테도 없는 3급에서 시작해도 상관없으나 평생 3급에서 낮은 연봉과 처우를 원하는 게 아니라면 올라가야 합니다.
학습론은 송아지 사육론이 있고, 로봇 조립론이 있습니다.
컴퓨터 공학과는 보통 로봇 조립론입니다. 각각의 이론을 로봇 팔, 다리로 생각하고, 마지막 4학년 졸업 때 졸작에서 다 결합하면 멋진 로봇을 만들 수 있다는 생각이지만, 실제로는 그게 잘 안 됩니다. 그래서 작은 프로그램이라도 직접 만들어보라는 얘기를 합니다.
송아지 사육론은 송아지를 키우다보면 송아지마다 부족한 부분이 있고, 그때마다 그걸 보완하라는 것입니다. 근육이 부족하면 운동도 시키고, 영양이 부족하면 영양을 공급하고, 단백질이 부족하면 단백질을 더 먹이고, 소화가 약하면 죽을 쑤어서 먹이자라는 방식입니다.
https://cstack.github.io/db_tutorial/parts/part1.html
C 언어로 SQLite 데이터베이스를 직접 만들어보는 프로그램입니다.
이런 것을 작성할 수 있으려면 알고리즘과 자료구조에 대해 잘 알아야 합니다. 현대 데이터베이스는 B-Tree 자료구조를 사용합니다. B-Tree를 구현하는 코드는 제시되겠지만, B-Tree에 대한 이론적인 배경 지식이 없으면 이해가 안 될 것입니다.
SQL 쿼리를 작성하면 이를 해석해서 결과를 돌려줘야 하므로 파서 작성이 필요합니다. 보통은 <프로그래밍 언어론>에서 배우는 부분이기도 합니다.
작은 프로그램을 만들어보면서 B-Tree를 모르니까 B-Tree를 검색하고 유튜브나 다양한 자료를 보고 이것을 공부하고, SQLite 데이터베이스를 작성해보는 것도 공부 방법입니다.
그러면서 알고리즘과 자료구조 책을 공부하는 게 좋겠지요. 다양한 자료구조에 대한 이해, 어떤 문제에 어떤 자료구조를 사용하는 게 좋은지 학습할 수 있습니다.
더 일반적으로는 메모장에 저장한 파일의 한글 인코딩은 EUC-KR입니다. 이걸 UTF-8 인코딩으로 변환하는 프로그램을 작성해볼 수도 있습니다. 그 반대로 변환하는 프로그램도 작성해볼 수 있습니다. 이런 간단한 프로그램으로도 코딩 연습은 될 겁니다. 그러나 취업에는 아무 도움이 되지 않습니다.
공부에는 목적성이 중요합니다. 나의 공부는 궁극의 도를 깨닫기 위함이지, 생계를 위한 것이 아니다... 라는 <허생전>의 허생이 아니라면 말이죠.
SKY 위주로 선발하는 빅테크도 코테 성적이 좋으면 충분히 열려 있으니 처음부터 경쟁하면서 빅테크 취업을 노리겠다도 방법이 될 수 있습니다.
https://www.acmicpc.net/
백준 온라인에서 알고리즘 문제를 접할 수 있습니다. C 언어로 풀어서 제출할 수도 있습니다. 다만, C 언어는 원시적이라서 기본 자료구조도 직접 구현해야 하므로 잘 사용하지 않습니다. 기본 자료구조가 제공되는 C++을 많이 사용하는 이유죠.
채점 현황만 봐도 파이썬, 자바, C++이 많습니다.
게임 개발자가 목적이고 취업도 그쪽이라면 C++과 C#(유니티)이 메인입니다.
학습을 위한 학습을 하지 말고, 내가 추구하는 목표에 따라 어떤 학습을 할지 결정하세요.