2025年までは、以下の項目を少しずつ学習していくのが普通でした。
基礎コンピュータサイエンス
- 計算機科学の基礎(ビット・バイト、2進数・16進数、ブーリアン代数)
- データ構造(配列、リスト、スタック、キュー、木、グラフ、ハッシュテーブルなど)
- アルゴリズム(探索、ソート、再帰、動的計画法、グラフアルゴリズムなど)
- 計算量(時間計算量・空間計算量、オーダー記法)
- オートマトン・形式言語の基礎(正規表現など)
プログラミング言語とパラダイム
- 1つ以上の静的型付け言語(C/C++/Java/Go/TypeScript など)
- 1つ以上の動的型付け言語(Python/Ruby/JavaScript など)
- オブジェクト指向(クラス、継承、ポリモーフィズム、カプセル化、SOLID 原則)
- 関数型の考え方(イミュータビリティ、高階関数、map/reduce、ラムダ式)
- 非同期・並行処理(スレッド、async/await、ロック、デッドロックの概念)
設計・アーキテクチャ
- デザインパターン(GoF パターン、DI、Repository、Factory、Strategy など)
- アーキテクチャパターン(レイヤード、クリーンアーキテクチャ、DDD の基本用語)
- モジュール設計・責務分割(関心の分離、凝集度と結合度)
- API 設計(REST、GraphQL の基礎、HTTP ステータスコード、エラーハンドリング)
- エラーハンドリングと例外設計、ロギング戦略
ソフトウェア開発プロセス
- Git などのバージョン管理(ブランチ戦略、Pull Request、コードレビュー)
- テスト(ユニットテスト、統合テスト、テストダブル、TDD の考え方)
- CI/CD(自動テスト、ビルド、デプロイパイプラインの概念)
- アジャイル開発(スクラム/カンバン、ユーザーストーリー、バックログ)
- 要件定義と仕様化(ユースケース、ユーザーストーリー、非機能要件)
Web・ネットワーク系(多くのプログラマーに有用)
- HTTP/HTTPS の仕組み、Cookie・セッション、REST の基礎
- Web フロントエンド(HTML/CSS、JavaScript、SPA の概念、基本的なフレームワーク)
- Web バックエンド(サーバサイド言語、フレームワーク、ルーティング、認証)
- ネットワークの基礎(TCP/IP、DNS、ポート、ファイアウォールの概念)
- セキュリティ基礎(XSS、CSRF、SQL インジェクション、HTTPS/TLS)
データベース・データ処理
- リレーショナルデータベース(SQL、正規化、トランザクション、インデックス)
- NoSQL の種類と用途(Key-Value、ドキュメント、カラム指向など)
- ORマッパー(ORM)の使い方と落とし穴
- キャッシュ(メモリキャッシュ、Redis などの基本概念)
- データモデリング・スキーマ設計の基本
OS・インフラ・DevOps
- OS の基礎(プロセス、スレッド、メモリ管理、ファイルシステム)
- シェル・コマンドライン操作(Unix 系の基本コマンド、シェルスクリプト)
- コンテナと仮想化(Docker の概念、イメージとコンテナ、簡単な Compose)
- クラウドの基礎(AWS/GCP/Azure の代表的なサービス概念)
- 監視と運用(メトリクス、ログ収集、アラートの考え方)
品質・ソフトスキル
- 可読性の高いコードスタイル、命名、リファクタリング
- パフォーマンスとプロファイリングの基礎(ボトルネックの見つけ方)
- セキュアコーディングの基本指針
- ドキュメンテーション(設計書、README、API ドキュメントの書き方)
- コミュニケーション(コードレビュー、仕様調整、説明責任)