相手が求めている情報への感度を研ぎ澄ます
「相手が本当に欲しい情報は何か?」―これを普段から意識しておくことが、生産性を抜本的に向上させる鍵となる。
プリンシパルエンジニアのグレナは、Functions チームの中でもひときわ優秀さが際立つ若手だ。開発スピードは速くて正確、システムの隅々まで把握していて、なにか問い合わせをすると、いつも一発で完璧に的を射た回答が返ってくる。
実際、自分が問題を解決する側になったときに、的確な回答をするのはなかなか難しい。相手がどういう環境なのかわからないし、ログを見ても様々なエラーが発生していて、どれが今回の問題にヒットしているのかもわからない。そんな複雑な状況下で、根本原因を突き止めるために、普通は何往復もメールやチャットをやり取りすることになるわけだが、彼女はいつもその反復が1回で、「正解」に至るのだ。
メンターのクリスに「彼女はなぜあんなに優秀なんだろう?」と聞いたら、「彼女を参考にしてはいけないよ。だって、彼女はインターンの頃から抜きん出ていたから。ただし、彼女はいつもメモをとっているね」と言う。
彼女がなぜ魔法のようにピタリと根本原因をつきとめられるのかは不明だが、この「メモをとる」習慣は真似できそうだ。彼女は、自分が学んだこと、試したことを整理してOne Note というクラウドで共有されるメモシステムに登録し、みんなにシェアしてくれている。
人に伝えることを前提としたメモ術
私がメモをとるときは、つい「自分用の、自分がわかるため」の書き方をしがちだが、彼女のメモは、見る人が欲しい情報はこれだろうという形で整理されている。
エンジニアは開発だけではなく、他の人からの問い合わせ対応、障害の調査などにもかなりの時間を割かざるを得ず、引き継ぎも定期的に発生するものだ。これらは意外に労力がかかる。
だったら最初から、他の人が欲しい情報をわかりやすい形式で整理しておくのが合理的だ。便利なクエリ(命令文のコード)を説明のコメント付きで書いておき、コピペしたらすぐ渡せるようにしておいたり、参考になりやすいPull Request をすぐ引き出せるようにまとめておいたりする。前章で紹介したコーネルメソッドなども参考にしつつ、ケースバイケースでわかりやすい形式で、メモやノートをとる。
このように、日頃から人に伝えることを前提とした準備をしておくと、なにか聞かれたさいの工数削減にも直結する。ソフトウェアエンジニアは、開発の効率化ばかり考えがちだが、こうした「自分が主体ではない」タスクの省力化をしていると、自分が好きな「開発」にもっと時間を使えるようになる。
私自身、他の人にシェアできる形式を意識して文書を書いて、リンクひとつでシェアできるようにしている。そこは時間を惜しまずやるようにしているのも、必要に応じてそのリンクをシェアするだけで終了するからだ。
牛尾剛(うしお・つよし)
1971年、大阪府生まれ。米マイクロソフトAzure Functionsプロダクトチーム シニアソフトウェアエンジニア。シアトル在住。関西大学卒業後、大手SIerでITエンジニアとなり、2009年に独立。アジャイル、DevOpsのコンサルタントとして数多くのコンサルティングや講演を手掛けてきた。2015年、米国マイクロソフトに入社。エバンジェリストとしての活躍を経て、2019年より米国本社でAzure Functionsの開発に従事する。著作に『ITエンジニアのゼロから始める英語勉強法』などがある。ソフトウェア開発の最前線での学びを伝えるnoteが人気を博す。