[SAMPLE] 独学プログラミング3年間の学習記録
独学でプログラミングスキルを習得した3年間の学習記録
完全未経験から独学でプログラミングを習得し、現在はフリーランスエンジニアとして活動しています。本記事では、3年間の学習過程で実践したこと、失敗したこと、そして効果的だった学習法を詳しく共有します。
学習開始時のスペック
バックグラウンド:
- 年齢: 28歳
- 職業: 営業職(プログラミング経験ゼロ)
- 学歴: 文系大学卒
- PC
スキル: Excel、PowerPointの基本操作のみ
学習に使える時間:
- 平日: 2時間(朝1時間 + 夜1時間)
- 休日: 6時間
- 合計: 週22時間
1年目 : 基礎固めとWeb開発入門
最初の3ヶ月 : プログラミングの基礎
学習内容:
- HTML/CSSの基礎(Progate)
- JavaScriptの基礎(ドットインストール)
- Git/GitHubの使い方
使用した教材:
- Progate(有料プラン: 月額1,078円)
- ドットインストール(プレミアム: 月額1,080円)
- MDN Web Docs(無料)
成果物:
- 簡単な自己紹介サイト
- ToDoリストアプリ
- 計算機アプリ
3〜6ヶ月 : Reactの学習
学習内容:
- React基礎(公式チュートリアル)
- Reactフック(useState、useEffect)
- コンポーネント設計
躓いたポイント:
- propsとstateの違い: 何度も復習して理解
- 非同期処理: Promiseとasync/awaitの概念
- コンポーネントの再レンダリング: useEffectの依存配列
解決方法:
- 公式ドキュメントを繰り返し読む
- 小さなアプリを複数作る(10個以上)
- Twitterで同じ悩みを持つ学習者とつながる
6〜9ヶ月 : バックエンドとデータベース
学習内容:
- Node.js/Express.js
- PostgreSQL/SQL基礎
- REST API設計
作成したプロジェクト:
- ブログシステム(CRUD機能)
- 認証機能付きTodoアプリ
- 簡易ECサイト
重要な気づき:
データベース設計の重要性に気づき、正規化について深く学習しました。
9〜12ヶ月 : フルスタック開発
学習内容:
- Next.jsの基礎
- TypeScriptの導入
- Vercelへのデプロイ
ポートフォリオサイト作成:
- Next.js + TypeScript
- Tailwind CSS
- Contentful(ヘッドレスCMS)
成果:
初めて知人から簡単なWebサイト制作を受注(5万円)
2年目 : 実践と収益化
1年目の振り返りと目標設定
達成できたこと:
- HTML/CSS/JavaScriptの基礎習得
- React/Next.jsでのアプリ開発
- Git/GitHubの基本操作
- 簡単なバックエンド開発
2年目の目標:
- 月10万円の収入を得る
- TypeScriptを完全に理解する
- テストコードを書けるようになる
- チーム開発を経験する
クラウドソーシングへの挑戦
使用したプラットフォーム:
- クラウドワークス
- ランサーズ
- ココナラ
最初の3ヶ月の実績:
- 応募数: 42件
- 受注数: 3件
- 収入: 合計8万円
低単価案件から始めた理由:
実績がゼロの状態では高単価案件は取れないため、まずは評価を集めることを優先しました。
スキルアップのための投資
オンラインコース:
- Udemy「The Complete Web Developer」(13,000円)
- Udemy「React完全ガイド」(12,000円)
- フロントエンドマスター講座(20,000円)
書籍:
- 「リーダブルコード」
- 「Clean Code」
- 「JavaScript Good Parts」
- 「TypeScript実践プログラミング」
合計投資額: 約10万円
収益化の過程
| 月 | 収入 | 案件数 | 時給換算 |
|---|---|---|---|
| 13ヶ月目 | 28,000円 | 1件 | 700円 |
| 14ヶ月目 | 35,000円 | 2件 | 875円 |
| 15ヶ月目 | 42,000円 | 2件 | 1,050円 |
| 18ヶ月目 | 85,000円 | 3件 | 1,700円 |
| 21ヶ月目 | 120,000円 | 3件 | 2,400円 |
| 24ヶ月目 | 180,000円 | 4件 | 3,600円 |
ターニングポイント:
18ヶ月目に企業案件(Next.jsでのコーポレートサイトリニューアル)を受注できたことで、実績と収入が大きく向上しました。
3年目 : 専門性の確立
TypeScriptとNext.jsの深掘り
学習内容:
- 高度な型システム(条件型、テンプレートリテラル型)
- Next.js App Router
- Server Components/Server Actions
- パフォーマンス最適化
作成したプロジェクト:
- SaaS型タスク管理ツール
- リアルタイムチャットアプリ
- ブログプラットフォーム
テスト駆動開発(TDD)の習得
学習プロセス:
- Jest/React Testing Libraryの基礎
- E2Eテスト(Playwright)
- TDD思考の習得
効果:
- バグの早期発見
- リファクタリングの安心感
- コード品質の向上
OSS活動の開始
貢献したプロジェクト:
- Next.jsのドキュメント翻訳
- UIライブラリのバグ修正
- 小規模ライブラリのメンテナー
得られたもの:
- 英語ドキュメントを読む習慣
- コードレビューの経験
- グローバルな開発者とのつながり
フリーランスとして独立
3年目の実績:
- 月収: 平均40万円
- 主な案件: Next.js/React開発
- 契約形態: 準委任契約(時給5,000円〜)
クライアント獲得方法:
- 過去のクライアントからの紹介: 60%
- エージェント経由: 30%
- SNS経由: 10%
効果的だった学習法
1. アウトプット駆動学習
実践したこと:
- 学んだことを毎日ブログに書く
- Twitterで進捗を報告
- 週1回の勉強会での発表
効果:
知識の定着率が大幅に向上し、同じ目標を持つ仲間とつながれました。
2. 写経とオリジナル実装の組み合わせ
プロセス:
- チュートリアルを完全にコピー(写経)
- 機能を1つ追加してみる
- 別の技術スタックで実装し直す
例:
TodoアプリをReact → Vue.js → Svelteで実装することで、フレームワークの本質的な違いを理解しました。
3. 定期的な復習システム
Anki(間隔反復学習アプリ)の活用:
- プログラミング用語
- よく使うコードスニペット
- エラーメッセージと解決方法
復習スケジュール:
- 1日後
- 3日後
- 1週間後
- 1ヶ月後
4. ペアプログラミング
オンラインコミュニティでの実践:
- Discordサーバーで週1回
- お互いのコードをレビュー
- 知らない技術を教え合う
メリット:
他人のコードを読む力が向上し、コードレビューの視点が身につきました。
5. タイムボックスの活用
ポモドーロテクニック:
- 25分集中 + 5分休憩
- 4セット後に15分休憩
効果:
集中力が持続し、1日の学習時間を正確に記録できました。
失敗から学んだこと
1. チュートリアル地獄に陥った
問題:
チュートリアルを消化することが目的になり、実際に手を動かして作るアウトプットが不足していました。
解決策:
チュートリアル : オリジナル開発 = 3 : 7 の割合に変更しました。
2. 完璧主義
問題:
すべてを完璧に理解しようとして、なかなか次に進めませんでした。
解決策:
7割理解で次に進み、実践の中で理解を深めるアプローチに変更しました。
3. 技術の追いかけすぎ
問題:
新しいフレームワークやライブラリが出るたびに手を出し、何も深く理解できませんでした。
解決策:
Next.js/TypeScriptに集中し、1年間は他の技術に手を出さないと決めました。
学習に使った総額
| カテゴリ | 金額 |
|---|---|
| オンライン学習サービス | 108,000円 |
| 書籍 | 85,000円 |
| オンラインコース | 65,000円 |
| 開発環境(PC、モニター) | 250,000円 |
| ドメイン・サーバー | 30,000円 |
| 合計 | 538,000円 |
投資対効果:
3年目の年収が480万円なので、半年で投資額を回収できました。
モチベーション維持の工夫
1. 学習記録の可視化
Notionで以下を記録:
- 毎日の学習時間
- 学んだ内容
- 作成したコード
- 収入の推移
2. マイルストーンの設定
3ヶ月ごとの目標:
- 3ヶ月: ToDoアプリ完成
- 6ヶ月: Reactアプリ公開
- 9ヶ月: 初案件受注
- 12ヶ月: ポートフォリオ完成
達成するたびに自分にご褒美を設定しました。
3. コミュニティへの参加
参加したコミュニティ:
- もくもく会(週1回)
- Discordサーバー(毎日)
- TwitterのプログラミングクラスタTwitterで毎日進捗報告
同じ目標を持つ仲間の存在が、挫折を防いでくれました。
これから学習を始める人へのアドバイス
1. 小さく始めて継続する
最初から1日8時間勉強する必要はありません。まずは1日30分から始めて、習慣化することを優先してください。
2. アウトプットを恐れない
完璧でなくても、学んだことを発信してください。アウトプットすることで知識が定着します。
3. 自分に合った学習方法を見つける
動画が合う人、本が合う人、実践で学ぶ人、それぞれです。いろいろ試して自分に合った方法を見つけてください。
4. 焦らず、比較しない
他人の進捗と比較する必要はありません。自分のペースで着実に進めることが重要です。
5. 楽しむことを忘れない
プログラミングは楽しいものです。課題を解決できたときの達成感を味わいながら、学習を楽しんでください。
まとめ
3年間の独学を振り返ると、以下の要素が成功の鍵でした。
- 継続的な学習習慣
- アウトプット重視
- コミュニティとのつながり
- 適度な投資
- 明確な目標設定
プログラミング学習は決して楽ではありませんが、正しい方法で継続すれば、必ずスキルは身につきます。
この記事が、これからプログラミングを学ぼうとしている方の参考になれば幸いです。
コメント