신입 개발자를 위한 프로그래밍 기초 학습 로드맵

신입 개발자에게 보내는 한 장짜리 학습 안내. 첫 언어 고르기, 기초가 몸에 붙는 공부법, 터미널·Git·SQL 과 파이썬·자바·PHP·Dart·Swift·C#·VB.NET 등 강좌를 초급부터 읽는 순서.

입사하고 첫 주, 신입에게서 가장 많이 듣는 질문은 특정 버그가 아니라 "뭐부터, 어떤 순서로 공부하면 되나요?"입니다. 저희는 2001년부터 소프트웨어를 만들어 왔고, 그때마다 같은 이야기를 반복해 왔습니다. 이 글은 그 대답을 한 장에 모은 것입니다. 맡을 업무에 맞는 첫 언어, 기초가 몸에 붙는 공부 방법, 그리고 저희 강좌를 초급에서 고급까지 어떤 순서로 읽으면 되는지를 정리했습니다. 사수가 링크 하나만 보내면 되도록 만든 글입니다.

이 글은 누구를 위한 것인가, 그리고 읽는 법

이런 분들을 생각하며 썼습니다.

  • 신입 개발자. 코드 몇 줄은 써 봤지만 실제로 무언가를 출시해 본 적은 없고, "일단 팀 언어부터 익혀 두라"는 말을 들은 분.
  • 기술 스택을 옮기는 분. 웹 개발을 하다가 Flutter 팀으로 옮겼다든지, 자바만 하다가 갑자기 VB.NET 도구를 물려받은 경우.
  • 사수·멘토. 같은 조언을 매번 새로 쓰는 대신 링크 하나로 끝내고 싶은 분.

읽는 순서는 이렇습니다. 바로 다음 절의 공부 습관을 한 번 읽고, 판단표로 언어를 하나만 고른 뒤, 그 언어의 강좌 목록을 위에서부터 차례대로 진행합니다. 저희 강좌는 모두 맨 위에 수준(초급·중급·고급)이 적혀 있고, 끝에는 다음 강좌 링크가 있습니다.

대부분의 강좌에는 실측 절이 있습니다. 실행 시간, 메모리 사용량, 벤치마크 표 같은 것들입니다. 처음 읽을 때는 건너뛰어도 됩니다. 직접 재 본 숫자여야 믿고 쓸 수 있기 때문에 넣은 것이지만, 입사 첫 주에 필요한 내용은 아닙니다. 업무에서 "이거 충분히 빠른가?"라는 질문이 생겼을 때 다시 오면 됩니다.

저희가 기초를 공부하는 방법 (강좌도 이렇게 썼습니다)

