2021 年の振り返り
1–3 月
仕事自体、割と暇だった時期。小粒な案件をいくつかこなしていた。
一瞬、React Native の勉強を初めかけたのだけど、結果的に使用する機会が無くなってしまったため、一過性の営みになってしまった。。。
4–6 月
ゴールデンウィークあたりまで、延々 PicoML を作っていた。 詳細はアドカレの 自作プログラミング言語と WebAssembly コンパイラ に書いたが、この時期は OCaml や WebAssembly の調べ物に余暇時間の殆どを費やしていた記憶。
6 月の途中くらいから、知り合いの会社で副業開始。フロントエンド周りのアーキテクト的な内容。 Open ID Connect の IDP を構築するという内容だったので、認証認可周りのいい勉強になった。 この案件も含め、今年はなぜかやたら認証周りのシーケンス図書いたり、実装したりする機会が多かった。 どんな Web サービスでも大体ログインの仕組みがある以上、関係する案件(特に新規開発系)の数が増えるとそうなる、という話かもしれない。
7–9 月
本業にて、かれこれ 1 年ぶりくらいに GraphQL 案件。 フロントが Next.js(SSG) + Apollo Client、サーバーは Apollo Server / graphql-ruby + Rails の Schema Stitching 構成。
チームメンバーに GraphQL 初心者が何名かいたため、ワークショップ形式で勉強会を開催した。このときの教材は以下のレポジトリで公開しています。
9–12 月
上記の GraphQL 案件とは別の開発も並行して進めている兼ね合いもあって、割と忙しい日々が続いていた。 こちらは Next.js(SSR) + react-query な構成のフロントエンド案件。
この案件、わりとヘビーなフォームを含んでいて、今回は react-hook-form をメインで使っているのだけど、その部分のテストに Storybook 6.4 の play function を適用してみたらいい感じだったのが嬉しい。
Storycap や reg-suit 関連、今年は特にこれといった機能追加をしていないが、Storybook 側のテストプラットフォームの側面が強くなってきたことも相まって、来年もうちょいまとめるかも。
総括
1 つの仕事に注力している時期よりも、複数案件に片足ずつ突っ込んでいる状況が続いた一年だった。 常に複数のチームに所属している(もしくは率いている)状態なので、否応なしにそれぞれのチームやメンバーを比較することになる。
「うまく回っているチームとそうじゃないチームの差とはなんだろう?」ということをずっと考える羽目になった。
ある案件のあるチームはいい感じに回っているが、別の案件の別のチームは四苦八苦している、そういう状況を目の当たりにしてきた。 たまたま、どの案件も React(Next.js) + TypeScript というスタックは揃っていてこともあり、チームごとの練度の違いがより目立つことになる。 うまく回っているチームが最初からスキルフルであったかというと、必ずしもそうとは限らない。 また、メンバーの技術的なスキルセット以外にも成否の因子になるものは色々あるはずだ。いわゆる心理的安全性、とかそういうやつ。
うまくいくための因子がなにか?という点が気になって Team Topologies という本を読み進めている。
繰り返し強調されているのが「チーム全体の認知負荷の総和を最小化しましょうね」という内容だ。 確かにうまく回っているところでは、メンバーごとの学習負荷が、どの時点でも一定になるようになっていたように思える。別の言い方をすると、継続的な学習で着実にステップアップできるようになっていた、ということだ。
僕自身、テックリードとかアーキテクトと呼ばれるようなポジションでアサインされていることが多いため、僕が積極的にコントロールできる認知負荷とは、選定した技術を周囲にどう使ってもらうか、習得してもらうかのインストールの部分になるはずだ。チームメンバーに技術習得を促すための活動という意味では、少し手前で触れたで GraphQL のワークショップの件がこれに該当する。 来年も折を見つけて、こういう活動を進めていけたらなーと思う。