Better Software Testing

ソフトウェアテストをもっと良くしたい

キャッチアップをすることについて

jvns.ca

僕は今まで7回ほど転職をしており、いろんなソフトウェア開発に携わってきた。

小規模なものから大規模なものまで、新規開発からレガシーシステムまで。

会社の規模も様々で、スタートアップ、メガベンチャー、老舗中小企業、SIer、グローバル企業。。

いずれの組織に関わる場合でも共通して必要になったタスクがキャッチアップである。

「転職してきた人材」には必然、即戦力が求められる。初日からコントリビューションすることは求められないが、まぁジョインして2-4週間くらい経つまでには何か小さな1つのタスクを完遂してみようという方針はどの組織でも共通していたように思える。

そんなわけで、僕は少なくとも7回はキャッチアップをする状況に置かれていたわけだが、となると「いかに早くキャッチアップを進められるか」という課題に思考を巡らせることになる。

キャッチアップを別の言葉で表すと「業務知識と業務フローを理解する」ことだと思う。大抵の組織ではwikiやConfluenceにある程度の情報がまとまっている。wikiやConfluenceが存在しない組織もある(多くの情報が暗黙知として存在している状態)。いずれの場合でも分からないことは無数に出てくるので、その分質問をする必要がある。

このとき大切なのは「どんなに小さい疑問でも質問する勇気を持つこと」「効率よく質問すること」だと考えている。

どんなに小さい疑問でも質問する勇気を持つこと

  • こんな初歩的な質問して怒られないかな
  • 〇〇っていうニッチなケースの場合はどうすれば良いんだろう。でも重箱の隅をつつくような感じで嫌なやつだと思われないかな。。

という気持ちになることがある。でも気にせず質問していいと思う。あなたの質問に対してキレる人がいた場合、それはあなたの問題ではなくキレた人の問題だからだ。それはその人の人格の問題かもしれないし、たまたまストレスが溜まっていたのかもしれない。また、ニッチなケースについて質問することは、組織やシステムに対する未知の課題を発見したということかもしれない(第三者の視点が入ることにより、未知の課題が明らかになる状況はしばしば発生する)。いずれにせよ、キャッチアップをする段階で質問が生まれることは自然なことで、あなたは何も悪くない。キレられたら他の人に質問をしてみよう(可能なら、その人がキレた理由も質問してみよう)。未知の課題を発見したのなら、それは早速組織に貢献できたということだ。

効率よく質問すること

あなたが質問をするということは、あなたの質問に対して回答をする人が存在するということだ。1つ2つの質問ならチャットや口頭でパパッと聞いてしまえばいいのだが、キャッチアップをする場合は一度に10個以上の質問が出てくるなんてことはザラである。上手に質問できないとやり取りが発生して時間がかかってしまうかもしれないし、自分が期待したものとは違う観点から回答が返ってくるかもしれない。できることなら、お互いコストを掛けずに質問し、回答したいものだ。

  • チャット/口頭では一問一答の形式で質問をする。1度に2つ以上の質問をしない
  • 質問リストを作成する
  • 質問事項に対して、現時点で自分が理解していることと考えていること、知りたいことを明確に記載する

これはあくまで私の経験上の話であって科学的なエビデンスは一切ないのだが、人の脳は2つ以上の質問を同時に処理できないように設計されていると思う。よくある例としては、チャットで2つの質問を投げたとき、どちらか一方の質問に対してのみ回答が返ってくるという場面がある。改めて確認すると回答者はもう片方の質問にも回答できる知識を持っているのだが、なぜか1つの質問に対してしか回答が返ってこない。どういう理由でこうなっているかは分からないが、とにかく色々な人がこういう振る舞いをするということだけは観察できている。なので、チャットベース/口頭で質問をするときは一問一答の形式で話をするとよいだろう。

質問リストを作ることの意義は、多くの人が実践していることなのであまり詳しく説明する必要はないかなと思う。僕がやっているプラクティスとしては、「緊急度が高い質問は質問リストに記載の上チャットでメンションします。それ以外の質問はお手すきの際にご確認ください」と伝えることくらいだ。

ただし、質問をする際には、その時点での理解度、知りたいこと、質問する背景はできるだけ詳しく書いたほうが良いと思う。回答する側としては、

「〇〇」って何ですか

と質問されるよりも

「〇〇」について質問があります。こちらについて社内ドキュメント(orインターネット検索で得た情報)を拝見する限りXXXかなという認識をしておりますが、合っておりますでしょうか。背景としては、現在のタスクを進めるために△△△をしたいと思っています。

のように質問されると、「あぁこの人はこういうことをやろうとしていて、この部分までは理解できていて、この部分で躓いているんだな」と状況を正確に把握することができるため、コミュニケーションギャップを減らすことができる。

 

この他、「大枠から理解を進める」「質問したことは必ずメモする」「回答をもらったあと、自分の言葉で回答内容を説明し理解できていることを確かめる」といったプラクティスもある。これから新しい会社/プロジェクトに参画する人たちの助けになれば幸いである。