TRENDSHIFT GitHub 트렌딩 딥다이브 · 2026-06-05 분석

Coding Interview University 딥다이브
— 컴퓨터공학 학위 없이 빅테크 개발자가 되는 셀프 스터디 플랜

아마존 개발자가 된 한 사람이 8개월간 매일 8~12시간 독학한 기록을, 누구나 따라 할 수 있게 하나의 거대한 체크리스트로 정리한 저장소입니다. 코드가 거의 없습니다 — 대신 자료구조·알고리즘·시스템 설계 등 CS(Computer Science·컴퓨터공학) 핵심 75%를 "이 순서대로, 이 영상 보고, 직접 구현해라"로 묶은 학습 로드맵입니다. (저장소: jwasham/coding-interview-university · 순수 Markdown 문서 · ★347k / Fork 82.9k · 2,511 커밋 · CC-BY-SA-4.0 라이선스 · 17개 언어 번역)

1한 줄 요약 — 이건 코드가 아니라 "공부 순서"다

저장소를 열면 README 한 장이 끝없이 이어집니다. 그게 전부이자 핵심입니다.

Coding Interview University(이하 CIU)는 John Washam(jwasham)이라는 개발자가 만든 저장소입니다. 그는 CS 학위가 없었고, 웹 개발은 했지만 "스택과 힙의 차이도, Big-O가 뭔지도 몰랐다"고 고백합니다. 그런 그가 8개월간 풀타임으로 독학해 결국 아마존 소프트웨어 엔지니어로 취업했고, 그 과정에서 만든 "공부할 것 to-do 리스트"가 점점 불어나 지금의 거대한 학습 플랜이 되었습니다.

중요한 건 이겁니다: 이 저장소에는 실행되는 프로그램이 거의 없습니다. 파일 대부분이 README.md 하나에 들어 있는 Markdown(마크다운·서식 있는 텍스트 문법) 문서입니다. 즉 CIU의 "코드"는 "무엇을, 어떤 순서로, 어떻게 공부하라"는 지시문 그 자체입니다.

한 줄로 말하면

"CS 4년치를 압축한, 셀프 PT(개인 트레이닝) 운동 계획표"

헬스장에 가면 트레이너가 "오늘은 가슴, 내일은 등, 이 무게로 이만큼"이라고 짜 주죠. CIU는 그 운동 계획표의 컴퓨터공학 버전입니다. "오늘은 배열, 내일은 연결 리스트, 이 영상 보고 → 직접 코드로 구현하고 → 문제 2~3개 풀어라."

트레이너(jwasham)가 이미 한 번 그 코스를 완주하고 아마존에 합격했다는 게 신뢰의 근거입니다. 게다가 그는 "나는 너무 많이 했다, 너희는 이만큼 안 해도 된다"며 군더더기를 쳐내 줍니다.

그래서 이 딥다이브는 다른 레포 분석과 결이 조금 다릅니다. 우리는 "이 소프트웨어가 어떻게 동작하나"가 아니라, "이 학습 자료가 어떻게 설계됐고, 거기서 무엇을·어떻게 배울 수 있나"를 해부합니다.

2왜 34만 별을 받았나 (트렌딩 이유)

GitHub에서 별(Star) 34만 개는 상위 0.01%급입니다. 리눅스 커널보다 많습니다.

CIU는 2016년에 공개된 뒤 꾸준히 GitHub 최상위권 저장소였고, 2026년 현재 TrendShift 주간 트렌딩에 다시 올라왔습니다. 신상 저장소가 아닌데도 다시 트렌딩하는 이유, 그리고 애초에 이렇게까지 인기 있는 이유를 짚어 봅니다.

① "독학으로 빅테크 간다"는 강력한 서사

CS 학위가 없는 사람에게 CIU는 "4년치 등록금과 시간을 아껴 준다"는 약속입니다. 부트캠프 수료생, 전공 전환자, 비전공 독학러에게 이만큼 구체적인 지도는 드뭅니다. 게다가 실제 성공 사례(저자 본인)가 붙어 있습니다.

② "큐레이션"의 가치 — 정보 과잉 시대의 필터

비유

