こんにちは、とまだです。
今回は、プログラミング完全未経験だった私が、Ruby on Rails を学んで自社開発企業の Web エンジニアに転職し、その後、米国企業と日本企業で働くフリーランスになるまでの 4 年間を振り返ってみたいと思います。
この記事は「こうすれば成功する!」みたいなノウハウ記事ではありません。むしろ「こんな風に悩んだり、迷ったり、失敗したりしながらも、なんとかここまで来れました」という等身大の体験談です。
これからプログラミングを学ぼうと考えている方にとって、一つの事例として参考になれば嬉しいです。
また、あえて お金の話 もしています。
生々しいと思うかもしれませんが、私の経験を通じて「フリーランスエンジニアとしての収入はどれぐらいなのか」「副業でどれぐらい稼げるのか」といった具体的な数字もお伝えできればと思います。
TL;DR
- プログラミング未経験から Ruby on Rails を学び、約 4 年でフリーランスエンジニアに
- 自社開発企業での経験を経て、フリーランスエンジニアとして独立
- 現在はカナダ在住、アメリカ企業と日本企業でフリーランスとして活動中
- Ruby on Rails を選んだ理由は、Web アプリ開発の学びやすさと日本語情報の豊富さ
- 転職活動では、オリジナルアプリと AWS 資格が評価され、内定を獲得
- フリーランスとしての収入は、正社員時代の約 80% アップ
- いろんな挫折もあったが、学び続けることでなんとかここまで来れたし、フリーランスとしての働き方も楽しんでいる
軽く自己紹介
- フリーランスの Web エンジニアをやっている「とまだ」
- 日本企業&アメリカ企業と契約中
- フロントエンドからバックエンド、インフラまで幅広く対応
- Ruby on Rails、Next.js、AWS などを使った開発が得意
- Udemy 講師 としても活動中
- プログラミング学習に関する個人開発や技術ブログもやってます
- プログラミング教材の AI レビューアプリ - ノウハウ全公開記事はこちら
- プログラミング練習問題アプリ
- プログラミング学習サイト
- 技術ブログ
プログラミングを始めた経緯
新卒で入った会社は IT 系でしたが、ネットワーク系の SIer で、主にプロジェクト管理や上流工程ばかりをやっていました。
「IT 業界で働いてる」と言うと、よく「プログラミングできるんですね!」と言われましたが、実際は技術的なところにはほぼ触れていない状態でした。サーバーの設定方法もわからないし、当然プログラミングなんて全くの未経験。
周りにはゴリゴリのエンジニアもいましたが、彼らが何をやっているのかさっぱり理解できませんでした。「この人たちは一体どうやってこんなことができるようになったんだろう?」と、完全に別世界の人たちのように感じていました。
正直、IT 業界にいるのに技術的なことがわからない自分に対して、少しコンプレックスを感じていました。
その後、少しでも技術に触れられるようにと転職をし、テクニカルサポートという職種に就きました。
具体的には、自社で開発しているソフトウェアに関して、ユーザーからの問い合わせに対応したり、トラブルシューティングをしたりする仕事です。
実際に開発するというよりは、既にあるソフトウェアを使って、ユーザーの問題を解決するという仕事でした。
それでも前職よりは技術に触れる機会が増え、少しずつ「やっぱりプログラミングをやってみたいな」と思うようになりました。
テクニカルサポートの中では、同じような作業を何度も繰り返す必要があって、正直めんどくさいなと思っていたんです。
そんな時、「Python を使って作業を自動化できるかも」というのはなんとなく思いつき、Python の入門書を買って、少しずつ勉強を始めました。
最初に書いた Python プログラムは本当に簡単なものでした。ファイルの一括処理をするようなスクリプトです。
それまで手作業で 半日かかっていた作業が、ボタン一つで終わるようになったんです。
いわゆる「業務改善」ですね。この体験が、プログラミングの面白さに目覚めるきっかけでした。
そこからは、プログラマーになりたいという気持ちがどんどん強くなっていったので、本格的にプログラミングを学ぶことを決意しました。
Ruby on Rails を選んだ理由
プログラミングに興味を持ったものの、「で、何から始めればいいの?」という状態でした。
Python で自動化の楽しさは味わったんですが、「プログラマーになる」となると、また話は別ですよね。調べてみると、プログラミング言語って本当にたくさんあって、どれを選べばいいのか全然わからない。
こんな感じで、毎日のように「プログラミング言語 おすすめ」「初心者 プログラミング 言語」みたいなキーワードで検索しまくっていました。
いろいろ調べた結果、最終的にRuby on Rails に決めた理由はこんな感じです。
- とにかく Web アプリが作りたかった
- 初心者でも学びやすいという評判
- 日本語の情報が豊富
- Ruby on Rails チュートリアルという無料教材があった
当時の私はたまたまよく触るのが Web サービスだったので、「自分も Web アプリを作ってみたい」と思ったんです。
そこで Ruby on Rails なら、データベースから画面まで、Web アプリに必要なものが一通り学べると聞いて、「これだ!」と思いました。
また、英語が得意じゃない私にとって、日本語で情報を調べられるかどうかは大きなポイントでした。Ruby on Rails は日本でも人気が高く、日本語のブログや記事がたくさんあったので、「これなら何かわからないことがあっても調べられそう」と思いました。
学習の軌跡:挫折と再挑戦の連続
最初の挫折(独学での本読み期間)
意気揚々と Ruby on Rails の学習を始めました。最初は本を買って独学で始めることにしたんです。当時買った本は、確か「プロを目指す人のための Ruby 入門」と「Ruby on Rails 6 実践ガイド」でした。評判も良かったし、「これで完璧だ!」と思っていました。
でも、現実は甘くありませんでした。
最初の 1 ヶ月は、本を読んでいると「なるほど、そういうことね」と理解した気になるんです。変数とか、条件分岐とか、繰り返し処理とか。「プログラミングって思ったより簡単かも」なんて思っていました。
2 ヶ月目に入ると、Rails の部分で急に難しくなりました。MVC って何?ルーティングって?ActiveRecord って?本に書いてあるコードをそのまま入力すると、確かに動くんです。でも、「なぜ動くのか」が全然わからない。少しでもコードを変更すると、エラーが出て動かなくなる。
3 ヶ月目には、「自分でオリジナルのアプリを作ってみよう」と思って挑戦したんですが、全然できませんでした。本の通りにやれば動くけど、いざ一から作ろうとすると、何から始めればいいのかわからない。
「あれ、自分って全然理解できてないじゃん...」ということに気づいて、だんだんやる気がなくなっていきました。
この時期は本当に辛かったです。「やっぱり自分にはプログラミングは向いてないのかな」「頭の良い人じゃないとできないのかな」と毎日のように思っていました。結局、3 ヶ月ぐらいで一度諦めてしまいました。
Udemy との出会い
挫折から半年ぐらい経った頃、たまたま Udemy というオンライン学習プラットフォームの存在を知りました。
「動画で学べる」ということで、「本とは違うアプローチで学べるかも」と思って試してみることにしました。
実際にやってみると、本で学ぶのとは全然違いました。動画学習の良さを実感したポイントがいくつかあります。
- 講師の人が実際にコードを書いているところを見ることができる
- 「なぜこのコードを書くのか」という思考プロセスも聞ける
- わからないところは何度でも巻き戻して見直せる
- 手を動かしながら進められる
特に良かったのは、「講師の人も時々間違える」ということでした。エラーが出た時に、「あー、こうやって対処するんですね」という場面を見ることができて、「エラーが出るのは自分だけじゃないんだ」と安心しました。
Udemy での学習は本での学習よりもずっと理解しやすかったんですが、それでも「完全に理解できた」という感覚はありませんでした。講座を最後まで終えても、「いざ自分で何かを作れるか?」と言われると、まだ自信がない状態でした。
そのため、動画だけで学習を終えるのではなく、その後に本やドキュメントを参照しながら、実際に手を動かしてコードを書いていくことにしました。
オリジナルアプリの開発
学習の集大成として、オリジナルアプリの開発に取り組みました。私が作ったのは 「筋トレ記録アプリ」 でした。
なぜこのテーマにしたかというと、当時はコロナ禍で外出自粛が続いていて、自分自身も運動不足に悩んでいたからです。「自宅でできる筋トレのメニューを自動で作ってくれるアプリがあったらいいな」と思ったのがきっかけでした。
このアプリには以下の機能を実装しました。
- ユーザー登録・ログイン機能
- 筋トレメニューの管理
- トレーニング記録の保存
- 進捗の可視化
技術的な構成も、現場で使われている技術を積極的に取り入れました。Ruby on Rails、MySQL(データベース)、AWS EC2/RDS(インフラ)、Docker(コンテナ化)、CircleCI(CI/CD)、RSpec(テスト)といった具合です。
当時はまだ理解が浅かった Docker や CI/CD も頑張って導入しました。このアプリを作り上げた時の達成感は、今でも忘れられません。「自分でも、ちゃんと動く Web アプリが作れるんだ」という自信につながりました。
転職活動:未経験からの挑戦
オリジナルアプリを完成させた時は、「これで転職活動ができるぞ!」と意気込んでいました。でも、実際に転職活動を始めてみると、不安の方が大きくなりました。
「本当にこれで評価してもらえるのかな?」「実務経験がないのに、採用してもらえるのかな?」「面接で技術的な質問をされたら、ちゃんと答えられるのかな?」
こんな不安を抱えながらの転職活動でした。
差別化のための取り組み
未経験からの転職ということで、「他の人とどう差別化するか」を真剣に考えました。
まず取り組んだのがAWS 認定資格の取得です。「実務経験がない分、客観的にスキルを証明できるものが欲しい」と思って、AWS 認定資格の取得に挑戦しました。
- AWS Solutions Architect Associate
- AWS Developer Associate
- AWS SysOps Administrator Associate
- AWS Solutions Architect Professional
- AWS DevOps Engineer Professional
- AWS Security Specialty
正直、これだけ取る必要があったかはわかりませんが、知識を証明するための一つの手段として、資格は有効だと思いました。
転職活動の実際と内定
書類選考は、思ったより通過率が良かったです。ポートフォリオと AWS 資格のおかげだったと思います。
面接では、技術的な質問よりも、「なぜプログラマーになりたいのか」「なぜこのアプリを作ったのか」という質問が多かったです。筋トレアプリについては、「自分自身の課題を解決するために作った」という点を評価してもらえました。「課題発見能力」と「それを技術で解決しようとする姿勢」が良いと言われました。
最終的に、自社開発の Web メディア企業から内定をいただくことができました。面接官の方からは、「未経験だけど、学習意欲と基礎的な技術力は十分。実務経験を積めば伸びそう」という評価をいただきました。
後に採用担当者の方から聞いた話では、 「オリジナルアプリの完成度」と「AWS 資格の取得」が大きな決め手だった そうです。
エンジニアになってからの苦労
念願の Web エンジニアとして働き始めたんですが、入社初日から「あ、これはヤバい」と思いました。
学んだつもりでいましたが、実際の開発現場では知らないことだらけでした。
- Git の実践的な使い方(ブランチ戦略、コンフリクトの解消、チーム開発でのルール)
- RSpec の書き方(テストの重要性はわかっていたけど、実際に書けない)
- HTML/CSS の知識不足(思っていた以上に重要で、デザインの実装で苦労)
- フロントエンドの知識
- サーバー周りの知識(Linux コマンド、ネットワークの基礎)
などなど、超絶足りないことだらけでした。
特に、最初に配属されたプロジェクトでは、簡単な HTML/CSS の修正というタスクから始まったんですが、これがもう全然できない。CSS のセレクタの使い方もわからないし、HTML の構造も理解できていない状態でした。
正直心が折れそうになり、「自分は本当にエンジニアになれるんだろうか?」「迷惑をかけてばかりで申し訳ない」こんな気持ちでいっぱいでした。
幸い、職場の先輩方は親切な人ばっかりだったので「最初はみんなそうだから気にしなくていいよ」「わからないことは遠慮しないで聞いて」「失敗を恐れずに、まずはやってみよう」と励ましてくれたので、なんとか続けることができました。
会社から帰った後や週末は、ひたすら勉強の日々です。この時期は、平日は業務外で 1 日 4 時間、土日も 1 日 8 時間ぐらい勉強していたと思います。今思えばかなりハードでしたが、「絶対に一人前のエンジニアになりたい」という気持ちで乗り切りました。
3 ヶ月ぐらい経ったころには学習の成果もあって慣れてきて、少しずつ成長を実感できるようになりました。
エラーメッセージを読んで、ある程度原因を推測できるようになった、新しい機能の実装で、設計から考えられるようになった、などなど、いわゆる「自走力」が少しずつついてきた感じがしました。
副業への展開
エンジニアとしてある程度慣れてきた頃、「副業も始めてみようかな」と思うようになりました。
まず始めたのがプログラミングスクール講師の仕事です。未経験からの学習経験を活かして、プログラミングスクールの講師として働き始めました。最初は「自分なんかが教えても大丈夫なのかな?」と不安でしたが、「未経験から学んだ経験」は意外に価値があることがわかりました。
受講生の方から「同じ経験をした人だからこそ、わかりやすい」と言ってもらえることが多くて、自分の経験が人の役に立つことに喜びを感じました。講師業は月 20〜30 万円の安定収入になって、経済的にも大きな支えになりました。
また、 技術ブログでの情報発信 も続けていました。
最初は「誰かの役に立てば」という気持ちで書いていましたが、いつの間にかアクセスが集まるようになったりして、細々と広告収入も得られるようになりました。
お金目的になるのはアレとは思いつつ、サーバ代もまかなえるようになったし、別な仕事へのきっかけにもなったので、続けていて良かったと思います。
フリーランスへの転身
エンジニアとして 2 年半ぐらい経験を積んだ後、ちょうど家族の都合でカナダに移住することが決まります。
ただ、会社のルール上、正社員のままではカナダに移住することができませんでした。そこで、フリーランスエンジニアとして独立することを決意しました。
また、一つの会社にいると、どうしても使う技術や開発手法が限定されてしまいます。「いろんな現場を経験して、幅広いスキルを身につけたい」 と思っていたので、フリーランスなら、様々なプロジェクトに関わることができるのではないかと考えました。
プログラミングスクール講師や技術ブログなど、副業での活動も軌道に乗ってきていたので、「これらの活動にもっと時間を割きたい」 と思うようになったのも大きな理由です。
フリーランスとしての現在
現在はカナダに在住し、アメリカのカリフォルニア州の企業(チーム拠点はニューヨーク)と契約しつつ、日本の企業とも働いています。
特に日本企業は時差が半日以上もあるので、最初はコミュニケーションが大変でしたが、今では慣れました。
むしろ、時差があることで「集中できる時間」が確保しやすくなった面もあります。日本の深夜(現地の朝)は、チャットの通知なども来ないので、集中してコーディングできます。
あとは、現実的な話として 収入面での変化も大きなメリットでした。
- 正社員時代:月収約 50 万円(時給換算で約 3,100 円)
- フリーランス 1 年目:月収約 70 万円(時給換算で約 4,250 円)
- 現在:月収約 90 万円(時給換算で約 5,500 円)
正社員時代と比べて、約 80%のアップ です。技術力の向上もありますが、フリーランスとして「価値」を適正に評価してもらえていることを実感しています。
技術的な成長の面でも、様々なプロジェクトに関わることで幅が広がりました。GraphQL などの新しい技術への挑戦、より大規模なシステムの設計に関わる機会、開発チームのリーダーとしての経験、英語でのコミュニケーション、海外チームとの協業など、想像していなかった経験ができています。
月並みではありますが 自分の成長を実感できる というのは、フリーランスとして働く大きな魅力だと思います。
振り返って感じること
Ruby on Rails を選んでよかった
4 年間を振り返ってみて、最初に Ruby on Rails を選んだのは正解だったと思っています。
やっぱり、最初の言語としては学びやすかったです。複雑な構文に悩まされることなく、「プログラミングの考え方」に集中できました。
また、Ruby on Rails を学ぶことで、Web アプリケーション開発の全体像を理解できました。フロントエンド、バックエンド、データベース、インフラまで一通り触れることで、「エンジニアとしての基礎体力」がついたと思います。
特に自社開発企業では、Ruby on Rails の需要が高いことを実感しました。「素早くプロトタイプを作れる」「機能追加が容易」という特徴が、スタートアップや新規事業には本当に向いているんだなと思います。
Ruby on Rails で基本を学んだおかげで、後から他の技術を学ぶ時も理解が早かったです。MVC の概念、RESTful API、ORM など、Web アプリケーション開発の基本的な考え方は、どの技術でも共通しているからです。
挫折の連続も無駄ではなかった
最初の独学での挫折は、当時は「自分には向いてない」と思っていましたが、今振り返ると「当たり前のことだった」と思います。
プログラミングって、本当に最初は何もわからないんです。専門用語だらけだし、エラーは出るし、思ったように動かないし。挫折しない方がおかしいぐらいです。
大事なのは、 「挫折しても、また始めること」 だったんだなと思います。
本での独学がダメなら動画学習、それでもダメならまた別な教材、という風に学習方法を変えたのも良かったと思います。「この方法じゃないとダメ」ということはなくて、自分に合った方法を見つけることが大切なんだなと感じました。
Python で最初に自動化スクリプトを作った時、Udemy で初めてアプリが動いた時、オリジナルアプリを完成させた時...。こういう小さな成功体験の積み重ねが、次のステップに進む原動力になっていました。
会社一本じゃなくたっていい
正直、最初は「会社でエンジニアになれればそれでいい」と思っていました。でも、実際にスキルが身についてくると、いろんな形で活かせることがわかりました。
講師業、ブログ執筆、Udemy 講座、教材作成、個人開発...。こういう可能性があることは、最初は全く想像していませんでした。
ましてやカナダに住んで、アメリカの企業とも仕事をするなんて、プログラミングを始めた頃は夢にも思っていませんでした。でも、プログラミングスキルがあることで、こういう働き方も可能になるんだなと実感しています。
最初は「早く覚えて働けるようになりたい」という気持ちだったんですが、今は「新しい技術を学ぶこと自体が楽しい」と感じています。技術は常に進歩しているので、学び続けることが必要なんですが、それがストレスではなく楽しみになっているのは、自分でも意外でした。
これから始める方へ
この記事を読んでくださる方の中には、これからプログラミングを始めようと考えている方もいるかもしれません。私の経験が、少しでも参考になればと思うのですが、最後に「こんな風に感じています」ということをお伝えしたいと思います。
言語選択について
私は Ruby on Rails を選びましたが、「これが絶対に正解」ということではありません。大切なのは、 「自分のこれからの目標に合ったものを選ぶ」 ことだと思います。
作りたいものに合わせるのも大事ですね。
Web アプリを作りたいなら Ruby on Rails、モバイル アプリを作りたいなら Flutter、データ分析をやりたいなら Python、フロントエンドをやりたいなら React や Vue.js...。
ただ、「何を作りたいかわからない」という場合は、Ruby on Rails は良い選択肢だと思います。Web アプリケーション開発の基本を一通り学べるからです。
学習方法について
本、動画、実践的な学習環境、オンライン教材...いろんな学習方法があります。「これじゃないとダメ」ということはないので、いろいろ試してみて、自分に合った方法を見つけることが大切だと思います。
挫折は本当に当たり前のことです。私も何度も挫折しかけました。大事なのは、「挫折しても、また始めること」です。
学んだことをブログに書いたり、勉強会で発表したり、GitHub にコードを公開したり。アウトプットすることで、自分の理解も深まるし、後々の転職活動や副業にも役立ちます。
転職活動について
未経験からの転職では、ポートフォリオが本当に重要です。ただし、「すごいものを作らないといけない」ということではありません。大切なのは、「なぜそれを作ったのか」「どんな技術を使ったのか」「どんなことを学んだのか」を説明できることです。
未経験だからこそ、 スキルを客観的に証明できるもの があると良いと思います。資格、ブログ、GitHub、何でも良いので、「自分はこういうことができます」と示せるものを用意しておくと良いでしょう。
キャリアについて
私も最初は「とにかくエンジニアになりたい」という気持ちだけで、具体的なキャリアプランなんて何もありませんでした。でも、実際に働き始めてから、いろんな可能性が見えてきました。最初から完璧な計画を立てる必要はないと思います。
エンジニアとしてのスキルは、本業以外でもいろんな形で活かせます。講師業、ブログ執筆、教材作成、開発案件...。こういう可能性があることも頭の片隅に置いておくと、将来的に選択肢が広がると思います。
おわりに
長々と書いてしまいましたが、プログラミング未経験から始めて、Ruby on Rails を学んで、自社開発企業の Web エンジニアになり、フリーランスとして独立するまでの約 4 年間を振り返ってみました。
決して順風満帆ではありませんでしたが、挫折と再挑戦を繰り返しながら、なんとかここまで来ることができたのだなと思います。
「こんな話も聞いてみたい」「こんなことを知りたい」というリクエストがあれば、ぜひコメントやメッセージで教えてください。今後の記事の参考にさせていただきます!
ちょっと宣伝
プログラミング学習の知識定着を助ける Web アプリ を開発しています。
まだまだ発展途上ですが、プログラミング学習に役立つ機能を追加していく予定ですので、興味がある方はぜひ試してみてください!
このあたりの開発についても別途記事にまとめる予定です。