이건 내 알고리즘에 떠서 빡이 돌아서 쓰는 글인데, 최대한 감정 자제하고 써보겠습니다. 아니 ㅆㅂ 학교 다시면서 선호 비선호가 있을 수는 있어도 이걸 가지고 티어표라고 하면서 유튜브 영상을 만들고는 들을 필요 없다는 소리같은 걸 하고 있다고? 게다가 이딴 헛소리 하는 유튜버가 한둘도 아니야??? 이건 뭔 쓰레기 논리야!!!!
나는 왜 빡쳐서 이 글을 쓰고 있는가
유튜브와 커뮤니티에 떠도는 “컴공 과목 티어표” 콘텐츠는 신입생의 커리어를 구조적으로 위협하는 잘못된 지도다. 이산수학은 “버려도 되는 과목”, 오토마타는 “시간낭비”라고 분류하는 이 콘텐츠들은 대부분 경험이 제한된 학부생이나 주니어 개발자가 만들고, 취업 불안에 시달리는 신입생이 소비한다. 문제는 이들이 삭제하라고 권하는 과목들이 바로 시니어 엔지니어와 코더를 가르는 핵심 지식이라는 점이다. ACM/IEEE/AAAI가 6대륙 90명 이상의 전문가와 함께 50년 넘게 다듬어온 CS 커리큘럼에는 “불필요한 과목”이란 존재하지 않는다. 내가 배울 당시에 이게 맞아? 라고 생각할 뿐이다.
이 콘텐츠들은 실제로 어떻게 생겼는가
“컴공 과목 티어표”라는 정확한 게임식 S/A/B/C/F 포맷의 콘텐츠는 아직 주류는 아니지만, 기능적으로 동일한 “과목 분류/순위화” 콘텐츠는 한국 IT 생태계 전반에 이미 깊이 뿌리내려 있다. 개인 개발자 블로그, Medium, Brunch, OKKY, 오르비, 디시인사이드, KLDP 등에서 “들어야 할 과목 vs 버려도 되는 과목”이라는 이분법적 프레이밍이 반복적으로 등장한다.
구체적 사례를 보면, 한 개발자 블로그(matthew.kr)는 오토마타·형식언어를 “시간적 여유가 없으면 pass해도 좋을 과목… 프로그래머로서 성장하는 데 전혀 지장이 없다”라고 단언했고, Medium의 한 글은 “필요 없는 과목도 있고 꼭 들어야 하는 과목도 있다… 개발자로서의 덕목만 따지자면 모두 들을 필요는 없었다”라고 서술했다. 오르비에서 높은 조회수를 기록한 카이스트 학생의 글은 “도대체 이걸 배워서 어디에 써먹을까 싶은 수학적·이론적 과목들이 대부분”이라는 프레이밍으로 입시생에게 전공 과목에 대한 선입견을 심었다.
이 콘텐츠들이 사용하는 언어 패턴은 일관된다. “취업에 필요없는 과목”, “버려도 되는 과목”, “꿀과목”, “이론은 쓸모없다”가 핵심 키워드다. 주로 높은 순위를 받는 과목은 자료구조, 알고리즘, 데이터베이스처럼 코딩테스트나 실무와 직결되는 것들이고, 이산수학, 오토마타, 컴파일러, 수치해석, 선형대수 등 “어렵고 추상적인” 과목은 하위 티어로 밀려난다. 문제는 이 “하위 티어” 과목들이야말로 컴퓨터과학의 뼈대라는 것이다.
50년의 진화를 거친 커리큘럼을 학부생이 재단하는 아이러니
대학 CS 커리큘럼은 즉흥적 구성이 아니다. ACM(미국컴퓨터학회)과 IEEE Computer Society, AAAI가 공동 개발한 CS2023 커리큘럼 가이드라인은 1968년 첫 버전부터 50년 이상의 반복적 검증을 거쳐 왔다. 6대륙 90명 이상의 전문가가 참여하고 75건 이상의 설문조사를 통해 산업계와 학계의 요구를 반영한 결과물이다. 이 가이드라인은 2023년 개정에서 “지식 모델”에서 “역량 모델”로 전환했는데, 이는 졸업생이 현업에서 수행할 과제로부터 역산하여 필요한 지식을 도출한다는 뜻이다. 즉 커리큘럼의 모든 과목은 “현업에서 이게 필요하니까” 역추적되어 존재한다.
각 과목이 존재하는 이유는 명확하다. 이산수학은 논리, 그래프 이론, 조합론, 정수론을 다루는데, 이는 알고리즘 분석의 기초이자 암호학(RSA), 데이터베이스(SQL은 본질적으로 술어논리), 네트워크(라우팅은 그래프 문제)의 수학적 기반이다. 한 한국 개발자의 표현이 적확하다: “이산수학은 정말 완전 기초에 해당하는 과목이기 때문에 필요성을 이해하기가 쉽지 않다. 마치 공기와 같아서 자신도 모르게 이미 쓰고 있다.” 컴퓨터구조는 캐시 계층, 메모리 레이아웃, 명령어 파이프라인을 이해시키는데, 이 없이는 왜 2차원 배열을 가로로 순회하는 것과 세로로 순회하는 것의 성능이 극적으로 다른지 영원히 알 수 없다. 운영체제는 프로세스 관리, 가상 메모리, 동기화를 가르치는데, Docker와 Kubernetes의 근간인 프로세스 격리, 네임스페이스, cgroups가 모두 여기서 나온다. 컴파일러에 대해 한 개발자는 “자동차 엔진에 해당한다. 컴퓨터공학도라면 엔진을 배워야 한다”고 표현했다.
TeachYourselfCS.com의 프레이밍이 핵심을 찌른다: “소프트웨어 엔지니어는 두 종류가 있다. 컴퓨터과학을 충분히 이해해서 도전적이고 혁신적인 일을 하는 사람과, 몇 가지 고수준 도구에 익숙해서 그럭저럭 해나가는 사람.” 둘 다 초기 커리어에서는 비슷한 연봉을 받지만, Type 1 엔지니어만이 시간이 지남에 따라 더 보람 있고 보수가 좋은 일로 나아간다.
“추상화는 새는 법이다” — 기초를 스킵하면 반드시 대가를 치른다
Stack Overflow 공동 창업자 Joel Spolsky가 2002년에 제시한 “새는 추상화의 법칙(The Law of Leaky Abstractions)”은 이 논의의 이론적 토대를 제공한다. “모든 비자명한 추상화는 어느 정도 샌다”는 이 법칙은, 아무리 잘 만든 고수준 도구도 반드시 하위 레벨의 복잡성이 표면으로 올라오는 순간이 있음을 말한다. SQL이 좋은 예다. 논리적으로 동일한 SQL 쿼리 두 개가 성능에서 수천 배 차이가 날 수 있다. B-tree 인덱스와 쿼리 플랜을 모르면 이 차이의 원인을 영원히 이해할 수 없다. Spolsky의 결론은 냉혹하다: “추상화는 작업 시간을 절약해 주지만, 학습 시간을 절약해 주지는 않는다.”
한국 현업에서의 실제 피해 사례는 이 법칙을 생생하게 증명한다. 비전공 출신 개발자 Eddy Song은 첫 출근 날 CTO에게 시스템 프로그래밍 책 2권을 건네받은 경험을 회고하며 이렇게 적었다: “‘Too many open files’ 에러가 떴다. 무슨 소리지? 시스템 프로그래밍을 배웠다면 리눅스에서는 네트워크 통신 인터페이스도 파일 형태이기에 파일을 여는 시스템 콜을 사용한다는 것을 알고 있었을 것이다.” 블라인드의 한 백엔드 현직자는 “운영체제를 이해 못하면 OS 문제로 발생한 장애에 대처가 불가능하다”고 증언했고, 네이버 현직자는 “CS 지식을 알고 모르고에 따라 접근하는 깊이가 달라진다”고 단언했다. 패스트캠퍼스 인터뷰에서 한 개발자는 핵심을 요약했다: “주니어일 때는 컴공 이해가 없어도 큰 문제가 없지만, 대규모 서비스를 설계하는 단계로 넘어가면 컴퓨터공학적 기초가 필수”라고.
글로벌 사례도 동일한 패턴을 보인다. Meta 스태프 엔지니어 Pawel Kadluczka는 2005년 마이크로소프트에서 BFS 구현조차 못 했던 순간을 회고하며 “몇 초 만에 성공적인 소프트웨어 엔지니어에서 사기꾼이 됐다”고 고백했다. 그는 이후 “HTML/XML 문서는 트리, 키-값 저장소는 해시테이블, 카프카 토픽은 큐”라는 인식이 생기면서 낯선 시스템도 빠르게 이해하게 됐다고 증언한다. Uber 출신 Gergely Orosz는 자신의 블로그에서 Skype Xbox One 개발 시 DOM 트래버설(트리 순회), Skyscanner에서 항공 경로 최적화(가중 그래프의 최단경로 알고리즘), Uber에서 RIB 아키텍처(트리 기반 상태 관리)를 실제로 사용한 사례를 구체적으로 기록했다. 그의 결론: “자료구조와 알고리즘 지식은 ‘면접용’이 아니라, 빠르게 성장하는 혁신적 기업에서 실제로 손이 가는 것이다.”
한국 IT 기업들은 이미 기초를 검증하고 있다
“이론 과목은 취업에 불필요하다”는 티어표 콘텐츠의 주장은 한국 주요 IT 기업의 채용 프로세스와 정면으로 충돌한다. 삼성 SW 역량테스트는 매년 난이도가 상승하고 있으며, 2025년 상반기에는 “단순 알고리즘 풀이가 아니라 복잡한 상태 전이를 구현해야 하는 시뮬레이션 문제”가 주류였다. 세그먼트 트리, 트리 DP, 우선순위 큐 등 고급 자료구조가 빈번히 출제되며, LLM(ChatGPT, Claude)으로도 풀 수 없는 수준의 구현 문제가 포함된다. 이 시험을 통과하려면 자료구조와 알고리즘에 대한 깊은 이해가 전제된다.
카카오 공채는 더 직접적이다. 1차 코딩테스트 이후 별도의 CS 시험이 있으며, 이 시험에서 커트라인 미달 시 그대로 탈락한다. 면접에서는 자료구조, 운영체제, 네트워크, 데이터베이스 4과목이 집중 출제되며, 비전공자 합격자조차 “면접에서 정말 비중 있게 질문이 나오니 깊이 있게 공부하라”고 조언한다. 네이버 역시 “자기소개 → 이력검증 → IT 기술 검증 → 코딩 능력 검증” 순으로 면접을 진행하며, 한 지원자는 “CS 공부를 미리 해두지 않으면 면접에 닥쳐서 하기엔 양이 너무 많다”고 후회했다. 실제 기술면접 출제 문제를 보면 해시 테이블 충돌 해결법, 멀티프로세스 간 IPC, 뮤텍스와 세마포어, 가상 메모리와 페이지 폴트, B+tree 인덱스의 존재 이유, TCP 3-way/4-way 핸드셰이크 등 순수 CS 이론 문제가 핵심을 이룬다.
NHN 인사 담당자의 발언이 기업 측의 논리를 요약한다: “IT 산업은 신기술이 계속 나오기 때문에 학습능력이 중요하다. 전산학 기초가 부족하면 빠르게 배우기 어렵기 때문에 기본 개념이 확실히 잡힌 지원자를 선호한다.” Big Tech가 CS 기초를 면접에서 묻는 이유에 대해 Pawel Kadluczka는 세 가지를 들었다: 대형 기업은 수백 개의 동시 프로젝트를 운영하므로 어떤 스택이든 빠르게 적응하는 “대체 가능한(fungible)” 엔지니어가 필요하고, 특정 기술은 입사 후 교육할 수 있지만 기초 체력은 가르칠 수 없으며, 기초 지식이 실제로 성능에 직접적 영향을 미치기 때문이다.
조회수를 위해 복잡한 판단을 단순화하는 콘텐츠 구조
이 티어표 콘텐츠의 가장 근본적인 문제는 4년짜리 교육과정의 복잡한 상호의존성을 “들어야 할 것 vs 버려도 될 것”이라는 이분법으로 붕괴시킨다는 점이다. 과목 간에는 전제 관계의 사슬이 존재한다. 컴퓨터구조 → 운영체제 → 분산시스템, 이산수학 → 알고리즘 → 대부분의 CS 과목이라는 선후관계를 무시하고 개별 과목만 뜯어서 “필요/불필요”로 분류하는 것은 건물의 철근을 빼도 되는지 묻는 것과 같다.
콘텐츠 제작자의 배경이 이 문제를 증폭한다. 조사 결과, 가장 적극적으로 과목 분류 콘텐츠를 생산하는 층은 학부생에서 주니어 개발자(2~5년차)였다. 한 블로거는 스스로 “결국 나는 컴공과 학부생일 뿐”이라고 인정하면서도 오토마타를 “전혀 지장 없는” 과목으로 단언했다. 반면, 과목의 장기적 가치를 체감할 수 있는 시니어 개발자들은 정반대 입장이다. 클리앙의 한 시니어 개발자는 “이산수학이 선택이라고요? 저로선 이해가 가지 않는다”고 했고, GpgStudy의 한 개발자는 “일정 수준이 올라가면 기본 이론을 이해하지 못하면 벽에 부딪힌다”고 증언했다. KLDP의 명언이 이 간극을 정확히 포착한다: “코더가 되고 싶으면 (이산수학이) 필요없고, 프로그래머가 되고 싶으면 필수다.”
여기에 플랫폼의 알고리즘적 인센티브가 결합된다. “이 과목은 안 들어도 됩니다”, “컴공은 코딩을 배우는 곳이 아닙니다” 같은 도발적 제목은 취업 불안이 높은 대학생에게 강하게 어필하며 높은 조회수를 만든다. 패스트캠퍼스 같은 교육 플랫폼까지 “대학교 4년을 완벽 대체”, “19개 과목으로 CS+AI 지식 올킬!” 같은 마케팅으로 대학 교육의 비효율성 서사를 상업적으로 활용한다. 짧은 클립과 자극적 썸네일로 10분 안에 소비되는 이 콘텐츠가, 수십 년간 검증된 커리큘럼을 대체하는 판단 근거로 쓰이고 있다는 것이 구조적 문제의 핵심이다.
AI 시대에 기초는 오히려 더 중요해진다
“AI가 코드를 짜주는 시대에 이론이 뭔 필요냐”는 반론이 있을 수 있다. 현실은 정반대다. 한 CS 교육 분석가의 표현을 빌리면, “AI는 인간의 문법 지식 필요성을 제거했지만, 시스템 지식의 중요성을 증폭시켰다. 누구나 코드를 생성할 수 있게 되면, 그 코드가 좋은지 판별하는 능력이 가치 있는 기술이 된다.” 이는 Spolsky의 법칙의 연장이다. AI가 생성한 코드도 결국 실제 하드웨어 위에서 실행되고, 네트워크를 통해 통신하며, 운영체제의 자원 관리를 받는다. 추상화가 새는 순간 — 그리고 그 순간은 반드시 온다 — 하위 레벨을 이해하는 엔지니어만이 문제를 진단하고 해결할 수 있다.
CMU(카네기멜론)는 코딩 부트캠프와 CS 학위의 차이를 “How vs Why”로 요약한다: 부트캠프는 어떻게 코드를 짜는지를 가르치고, CS 학위는 왜 알고리즘이 작동하는지, 데이터 구조 뒤의 수학, 컴퓨터 아키텍처의 원리를 가르친다. Hacker News의 한 댓글이 이 논의의 핵심을 찔렀다: “누구나 프로그래밍은 독학할 수 있다. 그래서 CS 교육에서 ‘프로그래밍 가르치기’ 부분은 2~3학기면 끝난다. 기초 이론을 스스로 쌓기가 훨씬 어려운 이유는 단순하다 — 자신이 뭘 모르는지 모르기 때문이다.” 잡코리아의 한 현직자는 이를 한국 맥락으로 번역했다: “4년제에서 나와서 하는 노력보다 그 반대가 최소 10배는 더 힘듭니다.”
결론: 티어표? 그냥 시간표 구성을 잘 해라.
“과목 티어표” 콘텐츠의 근본 오류는 단기 취업이라는 렌즈로 장기 커리어를 위한 교육을 재단한다는 것이다. 주니어 시절에는 이론 과목의 가치가 보이지 않는다. 그래서 학부생과 주니어가 만든 티어표에서 이론 과목이 하위로 밀리는 것이다. 그러나 “학교에서 배운 것이 필요했다는 사실을, 배우지 않음으로써 배우게 된다”는 커뮤니티의 반복되는 증언이 보여주듯, 기초의 부재는 커리어의 천장으로 돌아온다. 이건 나중에 가서 쉽게 다시 할 수 있는 내용이 아니다.
신입생, 재학생이 기억해야 할 것은 세 가지다. 첫째, 커리큘럼을 설계한 사람들은 당신보다 이 분야를 오래 고민한 전문가이며, 과목 하나하나에는 이유가 있다. 둘째, 과목의 가치는 졸업 시점이 아니라 경력 10년 차에 드러나는데, 티어표를 만드는 사람은 그 시점을 아직 경험하지 못했다. 셋째, 추상화는 반드시 새고, 기초를 모르면 그 새는 지점에서 멈추게 된다. “이산수학이 뭔 필요야”라고 묻기 전에, 그 질문에 답할 자격이 있는 사람이 누구인지부터 생각해야 한다.
잡소리 추가
이런 내 글을 깔 사람도 많을꺼다. 근데…. 그런데…. 저런 것들 하나하나 쌓이면 그냥 it 안하고 나가더라. 아니면 평생 코더 레벨에서만 머물거나.
난 프로그래머랑 코더는 명백히 구분된다고 본다. 내가 지금 있는 회사가 it 컨설팅 회사라 그런지 그런 부류에 대한 구분이 더더욱 명확하더라. 기술만 운운하면서 정작 보면 신규 코딩 스킬 같은 거에나 혈연하고 있는… 문제 해결이나 그런 기술하고는 연이 먼 그런 코더들이 확실하게 존재한다. 그리고 그런 부류는 일단 연봉이 낮다부터 해서 별별 소리 하던 것들이 예전이나 지금이나 존재한다는 걸… 그리고 저런 게 코더 양산 과정이 되는 것처럼 보인다. 그리고 그런 건 ai한테 밀려날꺼다.
그런 상황이 보이는 마당에 저딴 걸로 지들 강의 팔아먹고 하는 거에 이용하거나, 유튜브나 블로그 조회수 빨아먹으면서 구독자 늘려가며 자기가 대단한 사람인척 하는 게 꼴보기 싫다. 저런 놈들한테 놀아나서 뭐하는 짓이야.
참고 출처
국제 학술·교육 기관
- ACM / IEEE Computer Society / AAAI — Computer Science Curricula 2023 (CS2023) https://ieeecs-media.computer.org/media/education/reports/CS2023.pdf
- ACM — CS2023 공식 발표 https://www.acm.org/media-center/2024/june/cs-2023
- ACM CSED — CS2023 Curricula Guidelines and Computer Science Accreditation (ICACIT2024) https://csed.acm.org/wp-content/uploads/2024/08/ICACIT2024.pdf
- Carnegie Mellon University — Coding Bootcamps vs. Degree: Which Path is Right for You? https://bootcamps.cs.cmu.edu/blog/coding-bootcamp-vs-degree
- Teach Yourself Computer Science https://teachyourselfcs.com/
핵심 참고 아티클 (영문)
- Joel Spolsky — The Law of Leaky Abstractions (Joel on Software, 2002) https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/
- Gergely Orosz (The Pragmatic Engineer) — Data Structures & Algorithms I Used Working at Tech Companies https://blog.pragmaticengineer.com/data-structures-and-algorithms-i-actually-used-day-to-day/
- Pawel Kadluczka (DEV Community) — Computer Science fundamentals are still important https://dev.to/moozzyk/computer-science-fundamentals-are-still-important-5h5i
- Itamar Tati (DEV Community) — Why You Should Just Study Computer Science: Regrets of a Self-Taught Software Engineer https://dev.to/itamartati/why-you-should-just-study-computer-science-regrets-of-a-self-taught-software-engineer-15f
- Karim Fatehi (Medium) — Why top software companies ask CS fundamentals in tech interviews? https://medium.com/electronicthoughts/why-top-software-companies-ask-cs-fundamentals-in-tech-interviews-c6bde2c3cf7
- Hacker News — What Computer Science Programs Should Teach (토론) https://news.ycombinator.com/item?id=31201625
- Wikipedia — Leaky abstraction https://en.wikipedia.org/wiki/Leaky_abstraction
한국어 커뮤니티 및 개발자 아티클
- matthew.kr — 컴퓨터 공학부 학부생이 배우는 과목에 대한 단상(~2학년까지) https://matthew.kr/컴퓨터-공학부-학부생이-배우는-과목에-대한-단상2학/
- Medium (배진호) — 수능 끝난 입시생을 위한 컴공 커리큘럼 쪼개기 https://medium.com/@baejinho/수능-끝난-입시생을-위한-컴공-커리큘럼-쪼개기-4cf8ec9f226e
- Brunch (toughrogrammer) — 개념 정리 – (1) 이산 수학 편 https://brunch.co.kr/@toughrogrammer/8
- Velog (eddy_song) — 왜 운영체제, 시스템 프로그래밍을 공부해야 하는가 https://velog.io/@eddy_song/system-programming-study
- 한빛미디어 — 컴퓨터 구조와 운영체제를 알아야 하는 이유 https://hongong.hanbit.co.kr/컴퓨터-구조와-운영체제를-알아야-하는-이유/
- KLDP — 컴파일러 과목을 배우는 이유가 뭔가요? https://kldp.org/node/125469
- Clien — 컴공 필수 과목 뭐라고 생각하시나요? https://www.clien.net/service/board/park/18031379
- Clien — 컴공에서의 수치해석, 이산수학의 중요성 https://www.clien.net/service/board/kin/104843
- GpgStudy 포럼 — 대학에서 배우는 컴공과목들 도움이 되나요? https://www.gpgstudy.com/forum/viewtopic.php?t=9827
- 나무위키 — 컴퓨터공학과 https://namu.wiki/w/컴퓨터공학과
채용·기술면접 관련 자료
- Team Blind (한국) — 개발자 형들 CS지식은 대체 어디까지 알아야 하는거야??? https://www.teamblind.com/kr/post/개발자-형들-cs지식은-대체-어디까지-알아야-하는거야-6oJvScKU
- D5BL5G — [카카오 공채 바이블] 코테, 면접 준비 방법 + 꿀팁 총정리 https://d5br5.dev/blog/career/kakao_bible
- 잡코리아 — 네이버 실제 면접 후기 8건 확인하기 https://www.jobkorea.co.kr/starter/review/view?c_idx=215&ctgr_code=3
- 잡코리아 Q&A — 개발자가 되는데 4년동안의 대학공부가 꼭 필요할까요? https://www.jobkorea.co.kr/User/Qstn/AnswerWrite?qstnNo=120426
- GitHub (ksundong) — backend-interview-question: 백엔드 개발자로 입사를 준비하며 받았던 질문 https://github.com/ksundong/backend-interview-question
- Inflearn — CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 https://www.inflearn.com/course/개발자-면접-cs-특강
- Zero-base — 프론트엔드 CS 지식, 취업에 필요한 핵심 공부법 https://zero-base.co.kr/event/media_insight_contents_FE_frontend_CS
- 코드트리 — 2025 삼성 SW 역량테스트 기출·예상 문제 및 단기 준비 팁 https://www.codetree.ai/blog/2025-삼성-sw-역량테스트-기출∙예상-문제-및-단기-준비-팁/
- 패스트캠퍼스 미디어 — 4학년 개발자 취업 준비 앞두고, 컴퓨터 공학 기초가 부족하다고 느낀다면? https://media.fastcampus.co.kr/knowledge/dev/computer-sci/