이 사이트의 강좌는 전부 코드를 실제로 돌리고, 오류까지 포함한 출력을 그대로 붙여서 썼습니다. 읽는 쪽도 같은 방식으로 공부해야 효과가 납니다. 한 달 뒤 실무에 들어가는 신입과 석 달이 지나도 코드를 복사해 붙이고 있는 신입을 가르는 것은 대개 아래 일곱 가지 습관입니다.

  1. 코드는 직접 치고, 직접 실행한다. 복사·붙여넣기는 하지 않습니다. 직접 쳐야 세미콜론, 파이썬 if 뒤의 콜론, Dart 타입 뒤의 ? 가 눈에 들어옵니다. 오타가 첫 오류 메시지를 만들고, 그 오류를 읽는 연습이 바로 지금 필요한 연습입니다.
  2. 검색하기 전에 오류 메시지부터 읽는다. 컴파일러 오류는 생각보다 친절합니다. Swift 는 줄 번호와 함께 고치는 방법까지 알려 주는 경우가 많고, 자바의 incompatible types 는 두 타입을 다 보여 주며, VB.NET 의 BC30512 는 Option Strict 가 막은 암묵적 변환이 무엇인지 그대로 적어 줍니다. 메시지를 끝까지 읽고, 줄 번호를 찾고, 그 줄을 본 다음에 검색합니다.
  3. 하나만 바꾸고, 실행 전에 결과를 예상한다. 예제가 돌아가면 값 하나를 바꿔 봅니다. 리스트를 비우거나, null 을 넘기거나, 21억이 넘는 숫자를 넣어 봅니다. 예상을 먼저 적고 실행합니다. 예상이 틀렸다면 아직 이해하지 못한 부분을 찾은 것이고, 그게 목적입니다.
  4. 연습 문제는 답을 보기 전에 푼다. Dart·Swift·PHP 강좌는 끝에 연습 문제가 있습니다. 답을 펼치기 전에 문제마다 최소 15분은 붙잡고 있어 보세요. 연습 문제가 없는 강좌는 3번이 곧 연습 문제입니다.
  5. "카더라" 대신 재 본다. 프로그래밍에는 한때는 맞았던 규칙이 넘쳐 납니다. 저희 파이썬 동시성 강좌에서는 CPU 를 쓰는 작업에 스레드를 늘려도 빨라지지 않았고, 머신러닝 시리즈에서는 특성 스케일링을 하지 않은 경사 하강법이 140,538 에폭, 스케일링한 쪽은 2 에폭만에 같은 손실에 도달했습니다. 모든 것을 잴 필요는 없지만, 중요한 주장이라면 직접 확인합니다.
  6. AI 어시스턴트는 오류 설명에 쓰고, 타이핑을 건너뛰는 데 쓰지 않는다. 이미 읽어 본 오류를 붙여 넣고 "왜 이런 일이 생기나요?"라고 묻는 것은 좋은 사용법입니다. 연습 문제를 대신 풀게 하면 정작 배워야 할 부분을 건너뜁니다. 수정안을 받았다면, 그 수정이 왜 맞는지 내 말로 설명할 수 있을 때만 채택합니다.
  7. 구체적으로, 짧게. 동영상 강의 두 시간보다 코드를 돌리는 30분이 낫습니다. 공부 시간은 "읽은 것"이 아니라 "실행한 것"으로 끝나야 합니다.

첫 언어는 목적으로 고른다

언어는 인기 순위가 아니라 앞으로 할 일로 고릅니다. 팀에 이미 코드베이스가 있다면 그 언어가 정답입니다. 다른 논쟁은 필요 없습니다.

하고 싶은 일 첫 언어 다음 단계
모바일 앱 (하나의 코드로 iOS·Android) Dart → Flutter 네이티브 iOS 코드도 만진다면 Swift
iOS 전용 앱, 네이티브 iOS 기능 Swift 팀이 Flutter 도 쓴다면 Dart
웹 페이지, API, 서버 PHP·Java·Python 중 코드베이스가 쓰는 것 정규식, PHP PDO 강좌의 SQL 보안
데이터 분석, AI, 업무 자동화 스크립트 Python 머신러닝 바닥부터 시리즈
사내 .NET 앱, Windows 도구 C# VB 코드를 유지보수할 때만 VB.NET
계속 돌려야 하는 레거시 VB 코드 VB.NET 연동 강좌를 위해 C#
컴퓨터 과학 기초 (모두) 알고리즘·자료구조 정규 표현식
판단 그림: '회사에서 무엇을 만드는가'에서 시작한다. 모바일 앱이면 Dart(Flutter) 또는 Swift. 웹·서버면 PHP, Java, Python 중 하나. 데이터·AI면 Python 다음에 머신러닝 시리즈. 사내 .NET 이나 오래된 Windows 도구면 C# 또는 VB.NET. 다섯 번째 가지는 모두에게 공통으로, 알고리즘·자료구조·정규 표현식으로 이어진다.
첫 언어는 인기 순위가 아니라 회사에서 무엇을 만들지로 고른다. 알고리즘·자료구조·정규 표현식은 어떤 언어로 시작하든 모두가 거치는 공통 과목이다.

