また1年が終わってしまった...。
というわけで振り返り+近況エントリです。
前提
フリーランスのAndroidエンジニアとして活動しています。
状況
去年、2020年はコロナによる環境の変化に適応出来ず不安定な1年でした。
2021年はもう少しどうにか出来るかなーと思っていたのですが、結果的には2021年もあまり変わらずイマイチな1年になりました。 以前参加していた開発チームに復帰させてもらう形でAndroid案件に戻ったのですが、やはり自粛などのストレスとリモートワークの仕事のしづらさなどを上手くコントロール出来ず、6月から休養を取ることにしました。
その後しばらくは体調を回復させることに専念し、少し良くなってからは趣味の活動や勉強などをして過ごしていました。
10月ごろになってそろそろ働けそうかなと思ったので次の仕事を探し始め、11月から業務委託でスタートアップのエンジニアとして週4で働いています。
世間の情勢もそれなりに落ち着いてきて、最近は自分の体調もそこそこ安定している感じです。
仕事選び
次の仕事を探す上で1番意識していたことはバックエンドの開発が出来ることです。
元々この数年ずっと技術的な成長に停滞を感じていて、今後いろいろなことにチャレンジしてエンジニアとして長くやっていく上で、今までと違う新しい分野の技術、特にバックエンドの開発経験を積みたいと思っていました。
仕事の技術面での希望としては、
- Kotlinなどモダンな静的型付け言語でのバックエンド開発が出来るのが理想
- Railsは気持ち的には避けたいけど国内でのシェアが圧倒的なのでやった方が出来た方がいいのは分かる
- モバイル開発であればFlutterなど新しい技術を経験が出来る
一方で環境、組織面では、
- フルリモートは難しいので、出来れば週に1回でも出社して顔を合わせられる
- 新しめの組織、プロダクトで幅広く関われる
- 興味のあるビジネス領域
などがありました。
いくつかカジュアル面談のお声がけ頂いたり案件情報を眺めたりしたのですが、結果的には以前一緒に働いてお世話になった方がCTOをやっているSaaSのスタートアップでRails・Nuxt.js環境のエンジニアを週4のフルリモートでやることにしました。
Railsでフルリモートというのは元々の希望条件にあってないじゃないかという感じですが、それを差し引いても信頼しているエンジニアの直下で働けるという環境から得られるものが多いだろうという選択でした。
働いてみて・仕事で使用している技術の所感
まだ2ヶ月しか働いていないですが、今のところなんとかやれています。
体調管理に気を使っているのもあり、以前よりはリモートワークでも集中して働けているかなという気はしますが、やはりオフィスで仕事をするのに比べどうしても気持ちの切り替えなど精神面のコントロールが難しいところがあるとも感じています。
Ruby・Railsについて
元々あんまりポジティブな印象はなかったのですが、やっぱり難しいなぁというのが正直なところです。
自分が今までJavaやKotlinなど強い静的型付け言語での開発ばかりしていたというのもあると思うのですが、型の情報がないことやRubyの正しい書き方が不明瞭であることでの生産性の低下が凄まじく、かなり苦戦しています。
また、Rails特有の作法なども含め、バックエンドのコードを書く上で気をつけるべきことがクライアントサイドとかなり違うというのもあり、いろいろ教わりながら少しずつ覚えているという感じです。
逆に考えれば新しいことをどんどん覚えているということであり、そういう意味ではとてもポジティブな環境だと言えます。
正直、ここ数年のAndroid開発で学んだことよりもこの2ヶ月で学んだことの方が多いんじゃないかというくらいです。
Ruby、Railsに対しては今のところネガティブな印象の方が強いですが、とはいえやり方が分かっていることをやるのであれば生産性が高いのは分かりますし、GemなどのエコシステムやActiveRecordなどフレームワークが提供してくれている機能の網羅性などを考えても技術選定として安定であるというのはとても理解できます。
フロントエンドでTypeScriptを利用するのが主流になっているように、Rubyも型情報のある開発環境が標準になってほしいなぁと思います。
TypeScript・Nuxt.jsについて
今まで業務でのフロントエンド開発の経験はほとんどなく、趣味でReactを触ったりフロントエンドの技術情報を追ったりするだけでしたが、TypeScriptとNuxt.jsでのフロントエンド開発はバックエンドとは逆にとてもスムーズにキャッチアップ出来ました。
これはモダンフロントエンドのパラダイムがモバイル開発と親しいからというのもあると思うし、TypeScriptという言語環境のおかげとも思います。
自分にとってはやはり型情報というのは重要で、型情報さえあれば初めてみるコードやフレームワーク、ライブラリなどでもある程度"感"を働かせることが出来ます。
とはいえそもそもプロダクトの性質もありフロントエンドでそんなに複雑な実装をしないというのもあるのかなとは思いますが。
WSLについて
開発に個人のPCを使っている都合上、WindowsでWSLを利用して開発に参加しています。
他のメンバー(と言っても数人ですが)はみんなMac環境なのでMac前提で環境構築がされていましたが、意外とWSLのUbuntuで快適に開発出来ています。
WSLは本当にWindowsがそのままLinuxベースのOSになったかのように自然に使えますし、最近はWSLを使っている人が多いこともあり、ググればWSLやLinuxでの環境構築に関する知見がそれなりに出てくるというのが大きいです。
ただ、時々OSごとのアプリケーションの挙動の違いや文字コードまわりなどで変なハマり方をしたりすることはあります。
来年がんばりたいこと
いろいろありますが、技術的なところではとにかくRailsをマスターして一人前に実装が出来るようになりたいですね。その上でもっと仕事でプラスαの価値を出せる余裕を持ちたいです。
仕事以外のところでは競技プログラミング、数学、イラスト、配信など色々趣味の活動をしているわりにこの2年間どれも停滞気味だったので、来年はとにかくアクティブに行動して飛躍していきたいです。
まとめ
正直来年の幸福度も世界情勢次第なところがある気がするので、頼むぞ、世界...!という気持ちです。