$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

継続的に学習するために効いたやり方3つ

育児していて時間があまり取れない状況下で継続的に学習するために色々な方法を取り入れているんだけど、その中で最近めちゃくちゃ効いた3つのやり方を紹介。

  • やりたいことリストを作っておく
  • 今日のTODOリストを作る
  • 2分間コーディング

やりたいことリストを作っておく

自分が学習したいことの一覧があると、優先度を決めやすくなり、またやりたいことが1つ終わった後すぐに次に取り組むこともできる。そこで僕はTrelloでリストを作り、とにかく少しでもやってみたいと思った開発や、読みたいと思った本などがあれば追加している。

f:id:shiba_yu36:20210504152202p:plain

今日のTODOリストを作る

時間が空いてから「今日はこれから何をやろうかな?」と考えていると、途端にやる気がなくなってダラダラしてしまう。そこで先に今日のTODOリストを作っておくということをやっておく。ポイントとしては

  • 細かい家事やプライベートでやること、勉強すること全て含めて同じリストに入れて、上から順にやっていけばOKという状況にする
  • 全てをやりきれなくても気にせず、かつ次の日に持ち越すということもしない

上のポイントを満たすために、僕はメモアプリのテキストを1つ作り、そこにずっとやることを追記し続けている。

f:id:shiba_yu36:20210504145938p:plain:h400

2分間コーディング

今日のTODOリストを作ったとしても、サボりたい誘惑にかられてしまい、取り組むところまでいけないことも多い。なんとか取り組む手法がないかと思っていたが、最近 2分間コーディングのすすめ、コードを書く習慣のハードルを下げる を見て良さそうと感じたのでやってみた。これが絶大な効果を発揮している。

f:id:shiba_yu36:20210504152416p:plain

2分だけプログラミングすれば良いと思って始めたら大体1時間とかやっていたりするので、人間始めてしまえば長時間続けられるものだなあと感心している。

まとめ

今回は継続的に学習するために自分で工夫したことの中で、特に効いた3つのことについて紹介してみた。この習慣によって、学習だけじゃなくて日々のプライベートでのやること(例えば保育園の書類を出すとか)もどんどん片付くようになったので助かっている。

Next.js + Prisma + NextAuth.js + React Queryを試した

2分コーディングの一環でNext.js + Prisma + NextAuth.js + React Query で作るフルスタックアプリケーションの新時代をやった。とにかく簡単に認証 + DBアクセスがあるアプリケーションを作ってvercelにデプロイできるサンプルが出来て非常に良かった。趣味プロダクトをちょっと作ってみるのに良さそう。

shibayu36/next-prisma-auth-tutorialに試した例を置いているので参考にどうぞ。

やれたこと

  • Googleのアカウントを使ってサインインし、TODOを追加できるアプリケーション
  • herokuのPostgreSQL dbをデータソースとして動くアプリケーションをvercelにデプロイ

作業メモ

利用技術の簡易調査

next-auth

Prisma

const allUsers = await prisma.user.findMany({
    include: { posts: true },
  })

react-query

React Query - Hooks for fetching, caching and updating asynchronous data in React

  • サーバの状態との同期が強い?
  • 基本的には、キャッシュを作ってくれたり、キャッシュの破棄だったり、一定時間で再フェッチしてくれたりみたいなのをいい感じにやれる
  • Quick Start | React Query | TanStack のコードが大体の概念を理解できる
  • Important Defaults | React Query | TanStack あたりを見ると、TTL的なものがデフォルトで入ってて便利

vercel

改善提案の議論をテキストで非同期に行う - リモートワークに合わせた提案方法を探る

最近はリモートワークが主体で、みんなで集まっての同期的コミュニケーションがやりづらくなり、他の人の非言語情報を受け取ることも困難になった。その結果として、自分がチームで改善提案をした時に、周りの人からコメントを受け取る、提案に対する温度感を探るということが難しくなった。

改善提案にこのような課題があったので、リモートワークに合わせた方法を探り、まず改善提案の議論をテキストで非同期に行うというやり方を行ったので紹介する。その過程で自分が作った提案のテンプレートも共有するので、参考にしてもらえると嬉しい。

課題: 現在の働き方でも改善提案に対するフィードバックをもらいやすくしたい

もう一度課題をまとめる。

自分がチームの改善提案をした時は、チーム内の意見や反応を見ながら、より改善提案をブラッシュアップして実施したいと考えている。つまり開発フローなどチームの改善提案でもコードレビューと同様、コメントをもらってより良いものにしていきたい。