유튜브에 "Big-O 강의"를 치면 수천 개가 뜹니다. 초보자는 어느 걸 봐야 할지, 어디까지 깊게 봐야 할지 모릅니다. CIU는 그 바다에서 "이거 보세요, 이만큼만요"라고 골라 주는 사서(司書) 역할을 합니다.

이게 바로 curated list(큐레이션 리스트·전문가가 골라 정리한 목록)의 힘입니다. 콘텐츠를 새로 만드는 게 아니라, 흩어진 좋은 자료를 "순서와 분량"까지 정해서 묶는 것 자체가 거대한 가치입니다.

③ 진입 장벽을 낮춘 "체크박스" 설계

README는 GitHub 특유의 task list(작업 목록·- [ ] 문법으로 만드는 체크박스)로 가득합니다. 학습자는 저장소를 Fork(포크·내 계정으로 복제)한 뒤 끝낸 항목에 x를 넣어 - [x]로 바꿉니다. 진행률이 눈에 보이니 게임의 퀘스트 클리어처럼 동기가 유지됩니다.

④ 17개 언어 번역 = 전 세계 커뮤니티

스페인어·중국어·일본어·러시아어 등 17개 언어로 번역돼 있고(한국어는 진행 중), 8만 명 이상이 Fork 했습니다. 사람들이 자기 진행 상황을 포크에 기록하기 때문에, Fork 수가 곧 "실제로 쓰는 사람 수"에 가깝습니다.

핵심 포인트
왜 "다시" 트렌딩하나

채용 시장이 얼어붙거나 정리해고가 늘 때마다 "이직·취업 준비" 수요가 폭발하고, 그때마다 CIU 같은 검증된 로드맵이 재조명됩니다. 콘텐츠가 늙지 않는(Big-O와 자료구조는 10년 전이나 지금이나 같은) 분야라는 점도 장수의 비결입니다.

3학습 스택 전체 지도 (무엇을 배우나)

CIU의 "기술 스택"은 프로그래밍 언어가 아니라, 배워야 할 CS 주제들의 묶음입니다.

일반 소프트웨어라면 여기서 백엔드/프론트엔드/인프라를 나눕니다. CIU는 학습 자료이므로, "스택"을 ① 학습 콘텐츠(무엇을 배우나) ② 학습을 굴리는 도구(어떻게 익히나)로 나눠 봅니다.

① 학습 콘텐츠 — 4개의 큰 덩어리

덩어리포함 주제한 줄 설명
기초 이론Big-O / 점근 분석"이 알고리즘이 빠른가 느린가"를 수학 기호로 표현하는 법
자료구조배열·연결 리스트·스택·큐·해시테이블·트리·그래프데이터를 메모리에 "어떻게 담을지" 그릇의 종류
알고리즘정렬·탐색·재귀·동적계획법(DP)·그래프 순회그릇에 담은 데이터를 "어떻게 다룰지" 절차
시스템·실무시스템 설계·확장성·OS(프로세스/스레드)·캐시·네트워킹큰 서비스를 "어떻게 설계하고 굴릴지" (경력자용 심화)
용어 풀이
Big-O (빅오 표기법)
데이터가 늘어날 때 알고리즘이 얼마나 느려지는지를 나타내는 기호. 예를 들어 O(n)은 데이터가 2배면 시간도 2배(선형), O(n²)은 데이터가 2배면 시간은 4배(제곱). 면접에서 "이 코드의 시간 복잡도는?"이라는 질문에 답하기 위한 공통 언어입니다. 비유하면 "요리 재료가 2배로 늘면 요리 시간이 얼마나 더 걸리나"를 표준 단위로 말하는 것.

② 학습을 굴리는 도구 — jwasham식 3종 세트

CIU가 단순 링크 모음을 넘어서는 이유는, 저자가 "어떻게 익혀야 머리에 남는가"까지 방법론을 박아 뒀기 때문입니다. 핵심 3가지:

