これはフリーランス Advent Calendar 2018の22日目の記事です。
昨日はMiho Ishidaさんの「2018年の総括的な何か」でした。

今年春から、副業として週2日ほど別会社での開発のお手伝いや、
退職後フリーランスエンジニアとして週3・週2でそれぞれ別会社でお仕事するような働き方を始めたので
振り返り的にまとめておく。

発端

そもそもこういう働き方をやろうと思ったきっかけは、
人づてで開発を手伝ってほしいという話をもらって
実際に話がまとまりそうになり気持ちが高まっていたところで流れてしまった事だった。
(別に「人が足りたからやっぱ無しで」自体はいいんだけど、
こっちから突っつくまでその状況になっていた事を知らされなかったのはひどいと思う…)
そんなわけで、せっかく気持ちも高まり勤務先にも許可をもらっていたので、
じゃあ話は流れたけれど他にそういう働き方ができそうなところはないかと探しに動き始めた。

それまで転職エージェント的な人から「情報交換を」のような連絡をもらっても無視していたが、
この頃から「(どうせそんな都合の良いところなかなかないだろうけど)
週2日とかで参画できる案件があれば話くらいは聞きますよ」と答えていたところ、
思いがけず早く見つかり、3月から入る事ができた。
ちなみにお知り合いからもちょこちょこお誘いをもらえたのだけれど、
このような思惑がありまずはエージェント経由のところから始めてみようかという考えがあった。
単価とかも全く見当もついていなかったので、エージェントさんが上手くやってくれたように思っている。
(さっぱり分かんないんで先方の言い値でいいっす、などと言ったら困惑させてしまった…)

3月~6月

Scalaで新規プロダクト開発を進めているが
諸事情あってあまり Scala に詳しい人がおらず手探りで進めているような状況で、
開発の手伝い兼 Scala の書き方のアドバイスみたいな形で入る事になった。
アドバイスといっても大した事ができていたわけではないが、
確かに Scala にあまり詳しい人はいなさそう…という悪戦苦闘が滲み出たコードが山積していた。
機能追加のタスクもやりつつ、通らないまま放置されていた単体テストを通すようにしたり
独立した複数プロジェクトを都度 publishLocal しなくていいように整理したりと
落穂拾い的な作業もしていた。

それなりに順調にやれていたとは思っているのだが、
残念ながら自分が関わっていたプロダクトはその後開発継続をしない方針になってしまい、
4ヶ月間で終了となった。
開発側の問題というより、営業面・政治的な判断だったりするようだったが…。
一応、そういう状況だが契約延長するかどうする?という話し合いの場を設けてもらったが、
以降は PHP の既存プロダクトをまた何か別の言語にリプレイスするかも、
それも具体的にやる事が決まっているわけではなく当面はガリガリコードを書くフェーズではないかも、
という感じだったので。

正直アプリケーションコードに関しては数年前にやってきた事をなぞるような感じで
目新しい面白さがあったわけではないが、
設計に関する議論が活発だったり、インフラ周りに色々先進的な試みをしていたりと
ここの開発に関わっていなければ経験しなかっただろう事もあり楽しく進められた。
最後のほうでは(私はそれに携わらないにも関わらず)次に開発に使う言語の選定がてら
Go のモブプログラミングに参加させてもらったりもした。
上述の通り思惑があり見ず知らずの会社に飛び込んでみたが、
ここであまり良い印象がなければ以降同じような働き方を続けようと思わなかったかもしれない。
最初に良い機会を与えていただき感謝している。

7月~現在

7月からは前職の同僚の転職先で開発の手伝いをしている。
週2で副業したいという話が耳に入り5月くらいに一度誘ってもらったものの、
その時は上記の会社にすでに行っていたため、空いたら別途連絡しますという回答をしており、
機が熟したためこちらから連絡を取ってみた。

5月に話した際には Go の開発の手が足りないので手伝ってほしいという事だったが、
しばらく経って状況が変わっており、
新規プロダクトを Rust でやろうとしていてそちらを手伝ってほしいとの事だった。