팀이 어떤 언어를 쓰는지 아무도 알려 주지 않았다면, 먼저 물어보세요. 이 글이 답할 수 있는 어떤 질문보다 좋은 첫 질문입니다.

시리즈별 순서: 초급에서 고급까지

6강짜리 시리즈는 모두 같은 구조입니다. 1·2강이 초급, 3·4강이 중급, 5·6강이 고급입니다. 처음에는 4강까지만 하고 멈추세요.

파이썬

자바

PHP

인터넷에 노출되는 PHP 를 쓴다면 4·5강은 "고급"이 아니라 필수로 생각하세요.

Dart (Flutter 용)

Flutter 업무라면 5강은 일찍 읽어 두세요. 거의 모든 앱이 네트워크를 쓰고, 화면이 멈추는 원인은 대개 비동기 실수입니다.

Swift

VB.NET

C

C# 강좌는 6강짜리가 아니라 주제 하나에 짧은 글 하나씩입니다. 원래 2021년에 한국어로 썼던 강좌를 .NET 10 에서 전부 다시 실행해 고쳐 쓴 것이라 편수가 많습니다. 아래 순서대로 읽으세요.

초급: 환경 준비와 문법의 뼈대

  1. C# 개발 환경 2026: .NET 10 SDK와 dotnet CLI로 시작하기
  2. C# 변수·데이터 형식·상수: .NET 10에서 다시 확인한 범위와 함정
  3. C# 연산자: 오버플로·?? ·음수 %·시프트 함정을 .NET 10에서 확인
  4. C# 조건문 if·switch: 패턴 매칭, CS8509, 속도 비교(.NET 10)
  5. C# 반복문 while·for·foreach: .NET 10에서 IL과 속도까지 확인
  6. C# break·continue·goto: 중첩 루프 탈출과 goto case 정리
  7. C# 배열(Array): 2021년 예제를 .NET 10에서 다시 실행해 보니
  8. C# 메서드: ref·out·params와 오버로딩을 .NET 10에서 다시 검증
  9. C# 예외 처리: .NET 10에서 다시 검증한 try·catch·finally

중급: 클래스와 컬렉션

  1. C# 클래스와 객체: 주 생성자·required·개체 이니셜라이저 (.NET 10)
  2. C# 접근 제한자 6가지와 file, this: 두 어셈블리로 직접 확인
  3. C# 생성자와 소멸자(종료자): 실행 순서·GC·IDisposable 실측
  4. C# 프로퍼티 기초: get/set, 자동 구현, init, 세터 검증
  5. C# 프로퍼티 심화: field 키워드, required, 변경 알림
  6. C# 클래스 상속: override와 new의 차이, 생성자 함정까지 (.NET 10)
  7. C# 인터페이스: 기본 구현, static abstract, 명시적 구현 (.NET 10)
  8. C# 구조체(struct): 값 복사, 방어적 복사, 박싱 비용 실측
  9. C# 확장 메서드·partial·중첩 클래스: C# 14 extension 블록까지
  10. C# ArrayList·Hashtable·Queue·Stack: 레거시 컬렉션과 박싱 비용 실측
  11. C# List<T> 내부 동작: Capacity 증가·컬렉션 식·AsSpan 실측
  12. C# 컬렉션 고르기: Dictionary·HashSet·FrozenDictionary 실측
  13. C# 파일 입출력: using·비동기 API·UTF-8 BOM·Path 함정 실측