도구정체역할
Task listGitHub 체크박스 - [ ]진행률 추적 — Fork 후 항목마다 x 체크
Flashcards플래시카드(앞=질문/뒤=답)망각 방지 — 저자가 직접 만든 카드 사이트 + Anki 연동
Practice repospractice-c / -cpp / -python"읽고 끝"이 아니라 직접 구현 — 저자의 연습 코드 저장소
용어 풀이
Anki / Spaced Repetition (앙키 / 간격 반복)
잊을 만할 때쯤 다시 보여 주는 방식으로 암기를 돕는 플래시카드 앱. "오늘 외운 건 내일, 모레, 일주일 뒤…" 점점 간격을 벌리며 복습시켜 장기 기억으로 굳힙니다. 저자는 1,200~1,800장짜리 카드 묶음을 공유하지만, 동시에 "너무 많으니 따라 만들지 말라"고 경고합니다. 비유하면 "잊어버리기 직전에 알람이 울리는 단어장".
저자의 경고
"내 카드 1,800장 그대로 쓰지 마세요"

저자는 어셈블리어부터 머신러닝·통계까지 온갖 걸 카드로 만들었다가 "필요 이상으로 과했다"고 후회합니다. 핵심 교훈: 도구는 따라 하되, 분량은 자기 목표(면접 통과)에 맞게 줄여라. CIU 전체를 관통하는 메시지가 바로 이 "나처럼 시간 낭비하지 마라"입니다.

4아키텍처 심화 — 저장소가 "굴러가는" 구조

소프트웨어가 아니므로 "시스템 구조도"는 없습니다. 대신 학습자가 거치는 "흐름"이 곧 아키텍처입니다.

CIU의 진짜 설계는 "학습자가 어떤 경로로 움직이고, 어떤 피드백 루프를 도는가"에 있습니다. 이걸 흐름도로 그리면 다음과 같습니다.

[학습자의 흐름 — Fork 기반 셀프 학습 루프] ┌─────────────────────────────────────────────┐ │ jwasham/coding-interview-university (원본) │ │ README.md = 거대한 체크리스트 (단일 소스) │ └───────────────────┬─────────────────────────┘ │ Fork (내 계정으로 복제) ▼ ┌─────────────────────────────────────────────┐ │ 내-계정/coding-interview-university (포크) │ │ 여기서 - [ ] 를 - [x] 로 바꾸며 진행 기록 │ └───────────────────┬─────────────────────────┘ │ ┌──────────────┼───────────────┐ ▼ ▼ ▼ ┌─────────┐ ┌──────────┐ ┌──────────────┐ │ 1. 보기 │ │ 2. 구현 │ │ 3. 문제 풀기 │ │ 영상/책 │──▶│ 직접 코딩│──▶ │ LeetCode 등 │ │ 개념 흡수│ │practice-*│ │ 2~3문제/주제 │ └─────────┘ └──────────┘ └──────┬───────┘ ▲ │ │ 4. 플래시카드로 복습 │ └──────(Anki·간격 반복)◀──────────┘ │ ▼ ┌────────────────────┐ │ Final Review → │ │ 이력서·면접·취업 │ └────────────────────┘

핵심 설계 패턴 ① — "단일 소스 + 개인 포크"

원본 README는 하나의 진실(Single Source of Truth)입니다. 모두가 같은 커리큘럼을 봅니다. 그런데 진행 상태는 개인 포크에 저장되므로, 8만 명이 서로 충돌 없이 각자 진도를 기록할 수 있습니다. 원본을 더럽히지 않으면서 개인화하는 깔끔한 구조죠.

용어 풀이
Fork & upstream (포크 & 업스트림)
Fork는 남의 저장소를 통째로 내 계정에 복제하는 것. upstream(업스트림)은 그 "원본"을 가리키는 별명입니다. 저자는 git remote add upstream …으로 원본을 연결해 두고, 원본에 새 자료가 추가되면 git pull upstream main으로 내 포크에 받아오라고 안내합니다. 단, --push upstream DISABLE내 진도가 실수로 원본에 올라가는 사고를 막습니다. 비유하면 "교과서 원본은 도서관에 두고, 내 필기는 복사본에만 하되, 교과서 개정판이 나오면 새 내용만 옮겨 적는 것."

핵심 설계 패턴 ② — "보기 → 구현 → 문제풀이" 3단 루프

저자가 가장 강조하는 실수 방지책입니다. 많은 사람이 영상만 잔뜩 보고 "안다고 착각"하지만, 직접 구현하고 문제를 풀지 않으면 면접장에서 무너집니다. 그래서 각 주제마다 "개념을 본 뒤 → 그 자료구조를 직접 코딩하고 → 관련 문제 2~3개를 그때그때 풀어라"를 강제합니다.