これまでオフィスで働いていた時は、提案をして言葉による反応が少なかったとしても

  • 表情、相槌、体の向きなどの非言語情報から情報をキャッチする。コメントしたそうにしている人には発言を促す
  • 別の時間で手が空いてそうな人を見つけたら、2分ほど改善案についての雑談をしてみる

という手法で、提案に対するフィードバックを受け取っていた。

ただしこの手法は全員が同じ空間で働いていることが前提となっていたため、リモートワーク主体となるとフィードバックが受け取りにくくなった*1。この状態を改善したい。

解決案: 改善提案のテキスト会場を用意し、思いついた時にフィードバックを送りやすくする

以上の問題は、リモートワークとなり雑談とミーティングの中間の同期的コミュニケーションが難しくなったことで発生していると考えている。だが、その解決のためにリモートワーク下でも同期的な会話を増やすというのは悪手だと考えた。

そこで、議論を非同期でやりやすくするために、改善提案するときはテキストで全員が書き込める会場(例: ScrapboxやNotion)を用意することにした。これはチームメンバーが思いついた時にすぐフィードバックを書き込むことができ、さらにそれに対して他の人がコメントを返しやすくなることを狙っている。

改善提案の会場作りには、意見が出やすいように以下のような形式にしてみた。

ご意見コーナーは下に用意しています。LGTMだけでも嬉しいです。ラインコメントで意見もらっても可。

## 目的や課題意識

## 改善案

## ご意見募集
* LGTMコーナー
    *
* もっと良くなるアイデアあれば
    *
* その他なんでもご意見どうぞ
    *

## 実施後の感想コーナー

## ふりかえり

この形式の工夫点としては

  • 改善提案はHowを書いてしまう傾向が多い。しかし重要なのはWhyなので、最初に「目的や課題意識」を書くようにする
  • フィードバックやフォロワーシップが生まれやすい形式にする
    • ご意見募集では、ポジティブだけどコメントがない人も「LGTMコーナー」に名前を書くだけで意見表明をできるようにする
    • より良いものにブラッシュアップしていこうという機運を高めるために、「もっと良くなるアイデア」コーナーを用意
    • なんでも気軽に意見を書きやすくするように「その他なんでもご意見どうぞ」という自由記述欄は用意
  • 改善は「まずやってみる」が大事だが、それを後からふりかえり、チームの学びとしなければ効果が半減してしまう。そこでふりかえりコーナーもテンプレートに用意してしまう

例えばこの形式でSlack のチャンネルがbot だらけになっていることを改善したいと提案した例は以下の通りである。

f:id:shiba_yu36:20210425232327p:plain

この形式でやってみた感想としては

  • LGTMコーナーなど気軽に感情をフィードバックするコーナーがあることで、今まで表情など非言語情報で受け取っていた温度感を、テキストとして受け取れるようになった
  • 会場にみんなで書き込む方式にすることで、例えば提案をブログや日記のような場所で書き別の場所でフィードバックをもらう方式よりも、フィードバックが生まれやすく感じた
  • テキストでフィードバックをもらえるため、意見を出し切った状態から最後の最後に同期的コミュニケーションを使って少ない時間で合意しやすくなった

参考: 課題意識までのパターン

上記形式は、解決の一案がある形式だった。しかし課題意識がテキストに起こされるだけでもチームにとっては学習になることが多い。そこで課題意識までのパターンも用意してみている。こちらは協力者を集めて、チームとして問題解決をしようという機運を高めやすくなるようなテンプレートにしてみている。

## 課題意識

## 協力者募集
協力してやってくれる人募集。同じ課題意識あったという表明だけでも。

## ご意見募集
* 解決アイデアコーナー
    * 
* 何でもご意見コーナー
    * 

## 実施後の感想コーナー

## ふりかえり

まとめ

今回はリモートワークに合わせた提案方法を探り、まずは改善提案の議論をみんなで書き込めるテキスト会場を用意し非同期に行うという方法をやってみたので紹介した。簡単なテンプレートも用意したので参考にして欲しい。

Slack の改善例以外にもコードレビューのフローやGitHubでのタスク管理方法などいくつかこの手法で改善提案をした。その経験からこの提案方法はリモートワークでなくなって全員がオフィスで働いていたとしても透明性高く議論ができる点で良いと考えている。今後元のようにオフィスに集まりやすくなったとしても活用していきたい。

本当はこのテンプレートを使うことで、自分からだけでなくチーム全体からどんどん改善提案が出るという状況にしたい。しかし、まだ道半ばでその状況にできていないと感じる。チームメンバーそれぞれから改善提案が出されやすくするには、また複数の課題を解決する必要があると感じるので、課題を探し解決していきたい。

*1:実際にはオフィスで働いている時も、拠点が違う人の声は受け取りづらくなるという問題があった