고급: 값으로서의 함수, LINQ, 제네릭, 이벤트

  1. C# 무명 형식과 무명 메서드: .NET 10에서 다시 확인한 동작
  2. C# 람다식: 2021년 예제를 .NET 10에서 다시 실행해 보니
  3. C# Func·Action 델리게이트: 2021년 예제 재검증과 호출 비용 실측
  4. C# LINQ 기초: .NET 10에서 다시 실행한 입문
  5. C# LINQ 쿼리 구문 vs 메서드 구문: 컴파일러 변환·let·SelectMany
  6. C# LINQ group by·join 심화: 복합 키, ToLookup, CountBy 실측
  7. C# 제네릭: 2021년 예제를 .NET 10에서 다시 검증
  8. C# 델리게이트와 이벤트: .NET 10에서 다시 검증한 기초
  9. C# 델리게이트 콜백 설계: 진행률·취소·체인의 예외
  10. C# 이벤트 심화: add/remove, async 핸들러, 약한 이벤트
  11. C# 리플렉션과 애트리뷰트: Invoke 비용 실측과 AOT 경고

Windows 전용 주제 (업무에 필요할 때): C# 레지스트리 읽기·쓰기: .NET 10의 CA1416과 RegistryView · WinForms 모달·모달리스 폼: ShowDialog와 Show (.NET 10) · WinForms OK·취소 버튼: AcceptButton과 DialogResult · WinForms 폼·앱을 하나만 띄우기: 정적 인스턴스와 Mutex

HTTP·웹 기초 (서버나 API 를 만지는 모두)

모든 앱은 HTTP 로 통신합니다. 로컬 테스트 서버에 대한 실제 curl -v 출력을 읽으며 상태 코드·리다이렉트·쿠키·캐시·TLS·압축을 배웁니다. 첫 API 업무 전에 1~3강을 보세요.

JavaScript (JavaScriptCore 로 실행)

언어 핵심(타입·함수·객체·클래스·Promise·성능)을 macOS 기본 jsc 셸에서 실행했습니다. 브라우저 DOM 과 Node.js 는 설명만 하고 "여기서는 실행하지 않음"이라고 밝혀 두었습니다.

C 언어 (컴퓨터가 실제로 움직이는 방식)

대부분의 업무에 필수는 아니지만, 메모리와 포인터, 그리고 다른 언어가 왜 그렇게 동작하는지 이해하는 가장 빠른 길입니다. clang 으로 컴파일하고 AddressSanitizer 로 버그를 잡습니다.

C++ (C 다음에, 또는 다른 언어에서 바로)

게임, 임베디드, 고성능 코드, 코딩 테스트용. Apple clang 21 과 libc++ 로 컴파일하고, 새니타이저로 버그를 잡고, 속도에 관한 주장은 모두 실측했습니다.

알고리즘·자료구조 (공통)

예제는 주로 C·C++ 이고 일부는 C# 이지만, 개념은 어느 언어에서나 그대로 통합니다. 자기 언어로 반복문과 함수가 편해진 다음에 읽으세요. 코딩 테스트를 준비하는 분에게도 이 순서를 권합니다.

정규 표현식 (공통)

로그 검색, 입력값 검사, 급한 데이터 정리 등 개발자라면 결국 정규식을 쓰게 됩니다. 예제는 .NET·Python·PHP·JavaScript 계열 엔진에서 돌렸습니다.

커맨드라인 (공통, 가장 먼저)

이 세 시리즈는 어떤 언어를 골랐든 모두에게 공통입니다. 신입은 보통 첫날 터미널과 Git 을, 첫 달 안에 SQL 을 만납니다. 주력 언어가 손에 익기 전인 경우가 대부분입니다. SQLite 3.51, Git 2.54, macOS 의 zsh/bash 에서 실행했고, Linux(GNU) 도구와 동작이 다른 부분은 강좌마다 밝혀 두었습니다.

Git (공통)

SQL (공통)

머신러닝 바닥부터 (파이썬 다음)

