この記事は「IT関連の普段のお仕事について色々!」の25日目の記事です!普段の仕事の工夫点や考えてることについて書いています!
記事の概要
再現性と言語化について最近思ってることのメモ記事です。年末なのでポエム多めです。ポエムってなんだろ
再現性とは
科学実験などにおいて、所定の条件や手順の下で、同じ事象が繰り返し起こったり、観察されたりすること。
ソフトウェアエンジニアなのでよく耳にするのはバグの再現性あたりだろうか。再現性があるバグであれば同じプログラムを実行すれば何回やっても同じ結果になってしまう。再現性がないバグは特定の環境のみでしか発生しないバグであったりする。再現性がないものは何回かに一回しか起きないようなバグである。(ソフトウェアにおける再現性のないバグって厳密には存在しない気がする。全く同じ条件であればハードウェアとか宇宙線とかそういうのがない限り結果は同じになりそう)
科学実験でいうと学生時代に1回6時間とかかかる実験があってたまたま成功したのかどうかを確認するために何回も同じことをやっていた。これは再現性があることを確認するためであったのだろうけどそこまで熱心な学生じゃなかったのでシンドイくらいの感想しか持たなかった
仕事における再現性
仕事において再現性はとても大事だなと最近になって考えるようになった。こう考えるようになったのは会社でやっている2on1でそういう話題が出たからである。会社では評価資料というのを上長と一緒に作り評価をしてもらうみたいなことをやっているのだがその資料に求められるのはやった実績も大事だが再現性を証明することも大事であるとされているからだ。
ここでの再現性はさっき上げたバグとかの話ではなくより抽象化したものである。例えばサーバ移行作業という仕事があったとする。やることは「移行先を決める」「設計」「構築」「テスト」「リリース」みたいな進め方でやるタスクをやり切ったとする。
この実績がビジネスにとって十分に価値があったとしてもやり切れたのが個人の能力があるからなのか他に何かしらの要因があるのかがわからないため高い評価を得るのは難しいものとなる。例えば2022年にこのタスクをやり遂げて高評価にしても2023年に同じことを任せて全くできませんということもありえるからだ。(SIの世界だとよくみるような光景だ................)
じゃあ何を見て評価するかというとこれこそが再現性なのかなと思っている。「再現性がある=何回任せても同じパフォーマンスが出せる=その人にその能力が備わっている」という式が成り立つ。「特定のことをできるようになる」という状態は、「特定のことを再現できる」という状態であることが大事。
再現性があることを証明するには
障害対応みたいなケースを例にしてみる。何らかの障害が発生した時になんとなくログ見たりメトリクスみたりして障害原因の特定を数分で行うことができたとする。この状態だと「障害原因特定を短時間でできてよかった」というものでしかなく2回目、3回目に発生した際に同じような時間で原因特定ができるかはわからない。何故わからないかというと「障害原因特定をする」というタスクにおいて再現性があるかどうかがわかっていないためである。こういった再現性を高めたいようなケースで有効になってくるのが言語化であると考える。
言語化とは
言葉で表現すること。感情や直感的なものを説明・伝達可能にすること。
「障害原因特定をなんとなくログを見たりメトリクスを見たらうまくいった」を言語化するにはどうするとよいだろう。まずはこの何となくの部分を言葉で表現し説明、伝達可能にすることが大事に思える。「なんとなく」の部分が自分の場合は「発生事象を理解してあたりをつけた上でO(1)で原因になっていそうなものを調べる。それでもわからなければ挟み撃ち法的に原因特定をしていく」みたいな感じになりそう。
「数分で特定をやれた!」というようにうまくいったことを言語化するることで再現性がうまれる。うまくいかなかったことも言語化することが大事である。うまくいかないことの再現性をなくすには事象を正確に把握して対策する必要があって言語化して説明、伝達可能にすることは必要であるからだ。
とてもなるほどとなった
技術はすべてを言語化しないと必然とはならないし、そのプレーに再現性は生まれません。
— 中西哲生 (@tetsuo14) 2020年9月3日
つまり言語化されていない技術は、ある日突然できなくなってしまう可能性もあるのです。
ただ完璧に言語化された技術は、何度でも再現することは可能です。#日本人は本当にうまいのか #N14中西メソッド https://t.co/exDOTmemI3
「言語化できてない=再現性ない=ある日突然できなくなる」可能性もある。面白い
再現性は自分だけあればよい?
再現性を高めるために言語化する。言語化では自分がわかれば良いようにすれば良いのかというと言葉の意味には「説明・伝達可能にすること。」とある。伝達する必要もあるのだ。つまり何かをできることを言語化して他者も同じようにできることが求められている。先程の障害対応の例なんかも「こういうふうにやっている」を伝えてもしもその方法がハマればそれもその人で再現できていると言える。
まとめ
なんらかの仕事をこなして「よかった」や「残念だった」とそれでおしまいにするのでは無く言語化して再現性を高めることで自分の能力としていくのが大事だなと感じた年末だった。できたことを増やすだけじゃ無くできることを増やしていく。来年もやっていくぞ!