キャリアというと大袈裟ですが、この先フリーランスエンジニアとしてどうして行くか迷走していたときの話を書いていきます。
迷走していたのは2019年3月から9月頃までの半年間。
長いね...迷走。笑
私のように不安に駆られて勢い任せになって迷走しなくて済むように、一度立ち止まって冷静に考えるキッカケになれば幸いです。
なりたい将来像・エンジニア像
意識低いというか夢も目標もなくて
歳をとってもプログラマーとしてサービス開発に携わって「実装したこの機能評判いいよー」とか「クソ機能作ってしまった」とか言い合いながらワチャワチャ楽しく過ごしたい。
ただこれだけ。
そのために日々勉強してなんとか時代の流れにしがみつこうとしています。
(子育てを言い訳に少しサボりがちですけど)
迷走開始時の状況
- 29歳
- 実務経験のある言語・FWは Ruby(Rails) / React / Vue の3つ
- フリーランスになって1年
- Rails / React / Vue.js で週4〜5日のメイン案件と週1〜2日の副業案件をこなす日々、扱う技術は会社員時代と大きく変わらない
- Ruby(Rails)採用企業が少し減っている気がしていた、エージェントから紹介される案件にも代わり映えがない(似たようなもの)
こんな状況で「同じFW・言語・構成で飽きたなー」、「今後面白そうな案件があっても自分の経験では無理なんじゃね!?」とか考えてました。
私のなりたい将来像は先程書いたとおり
「歳をとってもプログラマーとしてサービス開発に携わってワチャワチャ楽しく過ごしたい」
で、そのためには若いうちにスキルや言語の幅を広げようと考え
↓↓↓
「別の言語を習得して案件獲得しよう」と思い立ったわけです。

また、言語を増やすではなく、アーキテクチャの勉強とかDB周りの知識を深めるとかOSS活動してみるなどしてスキルアップする選択肢もあったでしょうね笑。
今思うと、バックエンドエンジニアとしてRubyしか実務レベルで使ったことがない(使えない)ことにコンプレックスを感じていただけかな。
【迷走】Pythonと機械学習に手を出す
2019年2月頃。
当時かなり注目されていたPythonと機械学習に安易に興味をもっちゃいました。
(今もかなり注目されてますけどね)
「これからは機械学習だぜ!」、「機械学習と相性の良いPythonだぜ!」というネットでの声に安易に踊らされて、まずPythonでWEBアプリケーションを作れるようになろうと学習をはじめました。

さっきも書いた、バックエンドエンジニアとしてRubyしか実務レベルで使ったことがない(使えない)ことにコンプレックスを感じていたってことですかね!?
とりあえず、Pythonの基本的なこと勉強して、Djangoのチュートリアルやドキュメント見ながらサンプルアプリ作って、Vue.js と Django でポートフォリオを完成させました。
このとき、うっすら感じていたのは
- さんざんRuby書いてきたんだからPythonもいけるよね。
- 今じゃなくて、歳とってからでもPython書きたくなったら挑戦可能じゃね!?
でもまあ、せっかくポートフォリオも作ったし、機械学習と相性良いしね!ってことで自分を騙しながら機械学習の勉強に着手しました。
Udemyでキカガクの講座受講、courseraでスタンフォード大学のアンドリュー先生の講座受講したり、オライリーの本読んだり、Kaggleに挑戦したり結構真剣にやりましたが、学んでいるうちに少し目が覚めました。
- ん?俺がやりたいのはWebエンジニア(Web Developer)であってMLエンジニアではないよな
- MLエンジニア兼Webエンジニアなんて無理じゃね?
- 「雰囲気でLogistic regression使ったら良い感じになりましたー」ってレベルで良ければ可能だけど
- MLに関わるなら現在の主流とか論文とかキャッチアップしないと到底戦えないし、そんなのやっていたらWebエンジニアやってる暇ないよ
→ Pythonと機械学習を断念して、別の道を探すことに!!

いや、まあ当たり前なんだけどね笑。
Pythonに手を出したのは良いとしても、なぜ機械学習にも手を出したのかは良くわからん笑。
「機械学習も扱えたら食いっぱぐれないかなー」ってよこしまな考えがあったからでしょう。
もちろん「機械学習エンジニアを目指したい!!」って人なら良いと思います。
私は強い思いがあったわけでもないし、やりたいのはWebエンジニアだから違うってなっただけです。
オムツを替えながら冷静にちゃんと考える
子供のオムツ替えたり、お風呂に入れたりしながら考えていました。
育児もあって独身時代のように時間に余裕がないので、次はちゃんと考えて行動しようと。
選択肢は2つ。
- このままRuby / React / Vue 中心に案件をとる。その代わり、DBの知識を深めたり、gRPCやGraphQLなど扱ったことがない技術にふれる。
- 何か別の言語を学ぶ
結局2を選びました。
1でも良いですがフリーランスでやっていくことを考えると、なんだかんだ言語経験は案件獲得に影響するので。
(会社員なら1を選んでいたと思う。)
では、どの言語を学ぶかですが
Rubyを長いことやってきたからPHPやPythonは無しにしよう
→ じゃあ、静的型付け言語か!Rubyとは特徴違うしイイじゃん!
→ でも今からSwift? Java? C? C#? C++?
→ Swiftは趣味で書いていたけどスマホアプリエンジニアに転向するつもりはないし、Java使っている企業って雰囲気あわなさそう。
→ ・・・・・・あ、Go言語は?
→ 静的型付け言語、高速、並行処理。イイじゃんGo言語!
→ Rubyを採用しているサービスとは違った特徴のサービスに出会えそうだし!Go言語に乗り換えるって話も良く聞くし。
って感じでGo言語を学ぶことに。
そして無事、Go言語案件獲得!
参考 Go言語未経験のフリーランスエンジニアが案件獲得までにしたこと
Go言語に挑戦してみた感想とこれから
Go言語に挑戦して正解でした。
(流石に今やっていることをRubyでやると遅いだろうなーと思いながら)大量データをGo言語でイジイジしたり、今まで経験してないことをやれています。
なにより静的型付け言語の経験積めているというのが大きいかな。
言語の流行り廃りがあると思いますが、フリーランスとして活動していく上で動的型付け言語と静的型付け言語の両方の経験があると精神的に少し安心します。
縁があれば他の言語に手を出すかもしれませんが、基本的にRubyとGo言語を中心にする予定です。
これからは、仕事しながらGo言語学びつつ、今まで「なんとなく理解した」で放置しちゃっているものを学びなおしたり、gRPCとか新しい技術のキャッチアップに時間を使っていきます。

ただ、不安に駆られて勢い任せに迷走しては思うように前に進めません。
一度立ち止まって冷静に考えてみましょう。