파이썬 표준 라이브러리만 쓰는 다섯 강좌입니다. 라이브러리가 감추기 전에 "학습"이 실제로 무엇을 하는지 직접 봅니다. 파이썬 1~4강을 먼저 끝내세요.

  1. 파이썬 표준 라이브러리만으로 선형 회귀: 경사 하강법이 발산하는 순간 실측 (중급)
  2. k-means 표준 라이브러리로 직접 구현: 지역 최솟값·k-means++·k 고르기 (중급)
  3. 나이브 베이즈 텍스트 분류기를 표준 라이브러리로: 블로그 글 86개 실측 (중급)
  4. 퍼셉트론에서 신경망까지: 순수 파이썬으로 XOR 실측 (고급)
  5. TF-IDF·BM25 검색 엔진 직접 만들기: 블로그 글 86개로 실측 (고급, RAG 로 넘어가는 다리)

신입의 첫 4주 계획 (예시)

평소 온보딩과 병행해서 하루 1시간 정도를 기준으로 잡았습니다. 언어 하나와 공통 기초까지만 다루고, 고급 강좌는 일부러 뺐습니다.

상자 네 개가 가로로 이어진다. 1주 차: 환경을 준비하고 초급 1·2강을 예제를 전부 직접 쳐 가며 진행. 2주 차: 중급 3·4강과 나만의 작은 도구 하나. 3주 차: 탐색·정렬·스택이나 큐·정규 표현식 기초. 4주 차: 팀 코드를 읽고 첫 작은 수정을 올린다. 고급 5·6강은 실무에서 필요할 때.
현실적인 첫 한 달: 하루 1시간 정도, 언어는 하나만, 3주 차에 공통 기초를 넣는다. 고급 강좌는 실무에서 필요해질 때 봐도 된다.
주차 할 일 이 정도면 완료
1주 차 개발 환경 설치, 고른 언어의 1·2강. 예제는 전부 직접 친다. 터미널에서 파일을 실행할 수 있고, 마주친 오류 메시지 하나를 설명할 수 있다.
2주 차 3·4강, 그리고 나를 위한 작은 도구 하나 (CSV 정리, 파일 이름 일괄 변경, 화면 하나짜리 앱 등). 내 데이터로 실제로 돌아가는 100줄 안팎의 도구.
3주 차 공통 기초: 순차·이진 탐색, 정렬, 스택 강좌. 정규식은 "정규 표현식이란?"과 "메타 문자". HashSet 이 리스트보다 나은 경우를 말할 수 있고, 로그 한 줄을 잡는 정규식을 쓸 수 있다.
4주 차 팀 코드를 읽는다. 1~3주 차에 배운 것이 등장하는 곳을 한 군데 찾는다. 첫 작은 수정을 올린다. 아무리 작아도 리뷰를 거친 PR 하나.

1주 차 전에, 또는 함께: 커맨드라인 1·2강과 Git 1·2강. 첫 주의 "실행이 안 돼요"는 언어 문제가 아니라 경로, 파일명의 공백, 커밋하지 않은 변경인 경우가 대부분입니다.

C# 은 "1·2강"을 초급 목록 1~9번으로, "3·4강"을 중급 목록 10~22번으로 바꿔 읽고, 1·2주 차 분량에 3주 정도를 잡으세요. 글 하나하나는 짧지만 편수가 많으니 그게 정상입니다.

5·6강 같은 고급 강좌(비동기, 동시성, 성능, 메모리)는 실제 업무가 요구할 때 봅니다. 2주 차에 미리 읽으면 대개 헷갈리기만 합니다.

막혔을 때

  • 프로그램을 줄인다. 문제가 사라질 때까지 코드를 지우고, 마지막으로 지운 것을 되돌립니다. 10줄짜리 실패 예제는 이해하기도, 질문하기도 쉽습니다.
  • 생각보다 많이 출력한다. 값과 함께 타입도 찍어 봅니다. 파이썬은 type(x), Dart 는 x.runtimeType, C# 은 x.GetType(). 초보자 버그의 절반은 "생각한 타입이 아닌 값"입니다.
  • 버전을 확인한다. python3 --version, java -version, dart --version, php -v, swift --version, dotnet --version. 새 버전 기준으로 쓴 예제는 옛 버전에서 엉뚱한 오류로 실패하기도 합니다.
  • 질문은 잘 정리해서. 코드, 오류 전문, 이미 해 본 것. 이 세 가지가 있으면 사수는 2분 안에 답할 수 있습니다. "안 돼요"만으로는 20분이 걸립니다.
  • 30분 막히면 물어본다. 오후 내내 혼자 막혀 있는 것보다 30분 만에 풀고 나머지 시간을 연습에 쓰는 편이 훨씬 많이 배웁니다. 물어보는 것도 신입의 일입니다.

