去年から継続していた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社の終了が予定外に伸びて、そちらとの兼ね合いでの調整的な事情があった。)
普段のランチも何かしらのイベントも、美味しいものをたくさんご馳走になった。
お手伝い先のフェアウェルランチで、ホテルブュッフェ。 pic.twitter.com/gknH9NffOA
— ザネリ (@so_zaneli) January 29, 2019
お手伝い先の打ち上げでごっっっっつい良い肉をいただいている…! pic.twitter.com/ORj1E2yBq2
— ザネリ (@so_zaneli) March 4, 2019
ありがとうございました。今月で契約終了するお手伝い先で送別会を開いていただいた。😭🍣🍶フリーランスになって初めて(副業の頃を含めると三社目)の会社が良いところでよかった。Go での API サーバ, バッチなどの開発力も随分鍛えられたように思う。感謝。 pic.twitter.com/wzpWffnYmI
— ザネリ (@so_zaneli) August 27, 2019
〜9月 Goで広告配信システム開発
前職同僚に誘われて副業時代も含めて1年3ヶ月お世話になった。ほとんどは管理画面のAPIサーバーを Gin, GORM などを使って開発していたが、
最後のほうでは ClickHouse, Aerospike からデータを読み取り Elasticsearch に書き込むバッチの開発にも携わり、
いずれも触った事のないミドルウェアだったのでなかなか楽しかった。
実は丸一年経った6月いっぱいで終了させてもらおうと思い次を探していたのだが(そして見つかったのだが)、
3ヶ月延長させてもらう運びとなった。
一時期は本当に人不足が深刻で、API サーバーの実装を先行して進めていたらこのままではフロントエンドが間に合わないという事で
一部 API との繋ぎ込みの部分のフロントエンド開発も手伝ったりしていた。
React+Redux を気合と雰囲気で書き、何とか動くところまで持っていけたが…後々の負債になりそうで心苦しくもある。
直接絡む機会はあまりなかったが、SRE チームが強い会社で、GCP, k8s などに詳しい人が先進的な機能を使い倒しているという印象があった。
私はとりあえず言われるがままに kubectl コマンドを打っては「はえ〜」と言っていた程度だが、
この辺もキャッチアップできればよかった。
ちなみにおちんぎん的なやつは最も良く、延長させてもらうに至ったのも正直なところ
という事情があった。単価がぐーんと上がった。(´・_・`)
— ザネリ (@so_zaneli) May 31, 2019
飲み行くか。
これが結局最後まで続き、とにかく自由にやらせてもらい過ぎた…感謝しかない。契約周り分からん過ぎて、副業先1では請求書をエージェントに突っつかれて送っていたけど2では誰からも突っつかれないので何もしてなかったら、実は相手先の社長が好意で作ってくれていた事が分かり申し訳無い事をした。しかも分かってからも、面倒なのでそっちで作っといて!と好意に甘えている。
— ザネリ (@so_zaneli) September 16, 2018
ご好意に甘え続ける選択もあったが、
フルタイムで参画できる人が増えて人不足は一旦解消されつつあった事、
自分が携わっていた箇所の開発が落ち着いて手離れできそうな事などタイミング的にここかな、と思い終了させてもらった。
悩んだら「別に高収入や安定を求めてフリーランスになったわけじゃないしなぁ」というのが指針。
スタートアップのサービス立ち上げ時の混沌とした時期を全力で楽しませていただいた。
ありがとうございました。前職副業時代から一年三ヶ月ほど開発のお手伝いをしていたところでの最終日という事で、すき焼きをご馳走に。🥩🥢😂元同僚に声を掛けられ週二日かなり自由にやらせてもらえた。ありがとうございました。 pic.twitter.com/JGNmwyRUZX
— ザネリ (@so_zaneli) September 27, 2019
9月〜 ScalaでFinTech系開発
今年から始めたところで、話を遡ると元々2017年のScala関西Summitで少しお話させてもらった社員の方に声をかけてもらい、オフィスに遊びに行かせてもらったりしていた会社だった。
翌年にも再度声をかけていただき、あいにくどちらの時期も前職で勤めていた頃でタイミングが合わず…という状況だったが
同じ会社の方から二度声をかけてもらう事はそんなにないので気にはなっていた。
また、それ以降も何かしらのイベントで社員の方が登壇されているのを見かけたり、お名前を知っている方が入社されたりしているのを見聞きしていた。
週2日で働けるところを探していたところ、また声をかけていただきお世話になる事にした。
半日以上ペアプロしていた。9月は良い滑り出し。
— ザネリ (@so_zaneli) September 2, 2019
最初の頃はキャッチアップも兼ねてペアプロしつつオンボーディングしてもらい、非常に助かった。ペアプロはやっぱり楽しいなぁ。
— ザネリ (@so_zaneli) September 9, 2019
その後は少しだけ Terraform を触ってみたり、Scala バッチの改修などをしている。
Terraform を唸りながらいじくっていたが、上手く動くところまでいけてひと安心。
— ザネリ (@so_zaneli) October 24, 2019
別社稼働の帰宅後に流れを追ったが、お手伝い先で作ってたやーつが無事動いたらしい…。稼働日じゃない日に動かそうとして上手く動かず「ザネリの馬鹿はどこだ!」「ブラジルにコーヒー豆を摂りに行きました!!」みたいにならなくて良かった…。
— ザネリ (@so_zaneli) November 13, 2019
私のような働き方の業務委託エンジニアを入れるのはほぼ初めてという事で、契約面から何から色々と前例のない手配をしていただいたようだ。
ここで結果を出して同じような働き方の人の間口を広げられれば、と思ってはいたが、
イニシャルコストをペイできているかというとなかなか…。
9月〜 Goでアルバイト求人アプリ開発
ここは現在唯一フリーランスエンジニアのお仕事紹介エージェント的なところで紹介してもらった。そういえば今日からまた新しいお手伝い先でのお仕事が始まったのだが、技術書典に出展される方がお2人もいて驚いた。共著というわけでもなく、それぞれ本を出されるそう。
— ザネリ (@so_zaneli) September 3, 2019
何件か紹介してもらったが、決め手は Go, Kotlin, フロントエンド(Nuxt.js)にそれぞれ詳しい方が外部技術アドバイザーのような形で関わっているらしく、
そういう人たちがいる中で働くのが魅力に感じたから。
関わり方はそれぞれのようで、私が参画している Go のチームでは社内 Go 勉強会やもくもく会の講師的な立場で顔を出してくれている。
Kotlin のチームでは定期的にリモートミーティングなのかレビューなのか、そういった事もやっているようだ。
週2日、うちミーティングのある曜日の半日だけ出社していて後はリモートで稼働しているが、私よりもっと頻度が少なかったりフルリモートだったりな方も何人かいるようだ。
こういう働き方のメンバーが多くいると取りまとめる人が大変そうな印象があるが、うまく回っているように見える。
Gin, GORM などを使った API サーバーを開発しており、今年前半の2社と似通っている部分もあるが、
参照系の API に GraphQL を使用していたり個人的に学びのある箇所も多い。
今年前半の広告システム開発でも似たような状況になったが、開発した API サーバーと繋ぎ込む部分のフロントエンドも少し担当したりした。
こちらでは React ではなく Nuxt.js で、既存の実装を参考に何とか動くものを作っている、という感じ。
これはまぁ、紹介してくれたエージェントの媒体なので言ってしまえば提灯記事なのだが、> もう1名の方はアド系で働かれていたり、様々なベンチャー企業での活躍された経験がありGopher道場の卒業生でした。
— ザネリ (@so_zaneli) November 8, 2019
わ た し で す
|^o^|https://t.co/2fAAwkyGw3
ともあれこのような形で評価してもらえたのは素直に嬉しい。
11月〜 ScalaでSaaS開発
Twitterでふわっと「流通している Scala エンジニアですよ」などと言っていたところ見つけてもらい、社員の方とランチしながら話を聞いたのが6月頃。
その時点では特に参画する、というところまでは至らなかったが、
その後 builderscon や Scala 秋祭りといったイベントで登壇されていた社員の方と話したりしつつ、
こちらから再度声をかけて参画させてもらう運びとなった。
最初の頃はリファクタリングや既存の使用していない箇所の削除など当たり障りのなさそうなところから手をつけ、今日からまた新しいお仕事が始まった。初日PR出せるところまで行けて良かった。リアルに知っている人や Twitter 上などでアイコンをよく見かける人が何人かいた…。
— ザネリ (@so_zaneli) November 2, 2019
最近では少しずつ機能改修などにも手を出せている感じはする。
しかし、作っているものはなかなか難解だ。
いたずらに仕様が複雑なわけではなく、難しい現実の問題に立ち向かっているので難しくならざるを得ない、といったところだろうか。
また、Scala の開発はそこそこ慣れているつもりだったが、初めて触るライブラリ Eff がモリッと使われていて、
使う分には便利で楽をさせてもらっているがちゃんと動きを理解するにはまだ修行が必要そうだ。
最近 Scala の eff を導入しているプロダクトを触る機会に恵まれている。(が、まだ既存の処理を眺めてフンフン言ってる段階) #gotanda_hs
— ザネリ (@so_zaneli) November 29, 2019
Eff を使ったコードをもりもり書いている。ムズいが…ムズいな!まだキメた感に到達できぬ。
— ザネリ (@so_zaneli) December 4, 2019
作っているものは難解だが、ビジネスサイドも含めた社員全員でドメインモデル勉強会を開催したり深く議論を交わしたりと
難解さに立ち向かう良い取り組みがされているように思う。
11月に参画してから徐々に成果を出せつつあるつもりでいたが、よくよく振り返ってみればマージ後に考慮漏れが見つかって revert したものがいくつか目立つな…お手伝い先で DDD 勉強会が開催された。エンジニア・デザイナだけでなくビジネスサイドも含め全員参加で凄く充実した会で理解が深まった。💪
— ザネリ (@so_zaneli) November 20, 2019
来年は積み残しを切り崩していかないと。
10月〜 ScalaでチャットAPI連携サービス開発
上記3社で2日ずつ稼働して、どうやりくりしてもこれ以上は無理では?とお思いでしょうか。奇遇ですね、私も同感です。
ここは元々仕事として受けるつもりはなかったのだが、
元同僚と近況報告をする機会があり、ずいぶん楽しそうに今の仕事の話をするなぁ、と話を交わすうちに
気づいたらバスに乗っていた。同じバスに誰を乗せるか、誰と同じバスに乗るかについてビールが黒くなるまで語り尽くした夜でした。 pic.twitter.com/F2lhvfwmjd
— ザネリ (@so_zaneli) September 24, 2019
今の状況を再三説明した上で、それでも問題ないという事だったのでとりあえずやるだけやってみるか、というお気持ち。
私と似たような経緯で参画している副業エンジニアの方々もいて、アプリ開発チーム全員の時間が合うのがそこしかないという事で
何と週に一回朝8時からリモートミーティングをしていて、眠い目をこすりながら今のところ毎週続いている。
日曜や平日夜の隙間時間にコードレビューをしたり少しずつではあるが他サービスとの API 連携箇所を担当して開発を進めている。
とはいえ今のところの成果はエモい自己紹介を書いて酒を飲んだくらいですね…。
お手伝い先にてやっていき感を高める儀式を執り行なってきた。人生 is 苦い but 展望 is 明るい。 pic.twitter.com/s6l71F5WFc
— ザネリ (@so_zaneli) October 30, 2019
やっとる!!!!!!!!! pic.twitter.com/PR6oHokbqD
— ザネリ (@so_zaneli) November 27, 2019
開発チーム・機械学習チーム・デザインチームには面白い人たちが集まって多国籍軍感あり楽しいので、引き続き何とかやりくりしつつ続けていければと思う。エモり散らかした自己紹介を書いたらエモいとの評価をいただいたので狙い通りです。ゼネリです。名前だけでも覚えて帰ってください。 pic.twitter.com/QsvGhrlpCQ
— ザネリ (@so_zaneli) December 19, 2019
今のような働き方でゼロイチフェーズの開発にここまで深く関われるとは思わなかった。この機会は大事にしたい。
現在の生活サイクル
月曜出社、火曜午前中リモートで午後出社、
水曜出社、
木曜リモート、
金曜リモート、
土曜出社、
というサイクルが確率されつつある。
週6日稼働はキツいかな、と思っていたが、ちょうど木金がフルリモートで2日続けて家にこもっていて
そろそろ外に出て人の顔が見たいなぁとなった頃に土曜日になるので、まぁ何だか良いタイミングなような気がしなくもない。
フリーランスを始めた頃には週2日稼働を2社で受けて、週3日は休みにして自己研鑽に当てようなどと思っていたが、
どうも休みがあると虚無に溶かしてしまう自分の性分に薄々感づいてきたので仕事を入れたほうが有意義に過ごせそうな気がする。
開発の上で心掛けているのは、1社あたりの稼働が2〜3日置きになるのでなるべくボールを自分が持った状態で1日を終わらせないようにしている。
とりあえず PR を出してその日を終了しておけば、2日空けて次の稼働日にはレビュアーに打ち返してもらっているのでそこから再開、とできるのが理想。
とはいえ毎回そのように綺麗にいくとも限らないので、その日の終わりにどこまで粘るかは見計らわなければいけない。
まぁ、普通に考えれば週2日稼働が3人いるより週5日稼働が1人いるほうが絶対に良いはずなので、今の働き方、自分には性に合ってそうだし暫く続けたいけど、変わった働き方を成り立たせるために色々と面倒をかけてもいるので、満喫しつつもそういう人たちに報いたいとも思う。いや報いるはちょっと違うか。面倒に見合うだけの価値を提供したい?うーむ、大げさだな。あれだ、やっていきだ。
— ザネリ (@so_zaneli) September 30, 2019
そんな中で今の働き方で関わる意義とは?みたいな事はちょくちょく考えてしまう。
この辺は、今の立ち位置今の働き方だからこそできる立ち振る舞いをするべきである、という考えと、
しょーがねーだろ週2日なんだから、的な開き直りを適宜うまく使い分けて乗り越えていかないといけないように思う。
私の酔狂な働き方に付き合っていただけている方々に感謝を。
来年もやっていこう。
やっていくぞ。