去年の3月から副業を始め、10月からフリーランスとなり、今年は丸1年フリーランスエンジニアとして仕事をしていた。
去年から継続していた2社でのお仕事がそれぞれ終了し、今年は現時点で4社同時並行で受けている。
どうなる事かと思ったが何とか続いてはいる。
ざっと振り返ってみたい。
(開発していたもののジャンルをざっくり書いてはみたが、
 意図的に詳細に書かないようにしたのとそもそも何と表してしていいか分かっていないものもあり正確性に欠けるかもしれない)

〜8月 GoでBIツール開発

去年から週3日でお世話になっていた。
やっていた事はバックエンドのAPIサーバーやバッチなど。Gin, GORM を使用していた。
Go の開発はここを含めて3社経験したが、ここが最もソースコードの秩序の保たれたプロジェクトだったと思う。
コードレビューが手厚く、レビューを通してGoを読み書きする勘所というか、
詳しい人のいない環境では身に付きにくいGo開発スキルを鍛えてもらえた。
週3日程度関わる方やフルリモートの方も多く、そういうチームで上手く回る仕組みも整っていた。
私は最初のうちは3日とも出社しており、後半は週1〜2日ほどリモートという働き方をさせてもらっていた。

…と、何だか去年の振り返り記事と同じ事しか書いていない気がしてきたが、

こちらでも Go で API サーバーやデータ収集バッチなどを書いている。
Swagger 定義から Go と TypeScript のコードを自動生成していたりレビュー体制がしっかりしていたり、
複数人でそこそこの規模の Go プロダクトを開発しているわりには今の所あまりつらみを感じていない。

フルリモートや半リモートの方も多数いるが、
毎日 Google Hangouts でミーティングをしながらタスクの整理や進捗確認などをしていて、
わりときっちりかっちり進めている印象がある。
裏を返せばこの好印象が最後まで変わらず続いたという事でもある。
お陰様で今もGoで開発を続けているが、ここで得られた経験は大きかったと思う。
事業内容も、なかなか面白い分野のデータを扱っていて楽しかった。

ちょうど契約終了・更新のタイミングで10ヶ月間と短い期間での終了にさせてもらったが、もう少し続けていたかった思いもある。
(後述するもう1社の終了が予定外に伸びて、そちらとの兼ね合いでの調整的な事情があった。)

普段のランチも何かしらのイベントも、美味しいものをたくさんご馳走になった。
ありがとうございました。

〜9月 Goで広告配信システム開発

前職同僚に誘われて副業時代も含めて1年3ヶ月お世話になった。
ほとんどは管理画面のAPIサーバーを Gin, GORM などを使って開発していたが、
最後のほうでは ClickHouse, Aerospike からデータを読み取り Elasticsearch に書き込むバッチの開発にも携わり、
いずれも触った事のないミドルウェアだったのでなかなか楽しかった。
実は丸一年経った6月いっぱいで終了させてもらおうと思い次を探していたのだが(そして見つかったのだが)、
3ヶ月延長させてもらう運びとなった。
一時期は本当に人不足が深刻で、API サーバーの実装を先行して進めていたらこのままではフロントエンドが間に合わないという事で
一部 API との繋ぎ込みの部分のフロントエンド開発も手伝ったりしていた。
React+Redux を気合と雰囲気で書き、何とか動くところまで持っていけたが…後々の負債になりそうで心苦しくもある。

直接絡む機会はあまりなかったが、SRE チームが強い会社で、GCP, k8s などに詳しい人が先進的な機能を使い倒しているという印象があった。
私はとりあえず言われるがままに kubectl コマンドを打っては「はえ〜」と言っていた程度だが、
この辺もキャッチアップできればよかった。

