勉強法(6) 効いたのは、技術そのものではなかった
この連載の最後に、身も蓋もない話を書きます。
仕事につながった場面を振り返ると、効いていたのは技術そのものではありませんでした。
実際に役に立った3つ。どれも技術の名前ではなく、技術の扱い方の話です。このサイトで実際にやったことと対応させて書きます。
1. 説明できること
「なぜそうしたのか」を聞かれて答えられるかどうか。ここでいちばん差が出ました。
動くものを作れる人は多い。ところが「その方法を選んだ理由」になると、急に答えが揃わなくなります。
このサイトで言えば、同意の仕組みがそうでした。先に読み込んでおいて送信の可否だけ切り替える方法と、同意まで読み込まない方法がある。後者を選んだ理由は、前者だと自分のコードを全部読んでも「送っていない」と言い切れないからです。
この判断は、技術的な優劣で決めていません。あとで説明を求められたときに答えられるかで決めています。
仕事だと、この視点が要る場面のほうが多い。「動きます」で終わらせられる相手ばかりではありません。
2. 引き継げること
自分で書いていないコードを直す仕事が続いた時期があります。書いた人はもういない。仕様書もない。あるのは動いているコードだけ。
そのとき欲しかったのは、常に判断の理由でした。
| コードから分かること | コードから分からないこと |
|---|---|
| 何をしているか | なぜその方法を選んだか |
| どういう順番で動くか | なぜこの順番でなければならないか |
| この値を除外していること | 除外しないと何が起きるのか |
右の列が分からないと、触っていいかどうかが判断できません。一見無駄に見える処理が、過去の不具合への対処だったということは珍しくない。理由が書いていないと、消して初めて分かります。
いま自分が書くコードには、処理の説明ではなく理由を書いています。引き継ぐ側に回った経験が、そのまま書き方に効きました。
3. 止まらないこと
3つめは、壊れたときにどうなるかを先に決めておくことです。
このサイトのCMSは共用サーバーにあって、混むと応答しません。最初はそれで公開作業ごと止まっていました。
直したのは速度ではなく、失敗する前提で書き直したことです。
| 場面 | 決めておいたこと |
|---|---|
| CMSが500を返す | 間を置いて投げ直す。ただし要求が違う場合は投げ直さない |
| 記事が取れない | 0件のフィードを返す。エラーにしない |
| 同意の記録が読めない | 「同意していない」扱いにする |
どれも「うまくいく道」ではなく、うまくいかなかったときにどちらへ倒れるかの話です。
特別な技術は使っていません。分からないときにどちらへ倒すかを、書く時点で決めただけです。
決めていないと、そのときの都合で倒れます。都合で倒れたものは、あとから説明できません。
3つに共通していたこと
並べてみると、全部「あとから来る人」への態度でした。
| 誰のためか | |
|---|---|
| 説明できること | 判断を求める相手 |
| 引き継げること | 次に触る人 |
| 止まらないこと | 壊れたときに困る人 |
3つとも、書いている自分には直接の得がありません。書いた時点では、誰も困っていないからです。
効いてくるのは、いつも後からでした。そして後から効いたものだけが、次の仕事につながっていました。
技術が要らない、という話ではない
誤解のないように書いておくと、土台としての技術は要ります。読めないコードは引き継げないし、仕組みを知らなければ壊れ方も予想できません。
ただ、そこは足りていないと何も始まらないが、足りたからといって差がつく場所ではないという感覚です。差がついていたのは、同じものを作れる人どうしの間でした。
今回の学び
まず、動かせる人は多いということ。差がついていたのは動くかどうかではなく、なぜそうしたかを説明できるかどうかでした。
次に、引き継ぐ側の経験が、書き方を変えること。読めないコードに困った経験がないと、理由を残す動機が湧きません。困った側に一度回ると、書き方が変わります。
そして、効いてくるのは全部あとからだということ。3つとも、書いた時点では誰も困っていません。得が見えないうちにやっておいたものだけが、後で効きました。
この記事を共有する
関連記事

勉強法(5) 手順は残らない。判断は残る
何が残って何が残らなかったか。そして、残るかどうかを分けていたのが何だったかです。

勉強法(3) 調べる場所が決まらない時間
「読めない」「分からない」を、調べられる形まで分解する話です。詰まる場所は毎回ほぼ同じ構造をしていました。

Criticalが4件並んだ日にやったこと
朝、通知を見たらCriticalが4件並んでいました。どれも同じ相手、Next.js本体です。 この日にやったことを順に書きます。結論から言うと、上げました。ただ、上げる前にやったことのほうが本題です。 この記事で扱うこ […]