そんなこんなで最初の一ヶ月ほど、Rust コンパイラと格闘しながら
actix-web でバックエンドのサーバーを書いていたのだが、
Go で書かれた別プロダクトのタスクが増えてきてそちらに入ってほしいとの事で、
8月以降は Go で API サーバーを書くのが主になった。
(別に Rust のプロダクトが頓挫したとか Rust から Go に書き換える事になったとかではなく、
Go で書かれたある程度形になっている既存プロダクトがあり
そちらのほうが会社的に重要度・優先度が高まったという話)

ごくわずか、フロントエンドの手も足りないので少しだけ React+Redux も書いた。
既存の画面をちょろっと修正した程度で、そんなに大したことはできていないが、
ずっとバックエンドばかりやっていてフロントエンドに苦手意識があったので
軽めのタスクでお手伝いできたのは良かった。
フロントエンドをリードしている方はフルリモートで顔を合わせた事はないが、
「ちょっとここまだできていなくて詰まっています」状態でPRを出せば
親切にレビュー兼色々アドバイスをもらえて進めやすかった。
余談ではあるが、この頃技術書典5で購入した『りあクト!』という書籍を読んでいて、
React+Redux のお作法やデータの流れなどの理解の助けになった。
ちょうど私くらいのフロントエンドとの距離感のエンジニア向けの良い書籍だった。

仕事の進め方はあまり理路整然としておらずとにかく出てきたタスクを潰す
という感じになってしまってはいるが、
元同僚経由という事もあって私のプログラミングスキルやパーソナリティなどを把握・信頼してもらった上での
悪く言えば雑に、良く言えば自由で融通の利く感じでやらせてもらっている。

Go での API サーバー開発はまだまだやる事があるようで、引き続きこちらのお手伝いをしている。
Rust のほうもやりたい欲はあるが、正直まだ満足に動くものが書ける自信がないので
隙を見て素振りをやっていかないと、という思いはある。

退職・そしてフリーランスに


9月末、3年半ほど勤めた会社を退職した。
別の会社で週2日働く事を認めていただいて非常に感謝している。

10月は上記の会社で週2の仕事を続けつつ、残りの平日でまた別の会社で働く事を希望して探していた。
本当は2社で週2日ずつ4日働き、平日1日は空けたかったが、なかなか調整がつかず
週3日なら良いよ、そのうち1日はリモートでも良いよ、というところがあったので
そちらにお世話になることにした。

11月~現在

こちらでも Go で API サーバーやデータ収集バッチなどを書いている。
Swagger 定義から Go と TypeScript のコードを自動生成していたりレビュー体制がしっかりしていたり、
複数人でそこそこの規模の Go プロダクトを開発しているわりには今の所あまりつらみを感じていない。
フルリモートや半リモートの方も多数いるが、
毎日 Google Hangouts でミーティングをしながらタスクの整理や進捗確認などをしていて、
わりときっちりかっちり進めている印象がある。

まとめ

特に言語を選り好んだつもりはないが、そういえば5年ほど書いてきた Scala は一旦仕事では離れる事になった。
とはいえ現状最も手に馴染んだ愛着のある言語なので、プライベートでは何らか書き続けるのではないだろうか。

せっかく週3・週2で別の会社に行っているのでそれぞれ別の言語で開発ができれば面白そうではあったが、
希望する雇用形態を優先したところ結果どちらでも Go を書いている。
仕事の進め方や雰囲気、作っているものなどだいぶ違うので、
そしてそれぞれに良さがあるので、これはこれで楽しめてはいる。

Go での開発には多少飽きを感じつつはあるものの、正社員時代に比べて自由な時間が増えてはいるので、
仕事で Go を書きつつプライベートで興味のある他の言語を触ったりしていければ
ひとまずはいいかな、とも思っている。
最近は Rust, Elixir, Elm あたりに興味があるが、
いざという時に機会を得られるようにちょこちょこ趣味グラミングをやっていければ。
思えばかつての Go も Scala もそのような時期があり、そして仕事で書くようになったのだった。

今年は大きく働き方が変わり、刺激的な事が多く楽しかった。
下手すればどこで野垂れ死にしてもおかしくない生き方ではあるが、縁や運に恵まれて何とか生きていけそうだ。
ありがとうございます。

明日はtaisho6339さんの「仕事の選択方針とか手続き周りのTipsとかなにかかく」です。

Copyright© 2011-2021 Shunsuke Otani All Right Reserved .