私はRubyとJavaScriptばかりやってきたのですが、「獲得できる案件の幅を広げたい」、「Rubyだけだとちょっと不安」、「ちょっと飽きてきた」ということからGo言語を学習して、無事案件獲得することができました。
本記事では、Go言語未経験だった私が案件獲得するまでにしたことを紹介していきます。
未経験言語に挑戦しようと思っているフリーランスエンジニアの参考になれば幸いです。
目次
軽く自己紹介
エンジニア歴8年。
仕事では、ずっとRuby on RailsとReact(Next.js), Vue.jsをやっていました。メインはサーバーサイド。
あとは個人的にPython, Objective-C, Swiftをちょっと触ったことがあるといったレベル。
なぜGo言語の案件を狙ったのか
- 静的型付け言語の経験を積みたかった
- バックエンドの言語でRuby以外の経験を積みたかった
- 現在注目されており多くの新規サービスで採用されている
- 比較的新しい言語なので経験豊富な人が少なく、未経験でも狙いやすい
ずっとRubyをやってきましたが、新規サービスでRubyが採用されることが減っていると感じています。(求人情報からも感じられます)
またRubyは日本語の情報も多いので初心者でも始めやすく、駆け出しのRubyエンジニアが増えています。彼ら・彼女らが数年経験すれば一人前のRubyエンジニアになり、そうなるとフリーランスとしての案件も減っていくという危機感がありました。(多くのスクールはRubyをメインに教えている)
そこで特性の異なる静的型付け言語で注目されているGo言語を習得することに!
レバテックが発表している【2020年7月発表】プログラミング言語別求人案件ランキングでもその傾向が見られるので、ある程度正しい考えだったと思います。
未経験からGo言語案件獲得までにしたこと
1. A Tour of Go でざっくり言語仕様把握
A Tour of Goは公式が提供しているGo言語の学習教材です。日本語版もあり、実際にコードを書きながらGo言語の仕様を理解できます。
まずはA Tour of Goを一通りやってざっくりGo言語を理解しました。
2. 書籍でGo言語の言語仕様とWeb APIの実装方法を学ぶ
公式ドキュメントを読もうと思いましたが面倒だったので、Go言語に付いて詳しく学べる「プログラミング言語Go」を読みました。
練習問題もあり、参照型、ポインタ、チャネル、ゴルーチン、スライスといったGo言語の特徴を理解するのに役立ったと思います。
プログラミング言語Goを終えたら、Webアプリケーションの作成を学ぶために「Go言語によるWebアプリケーション開発」を読みました。特定のフレームワークに依存せず、Webアプリケーションを作成していくという内容なので良かったです。
Go言語にはRubyにおけるRailsやPythonにおけるDjangoといった絶対的なフレームワークが無いので、フレームワークなしで実装して理解を深めた方が良いと思います。(獲得した案件で何が使われているかわかないですから)
3. ポートフォリオ作成
書籍で勉強した後は、ポートフォリオ作成。
「フリーランスエンジニアが未経験言語の案件を獲得する方法」でも書いた通り、実務経験が無い言語の案件を取る場合、ポートフォリオは必須です。
何もないと企業側も判断できないですから!
- シンタックスハイライトするcatコマンド
- duコマンドをGo言語で実装
- サンプル画像(jpeg, png)を作成するコマンド
- LINE BOTのAPIを2つ
凝ったものを作るのは大変なので、シンプルなものを量産しました。
個人的にはコマンドラインツールを実装するのがオススメ。
ポイント
- 既存のlinuxコマンドと同じ動きをするものをGo言語で実装するだけでもポートフォリオになるので、特にアイデアがなくても大丈夫
- 特別な環境構築不要(Go言語を書くことのみに集中できる)
- homebrewに公開すれば、やった感を得られる
4. Go言語の実務経験が無くても良い案件を探す
自分で案件探し。自分だけだと不安なので、保険としてエージェント2社にも案件探しを依頼。
WantedlyやGreenなどの求人サイトで業務委託可能なものを探して連絡して、無事案件獲得!!
未経験言語ですがエージェントを介していないので、単価を下げずに済みました。