最近、開発経験が浅い人とそうでない人の違いは言葉の使い方にあるのではないか、と考えている。
経験が浅い人は抽象的な説明しかできない。逆に、経験値が増えると説明や文章が具体的になっていく。
抽象的な説明の例
商品の売り上げを計算するプログラムを開発する場面があったとする。
売り上げは次のロジックで求められる。1
売り上げ = 商品単価 * 売り上げ個数
経験が浅いメンバーは、このテストケースやドキュメント(Pull Requestの説明とか)にロジックが正しいことを確認する
のような記載を書いてしまう。
test("売り上げ計算が正しいことを確認する", () => { expect(calcBookSales({ sales: 59, price: 1000 })).toBe(59000); });
正しいことを確認する
のは間違ってはいない。しかし、数ヶ月後に自分が見たとき・保守で別メンバーが修正に入るときを想像してほしい。「何をもって正しいとしたの?」と困ってしまうはずである。
重要なのは正しいことを確認する
ではなく2 、正しい状態は具体的にどんな状態か=売り上げを計算するロジックは何かである。
この記載がないと、時間が経った際よくわからないテスト
が積み上がってしまう。ドキュメントもなんかあるけど分からないドキュメント
となる。最悪、せっかくの成果物がゴミになってしまう。
よって、先ほどのテストケースであれば次のように記載を変えてもらう。
test("売り上げ金額 = 売り上げ数 * 売価で求められること", () => { expect(calcBookSales({ sales: 59, price: 1000 })).toBe(59000); });
どのように練習するか?
正しい
・しっかり
・ちゃんと
等、説明してそうで中身がない言葉はレビューで弾く。また、調査結果の報告に対して「〜だと思う」と述べている場合も同様。癖がついてしまうと矯正するのは大変なので、きちんと指摘して辞めさせる。
始めのうちは1人で考えさせるのではなく、口頭で質問すると良い。抽象的な言葉を使うのであれば、国語が苦手な可能性がある。その状態で文章を書かせても何も進まない。
まずは壁打ち相手となり、本人の考えを整理する。整理できたらメモをとらせ、今話したことで書き直してくるように伝える。可能であれば一緒に修正できると良い。これを何回か繰り返すとできるようになる。3
しっかり
・正しく
・正確に
・確認する(具体例がない場合)
と記載されている場合、早めに指摘して対処することが重要である。後から困るのは本人と自分も含む周囲の人間なので。