실행 환경에 대한 솔직한 메모

강좌는 Apple Silicon Mac(M1 Pro)에서 특정 버전으로 돌렸습니다. Python 3.9 와 3.11, OpenJDK 26, PHP 8.5, Dart SDK 3.11, Swift 6.4, .NET 10, Apple clang 21, SQLite 3.51, Git 2.54, macOS 의 zsh 5.9 / bash 3.2 입니다. 정확한 버전은 강좌마다 적어 두었습니다. Windows 나 Linux, 혹은 다른 버전에서는 파일 경로, 실행 시간, 일부 오류 메시지가 다를 수 있습니다. WinForms 글은 Windows 용으로 컴파일만 했고 Mac 에서 실행하지는 못했으며, 글에도 그렇게 밝혀 두었습니다. 실행 시간은 한 대의 기계에서 잰 값이므로, 어느 쪽이 대략 몇 배 빠른지를 보여 주는 용도로 읽어 주세요.

강좌 내용과 내 화면의 결과가 다르다면 먼저 버전을 확인하세요. 그래도 다르다면 그 자체가 쓸모 있는 발견이고, 아마 무언가가 바뀌었다는 신호입니다.

자주 묻는 질문

신입은 어떤 프로그래밍 언어부터 배워야 하나요?

팀이 쓰는 언어부터입니다. 모바일 앱 팀이면 Dart(Flutter), iOS 전용이면 Swift. 웹·서버 팀이면 코드베이스가 쓰는 PHP·Java·Python 중 하나. 데이터·AI 업무면 Python 다음에 머신러닝 시리즈. 사내 .NET 이나 오래된 Windows 도구면 C#, VB 코드를 유지보수한다면 VB.NET. 커맨드라인·Git·SQL 은 모두가 가장 먼저, 알고리즘·자료구조·정규 표현식도 모두에게 공통입니다.

강좌의 실측(벤치마크) 부분도 처음부터 다 읽어야 하나요?

아니요. 처음에는 설명을 읽고, 예제를 직접 쳐서 실행하고, 연습 문제를 푸는 것까지만 하면 됩니다. 벤치마크 표와 6강짜리 시리즈의 5·6강(고급)은 건너뛰었다가, 업무에서 성능이나 동시성을 다루게 될 때 돌아오면 됩니다.

공부할 때 AI 어시스턴트를 써도 되나요?

됩니다. 이미 읽어 본 오류 메시지를 설명받거나, 예상과 다른 출력이 왜 나왔는지 물어보는 데 쓰세요. 예제를 대신 쳐 달라고 하는 것은 피하세요. 직접 치는 과정에서 문법이 손에 익고, 첫 주에 하는 실수 대부분이 거기서 잡힙니다.

초급·중급 강좌를 끝내는 데 얼마나 걸리나요?

하루 1시간 정도면 한 언어의 초급·중급 4강을 2주에 끝낼 수 있습니다(이 글의 4주 계획 기준). C# 은 짧은 글 여러 편으로 나뉘어 있어 초급·중급에 3~4주를 잡는 편이 현실적입니다.

  • #학습 로드맵
  • #입문
  • #신입 개발자
  • #공부법
  • #프로그래밍 기초

t.laboratory

직접 만들고 운영하는 앱·서버·서비스에서 겪은 문제와, 그 해결에 쓴 코드를 기록하는 기술 블로그입니다.

운영자 소개 · 앱

↑