ちなみにおちんぎん的なやつは最も良く、延長させてもらうに至ったのも正直なところ
という事情があった。
これが結局最後まで続き、とにかく自由にやらせてもらい過ぎた…感謝しかない。
ご好意に甘え続ける選択もあったが、
フルタイムで参画できる人が増えて人不足は一旦解消されつつあった事、
自分が携わっていた箇所の開発が落ち着いて手離れできそうな事などタイミング的にここかな、と思い終了させてもらった。
悩んだら「別に高収入や安定を求めてフリーランスになったわけじゃないしなぁ」というのが指針。

スタートアップのサービス立ち上げ時の混沌とした時期を全力で楽しませていただいた。
ありがとうございました。

9月〜 ScalaでFinTech系開発

今年から始めたところで、話を遡ると元々2017年のScala関西Summitで少しお話させてもらった社員の方に声をかけてもらい、
オフィスに遊びに行かせてもらったりしていた会社だった。
翌年にも再度声をかけていただき、あいにくどちらの時期も前職で勤めていた頃でタイミングが合わず…という状況だったが
同じ会社の方から二度声をかけてもらう事はそんなにないので気にはなっていた。
また、それ以降も何かしらのイベントで社員の方が登壇されているのを見かけたり、お名前を知っている方が入社されたりしているのを見聞きしていた。

週2日で働けるところを探していたところ、また声をかけていただきお世話になる事にした。

最初の頃はキャッチアップも兼ねてペアプロしつつオンボーディングしてもらい、非常に助かった。
その後は少しだけ Terraform を触ってみたり、Scala バッチの改修などをしている。

私のような働き方の業務委託エンジニアを入れるのはほぼ初めてという事で、契約面から何から色々と前例のない手配をしていただいたようだ。
ここで結果を出して同じような働き方の人の間口を広げられれば、と思ってはいたが、
イニシャルコストをペイできているかというとなかなか…。

9月〜 Goでアルバイト求人アプリ開発

ここは現在唯一フリーランスエンジニアのお仕事紹介エージェント的なところで紹介してもらった。
何件か紹介してもらったが、決め手は Go, Kotlin, フロントエンド(Nuxt.js)にそれぞれ詳しい方が外部技術アドバイザーのような形で関わっているらしく、
そういう人たちがいる中で働くのが魅力に感じたから。
関わり方はそれぞれのようで、私が参画している Go のチームでは社内 Go 勉強会やもくもく会の講師的な立場で顔を出してくれている。
Kotlin のチームでは定期的にリモートミーティングなのかレビューなのか、そういった事もやっているようだ。

週2日、うちミーティングのある曜日の半日だけ出社していて後はリモートで稼働しているが、私よりもっと頻度が少なかったりフルリモートだったりな方も何人かいるようだ。
こういう働き方のメンバーが多くいると取りまとめる人が大変そうな印象があるが、うまく回っているように見える。
Gin, GORM などを使った API サーバーを開発しており、今年前半の2社と似通っている部分もあるが、
参照系の API に GraphQL を使用していたり個人的に学びのある箇所も多い。

今年前半の広告システム開発でも似たような状況になったが、開発した API サーバーと繋ぎ込む部分のフロントエンドも少し担当したりした。
こちらでは React ではなく Nuxt.js で、既存の実装を参考に何とか動くものを作っている、という感じ。

これはまぁ、紹介してくれたエージェントの媒体なので言ってしまえば提灯記事なのだが、
ともあれこのような形で評価してもらえたのは素直に嬉しい。

11月〜 ScalaでSaaS開発

Twitterでふわっと「流通している Scala エンジニアですよ」などと言っていたところ見つけてもらい、
社員の方とランチしながら話を聞いたのが6月頃。
その時点では特に参画する、というところまでは至らなかったが、
その後 builderscon や Scala 秋祭りといったイベントで登壇されていた社員の方と話したりしつつ、
こちらから再度声をかけて参画させてもらう運びとなった。
最初の頃はリファクタリングや既存の使用していない箇所の削除など当たり障りのなさそうなところから手をつけ、
最近では少しずつ機能改修などにも手を出せている感じはする。