안티패턴
"영상 몰아보기 → 나중에 한꺼번에 문제풀이"

저자가 직접 저지른 실수입니다. 몰아서 본 지식은 몇 달 뒤 거의 남지 않았고, 노트 정리에만 3일을 다시 썼습니다. 인풋(보기)과 아웃풋(풀기) 사이 간격이 벌어질수록 망각이 커집니다.

권장 패턴
"한 주제 배우면 즉시 그 주제 문제 2~3개"

예: 연결 리스트를 배웠다면, 바로 LeetCode에서 연결 리스트 문제 2~3개를 풀고 다음 주제로. 나중에 또 2~3개. "배우면서 동시에 적용"이 핵심입니다. 채용은 지식의 양이 아니라 적용 능력을 봅니다.

핵심 설계 패턴 ③ — "75%만, 우선순위로"

CIU는 일부러 대학 CS 커리큘럼의 약 75%만 다룹니다. 면접 통과라는 목표에 필요 없는 건 과감히 "Optional(선택)" 아래로 내려 두죠. README 중간에 ---- 이 아래는 전부 선택 ---- 구분선이 있어, 핵심과 곁가지를 명확히 가릅니다. 끝없는 완벽주의를 막는 장치입니다.

5디렉토리 구조 해부

파일이 몇 개 안 됩니다. 무게 중심은 README.md 단 하나에 쏠려 있습니다.
coding-interview-university/ ├── README.md ← ★ 본체. 전체 커리큘럼이 이 한 파일에 ├── programming-language-resources.md ← 언어별(파이썬·C·자바…) 학습 자료 ├── extras/ │ └── cheat sheets/ ← Big-O·자료구조 치트시트(요약표) ├── translations/ ← 17개 언어 번역본 (README-ko.md 등) │ ├── README-cn.md (중국어) │ ├── README-es.md (스페인어) │ ├── README-ja.md (일본어) │ └── ... (총 17개 언어) ├── .github/workflows/ ← 자동화(번역 링크 점검 등) CI 설정 ├── LICENSE.txt ← CC-BY-SA-4.0 (자유 이용·출처표시·동일조건) └── .gitignore
경로역할초보자가 볼 곳?
README.md전체 학습 플랜 본체. 목차→이론→자료구조→알고리즘→시스템설계→취업 순여기만 봐도 됨 ✅
translations/모국어로 편하게 보고 싶을 때. 단 번역본은 원본보다 늦게 갱신될 수 있음영어가 부담되면 ✅
extras/cheat sheets/시험 직전 빠르게 훑는 요약표복습 단계에서 ✅
.github/workflows/저장소 유지보수 자동화(GitHub Actions). 학습 내용 아님몰라도 됨 ⏭️
비유

이 저장소는 "책 한 권 + 번역본 17종 + 부록 치트시트"로 된 출판물 같습니다. 코드 폴더가 주인공인 보통의 GitHub 레포와 정반대로, 여기선 문서(README)가 주인공이고 코드는 외부 연습 저장소(practice-*)로 분리돼 있습니다.

6학습 포인트 (주제별 배울 것 + 실습)

CIU의 주제들을 "왜 배우나 + 어떻게 손에 익히나"로 다시 풀어 봅니다.
주제 1 · 자료구조

배열·연결 리스트·해시테이블 — "데이터를 담는 그릇"

모든 프로그램은 데이터를 어딘가에 담습니다. 배열은 칸이 정해진 사물함, 연결 리스트는 손을 잡고 늘어선 사람들, 해시테이블은 이름표로 즉시 찾는 사물함입니다. 각각 "빠른 작업/느린 작업"이 다릅니다.

실습 아이디어: 언어 내장 자료구조를 쓰지 말고, 동적 배열(자동으로 늘어나는 배열)을 직접 구현해 보세요. add, remove, resize를 만들어 보면 "내부에서 무슨 일이 벌어지는지" 감이 옵니다.

주제 2 · 트리와 그래프

트리·이진탐색트리·그래프 순회 — "관계를 표현하는 구조"

폴더 안의 폴더(트리), 친구의 친구(그래프)처럼 "계층·연결"을 다루는 구조입니다. 면접 단골이며, BFS(너비 우선)·DFS(깊이 우선) 순회는 거의 반드시 나옵니다.

