見出し画像

脳は柔らかいうちに洗え

はじめに

これはDevLOVE Advent Calendar 2022 4日目の投稿です。

今年のテーマは「楽しいXXXX」ということなのですが、すこしひねって「XXXXを楽しいと思える環境をいかにつくるかについて考えてみます。

テストは好きですか、リファクタはどうですか

読んでいるあなたがソフトウェアエンジニアであるなら、質問します。テストコードを書くのは好きですか?テストカバレッジを上げるのは?リファクタはどうですか?教えてください。

好きな人もたくさんいます。でも、好きじゃない人もたくさんいます。この「好きじゃない人がたくさんいる」というのが、現代のソフトウェア開発においてもテスト、リファクタリングの優先順位が上がらない現場がそれなりにある一つの理由だと私は思っています。

現場でコードを書いていてテスト・リファクタが好きじゃなければ、とりあえず動くからヨシッ!のコードを書いて、あとは他の人にまかせてしまうかもしれません。

意思決定をする人がテスト・リファクタへの理解がないとどうでしょう。「そんなことしてる時間があったら新しいもの作れ!」となってしまうのではないでしょうか。

もちろんプロフェッショナルであるところの皆さんは好き嫌いに限らずテストを書き、リファクタリングすることもできるでしょう。でも、嫌いなものを歯を食いしばってやるより、好き好んで取り組める状態のほうがよりスムーズにコトが運ぶと思うんです。(私は内発的動機の信奉者であることを告白しておきます)

「テストを書くのは?」と問えば「楽しいです!」と返ってくるような、そんな素敵な現場を作るにはどうしたらいいのでしょうか。

作戦1 効果を見える化する

テストやリファクタに対してモチベーションがわからないのは、その効果がわかりづらいからというのは一つあります。でも、テストであればカバレッジを、リファクタであればサイクロマティック複雑度や重複度、凝集度といったメトリクスを見える化するだけでずいぶんモチベーションが刺激されます。
実際、以前いた現場では、ユニットテストを書くことに対してなかなか手が動かないエンジニアが、カバレッジがグラフィカルに表示されるようになったとたん狂ったようにテストを書き始めたことがありました。見える化って強い。

作戦2 「カッコいい」という空気感をつくる

優れたエンジニアは、だいたい息を吐くようにテストを書きリファクタリングを行います。であるがゆえに周囲のエンジニアはそれをやっていることに気づいていなかったりします。(自分の現場でも、当たり前のようにTDDを行っていたリードエンジニアがそれを開示していなかったため、ある日リードエンジニアが「なんでみんなテストから書かないのか不思議に思ってるんですよ」と言い出しみんなが驚いたことがあります)

周囲から尊敬を集めるようなエンジニアが、自分がやってることを開示する。そして、そういう風にコードを書いていくことがカッコいいんだ、という文化を作っていくのがよいでしょう。

以前、人づてに聞いた「せっかくコード書くならオシャレに書かなきゃ」というフレーズがとても気に入っています。

作戦3 「そういうものだ」と思ってもらう

さあ、身も蓋もない、かつ今回の本題に入ります。
「なぜテストを書くのか」「なぜリファクタするのか」ではなく「テストを書くのは楽しい」「リファクタは気持ちいい」を最初からインプットしてしまうのです。え?なんでテスト書かないの?という空気感。

いちばんよいのは新卒入社のタイミングで、研修で徹底的にインプットすることでしょう。キャリアの最初期に所属する現場の文化は、その人のその後のキャリアに大きな影響を与えます。テストを書くのが楽しくてリファクタリングが気持ちいいエンジニアなんて、どこの現場でもひっぱりだこですよね。そう、これは新人のためでもあるのです。

作戦3補強 虎の威を借る

作戦3の問題点として、そういったインプットを行うことに対する理解が得られるか、というのがあります。また、すでに別の価値観がインプットされている場合なかなか上書きが難しい、というのがあります。

そういうときに有効なのが、「読書会」。私の現場では、先日「良いコード/悪いコードで学ぶ設計入門」(通称『ミノ駆動本』)の読書会を実施しました。

エンジニア歴2−3年くらいのジュニアエンジニアが多く参加してくれたのですが、多くの参加者が「テストって大事なんですね」「リファクタリングが当たり前の文化をつくりたい」「自分の現場のコードを見直さなきゃ」・・なんて感想を述べてました。してやったりです。

私の場合、会社の中で「テスト大事!リファクタ大事!」といい続けてかれこれ10年くらいは経ってるので、「また言ってるよ…」「あなたの現場だとうまくいくのかもしれませんがうちにはフィットしません」というリアクションをされることだってあります。ムキーッ!
でもどうでしょう。自分の現場にいる若手がキラキラした目で、「テスト書いてリファクタしたら、私たちのコードベースはもっといいものになると思うんです!」といってきたら。やるしかないですよね。そのときに「高い評価を受けている技術書」という虎の威があれば完璧です。

おわりに

組織としてやったほうがいいと自分が信じていることに周りがついてこないとき、どうやって風向きを変えるか。私の体験をもとに、いくつかの作戦を紹介させていただきました。

大前提として「自分が信じていること」が組織の、プロダクトの利益にかなっているか?というのはまず点検する必要があります。私はテストとリファクタの力を強く信じていますが、ビジネス状況や組織のサイズ、ソフトウェアの規模感いかんでは必ずしもそうではありません。
なぜ自分がそれを必要だと思っているのか、組織やプロダクトにとってどんな意味があるのか、まず考えてみましょう。そのプロセスを経ることで、あなたはもっと強くそれを信じることができるはずです。

脳は柔らかいうちに洗え。新しい仲間たちを自分の世界に引き込み、ぜひボトムアップで変革を引き起こしていってください。

この記事が気に入ったらサポートをしてみませんか?