しかし、作っているものはなかなか難解だ。
いたずらに仕様が複雑なわけではなく、難しい現実の問題に立ち向かっているので難しくならざるを得ない、といったところだろうか。
また、Scala の開発はそこそこ慣れているつもりだったが、初めて触るライブラリ Eff がモリッと使われていて、
使う分には便利で楽をさせてもらっているがちゃんと動きを理解するにはまだ修行が必要そうだ。

作っているものは難解だが、ビジネスサイドも含めた社員全員でドメインモデル勉強会を開催したり深く議論を交わしたりと
難解さに立ち向かう良い取り組みがされているように思う。
11月に参画してから徐々に成果を出せつつあるつもりでいたが、よくよく振り返ってみればマージ後に考慮漏れが見つかって revert したものがいくつか目立つな…
来年は積み残しを切り崩していかないと。

10月〜 ScalaでチャットAPI連携サービス開発

上記3社で2日ずつ稼働して、どうやりくりしてもこれ以上は無理では?とお思いでしょうか。
奇遇ですね、私も同感です。

ここは元々仕事として受けるつもりはなかったのだが、
元同僚と近況報告をする機会があり、ずいぶん楽しそうに今の仕事の話をするなぁ、と話を交わすうちに
気づいたらバスに乗っていた。
今の状況を再三説明した上で、それでも問題ないという事だったのでとりあえずやるだけやってみるか、というお気持ち。
私と似たような経緯で参画している副業エンジニアの方々もいて、アプリ開発チーム全員の時間が合うのがそこしかないという事で
何と週に一回朝8時からリモートミーティングをしていて、眠い目をこすりながら今のところ毎週続いている。

日曜や平日夜の隙間時間にコードレビューをしたり少しずつではあるが他サービスとの API 連携箇所を担当して開発を進めている。
とはいえ今のところの成果はエモい自己紹介を書いて酒を飲んだくらいですね…。
開発チーム・機械学習チーム・デザインチームには面白い人たちが集まって多国籍軍感あり楽しいので、引き続き何とかやりくりしつつ続けていければと思う。
今のような働き方でゼロイチフェーズの開発にここまで深く関われるとは思わなかった。この機会は大事にしたい。

現在の生活サイクル

月曜出社、
火曜午前中リモートで午後出社、
水曜出社、
木曜リモート、
金曜リモート、
土曜出社、
というサイクルが確率されつつある。
週6日稼働はキツいかな、と思っていたが、ちょうど木金がフルリモートで2日続けて家にこもっていて
そろそろ外に出て人の顔が見たいなぁとなった頃に土曜日になるので、まぁ何だか良いタイミングなような気がしなくもない。

フリーランスを始めた頃には週2日稼働を2社で受けて、週3日は休みにして自己研鑽に当てようなどと思っていたが、
どうも休みがあると虚無に溶かしてしまう自分の性分に薄々感づいてきたので仕事を入れたほうが有意義に過ごせそうな気がする。

開発の上で心掛けているのは、1社あたりの稼働が2〜3日置きになるのでなるべくボールを自分が持った状態で1日を終わらせないようにしている。
とりあえず PR を出してその日を終了しておけば、2日空けて次の稼働日にはレビュアーに打ち返してもらっているのでそこから再開、とできるのが理想。
とはいえ毎回そのように綺麗にいくとも限らないので、その日の終わりにどこまで粘るかは見計らわなければいけない。

まぁ、普通に考えれば週2日稼働が3人いるより週5日稼働が1人いるほうが絶対に良いはずなので、
そんな中で今の働き方で関わる意義とは?みたいな事はちょくちょく考えてしまう。
この辺は、今の立ち位置今の働き方だからこそできる立ち振る舞いをするべきである、という考えと、
しょーがねーだろ週2日なんだから、的な開き直りを適宜うまく使い分けて乗り越えていかないといけないように思う。

私の酔狂な働き方に付き合っていただけている方々に感謝を。

来年もやっていこう。
やっていくぞ。

Copyright© 2011-2021 Shunsuke Otani All Right Reserved .