실습 아이디어: 이진탐색트리에 숫자를 넣고 빼는 코드를 짠 뒤, 같은 트리를 전위·중위·후위·레벨 순서로 출력해 보세요. "순회 순서"가 왜 중요한지 체감됩니다.

주제 3 · 알고리즘

정렬·재귀·동적계획법 — "데이터를 다루는 절차"

퀵정렬·병합정렬을 직접 구현하고, 재귀(자기 자신을 부르는 함수)로 사고하는 법을 익힙니다. 동적계획법(DP)은 "큰 문제를 작은 문제로 쪼개 답을 재활용"하는 기법으로, 가장 어렵지만 가장 자주 나옵니다.

용어 풀이
Dynamic Programming (동적계획법·DP)
이미 푼 작은 문제의 답을 저장해 두고 재활용해서, 같은 계산을 반복하지 않게 만드는 기법. 피보나치 수를 구할 때 매번 다시 더하지 않고 "앞에서 구한 값"을 기록해 두는 식. 비유하면 "한 번 푼 문제는 답안지에 적어 두고, 다음에 또 나오면 베껴 쓰는 것."
주제 4 · 시스템 설계 (경력 4년+ 심화)

확장성·캐시·로드밸런싱 — "큰 서비스를 떠받치는 법"

"수백만 명이 쓰는 트위터를 설계해 보라" 같은 문제에 답하는 영역입니다. 자료구조/알고리즘이 "한 대의 컴퓨터 안"이라면, 시스템 설계는 "수천 대의 컴퓨터를 어떻게 엮나"입니다. 신입에겐 선택, 경력엔 필수입니다.

실습 아이디어: 종이에 "URL 단축기(bit.ly)"를 설계해 보세요. 데이터베이스, 캐시, 고유 키 생성 방식을 그림으로 그려 보면 시스템 설계 면접의 감을 잡을 수 있습니다.

7시간·도구 요구사항

하드웨어가 아니라 "시간·끈기·기본 도구"가 진짜 요구사항입니다.
요구사항내용
사전 지식변수·반복문·함수 정도의 최소한의 코딩 경험
시간수개월(저자는 8개월 풀타임 — 단, "너희는 이만큼 안 해도 된다"). 직장 병행 시 더 김
언어학습용으로 C(메모리·포인터 감 잡기) + 파이썬(빠른 작성) 추천. 면접용은 C++·자바·파이썬
도구Git/GitHub 계정, 코드 에디터, Anki(무료, iOS만 유료 $25), 화이트보드 or 큰 스케치북
문제풀이 사이트LeetCode(저자 최애, 1~2개월 구독 가치 있음), HackerRank, Codeforces 등
비유 — "소파 화이트보드"

저자는 면접에서 컴퓨터가 아니라 화이트보드·종이에 손으로 코딩하게 된다는 점을 강조합니다. 그래서 집에 큰 스케치북을 두고 연필+지우개로 연습하라고 하죠(펜은 못 지워서 금방 지저분해진다며). 키보드 없이 "말하면서 손으로 푸는" 연습이 실제 면접과 가장 가깝기 때문입니다.

8직접 해볼 수 있는 실습 과제 (난이도별)

CIU를 "읽기만" 하면 안 됩니다. 아래 과제로 직접 손을 움직여 보세요.
🟢 입문 (1~2일)

저장소를 포크하고 첫 체크박스를 켜라

CIU를 Fork → 로컬에 clone → "Big-O" 챕터의 영상 1개를 보고 노트 정리 → 해당 항목을 - [x]로 바꿔 커밋. Git 워크플로와 학습 추적을 동시에 체험하는 게 목표입니다.

🟢 입문 (2~3일)

동적 배열을 직접 구현하라

좋아하는 언어로 "자동으로 크기가 늘어나는 배열"을 밑바닥부터 구현. 가득 차면 2배로 늘리는 resize를 넣고, 왜 평균적으로 O(1) 추가가 가능한지 주석으로 설명해 보세요.

🟡 중급 (1주)

나만의 미니 플래시카드 + LeetCode 루프

Anki를 깔고 "자료구조 10장"짜리 카드를 직접 만든 뒤, 매일 복습. 동시에 연결 리스트·스택·큐 주제마다 LeetCode Easy 문제 2~3개를 풀어 "배우며 적용" 루프를 한 주간 돌려 보세요.

🟡 중급 (1주)

정렬 알고리즘 4종 구현 + 성능 비교

선택·삽입·병합·퀵 정렬을 직접 구현하고, 1만·10만 개 난수로 실행 시간을 측정해 표로 비교. Big-O 이론(O(n²) vs O(n log n))이 실제 시간으로 어떻게 나타나는지 눈으로 확인합니다.

🔴 심화 (2주+)

종이 위 시스템 설계 — "URL 단축기"

화이트보드/종이에 bit.ly 같은 URL 단축 서비스를 설계. 고유 키 생성, 데이터베이스 스키마, 캐시 계층, 초당 수천 요청 처리 방안을 그림과 말로 설명해 보세요. 가능하면 친구에게 5분간 발표하듯 "말로 푸는" 연습까지.

912주 학습 로드맵

CIU 전체를 직장 병행 기준 약 3개월로 압축한 예시 플랜입니다(개인 속도에 맞게 조절).
주차주제목표
1주Big-O · 점근 분석시간/공간 복잡도를 말로 설명할 수 있기
2~3주배열 · 연결 리스트 · 스택 · 큐각 구조 직접 구현 + Easy 문제 각 3개
4주해시테이블 · 이진탐색 · 비트 연산해시 충돌 처리 이해, 비트 트릭 익히기
5~6주트리 · 이진탐색트리 · 힙BFS/DFS 순회 구현, 우선순위 큐 이해
7주정렬 (병합·퀵·힙)4종 직접 구현 + 성능 비교 표
8~9주그래프 (순회 · 최단경로)인접 리스트/행렬, BFS/DFS로 문제 풀이
10주재귀 · 동적계획법(DP)DP Easy~Medium 문제로 "쪼개기" 사고 훈련
11주OS 기초 · 캐시 · 네트워킹 · 시스템 설계 맛보기프로세스/스레드, 캐시 개념, 설계 1문제
12주Final Review · 모의 면접 · 이력서치트시트 복습, 화이트보드 모의면접, 지원
운영 팁
"매일 조금씩 + 문제는 항상 함께"

하루 1~2시간이라도 매일이 몰아서 주말 8시간보다 낫습니다(간격 반복 효과). 그리고 어떤 주차든 그 주제의 코딩 문제를 손에서 놓지 마세요. 이론만 진도 빼는 건 CIU 저자가 가장 후회한 실수입니다.

10핵심 키워드 사전

CIU와 코딩 면접 준비에서 반복 등장하는 용어들을 한곳에 모았습니다.
용어
자료구조데이터를 메모리에 저장·조직하는 방식(배열·리스트·트리 등). "데이터를 담는 그릇"
알고리즘문제를 푸는 단계적 절차. "그릇에 담은 데이터를 다루는 레시피"
Big-O데이터가 늘 때 알고리즘이 느려지는 정도를 나타내는 표기(예: O(n), O(log n))
BFS / DFS너비 우선/깊이 우선 탐색. 트리·그래프를 훑는 두 가지 순서
재귀(Recursion)함수가 자기 자신을 호출해 문제를 작게 줄여 가는 기법
동적계획법(DP)작은 문제의 답을 저장·재활용해 중복 계산을 없애는 최적화 기법
시스템 설계대규모 서비스를 여러 서버·DB·캐시로 어떻게 구성할지 설계하는 영역
Fork남의 GitHub 저장소를 내 계정으로 통째 복제. CIU는 진도 기록용으로 사용
Task listMarkdown - [ ] 문법으로 만드는 체크박스 목록. 진행률 추적용
Anki / 간격 반복잊을 때쯤 다시 보여 주는 플래시카드 복습 방식. 장기 기억 형성
LeetCode코딩 면접 문제 연습 사이트. 저자가 가장 추천하는 문제 풀이 플랫폼
MOOCCoursera·edX 같은 온라인 공개 강좌. CIU가 링크로 많이 참조
CC-BY-SA-4.0출처 표시 + 동일 조건 공유 시 자유 이용 가능한 콘텐츠 라이선스

11참고 링크

원본과, 함께 보면 좋은 자료들입니다.