Shiraji's Blog

リファクタリングについて伝えたいこと。

この文章は以下のURLのコピーです。

http://shiraji.hatenablog.com/entry/2015/09/06/225204


この文章は以下に該当する方へ、なぜエンジニアにリファクタリング(リファクタ)させるべきなのかを記載しています。

  • リファクタリングする=サービスの開発が停止すると考えている方
  • リファクタリングに関して価値を見出せない方
  • エンジニアにリファクタリングさせて欲しいと言われる方

最初に

リファクタリングの話をする前に、一般的な職場に関する質問があります。

  • あなたの職場は綺麗ですか?
  • あなたが思い浮かべる「できる同僚・上司」の机は整理整頓されていますか?

全ての人に当てはまるわけではないと思います。しかし大抵の方は両方回答がYesになると思います。

職場を綺麗にするのはそこで働く人の健康維持やモチベーション向上に役立ちます。職場を綺麗にしてくれる専門のスタッフがいる企業もあるのではないでしょうか?また整理整頓された机で仕事することにより、ムダを省略することが出来ます。仕事をするスペースが増えることにより効率もあがります。大抵の出来る人は机を整理整頓している傾向があるそうです。著名な会社の研修でも同じようなことを説いていました。

汚い環境で働くということは、モチベーションを下げ、ムダな作業を発生させ、効率を下げるということです。汚い環境で働くのは非常に辛く、可能であれば、人はその環境から離れていきます。

リファクタリングとは何か?

さて、本題のリファクタリングについてです。wikipediaでは以下のように説明されています。

リファクタリング (refactoring) とはコンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理すること。((“リファクタリング (プログラミング)”. wikipedia. https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0))

もう少しサービス開発に絡めて切り込んだ説明にすると、

「リファクタリングするということは、サービスの機能の追加や削除は一切行わず、コストをかけて、今まで動いていたコードに対して修正を加える作業です。」

リファクタリングをすることにより、バグを埋め込んでサービスを止めてしまう可能性も含まれることになります。もちろんそれを避ける術はいくつかあるのですが、手段はエンジニアが考えればいいのでここでは省略させていただきます。

リファクタリングをなぜやるのか?

なぜこんなムダな作業を行うのでしょうか?エンジニアはアホなんでしょうか?

エンジニアはコード上で仕事をしている

(実際、アホなことやる人は多いですが・・・)事自分たちが行っているサービス開発に関して言えば、プライドを持って行っているはずです。サービスに携わっている以上、そのサービスがより良くなることを望んで開発しています。そのエンジニアがコストがかかることを承知で、リファクタリングさせて欲しいという理由があります。それはエンジニアはコード上で仕事をしているということです。

デスクの綺麗さとコードの綺麗さ

私が非エンジニアにリファクタリングの重要性を説明する時は以下のように説明します。

  • デスクに毎日のようにいろんな人が資料を置いていくとします。
  • 資料を置くことを目的にする社員もいるので、資料はあなたが意図した場所には置かれません。
  • デスクがどんどん汚くなっていき、必要な資料を探すのに苦労します。
  • 間違った資料を使って仕事をする可能性も出てきます。
  • このような状況になった場合、あなたがまず最初に行うのが、整理整頓だと思います。

ではエンジニアはコード上で仕事をしているということなので、デスクを「コード」、置かれていく資料を「追加機能」と読み替えてみます。

  • コードに毎日のようにいろんな人が機能を追加していきます。
  • 機能追加を目的にする社員もいるので、エンジニアが意図した場所に機能が追加されません。
  • コードがどんどん汚くなっていき、必要な機能を調査するのに苦労します。
  • 間違った機能を使って仕事をする可能性も出てきます。(=バグを作り出す)
  • このような状況になった場合、エンジニアがまず最初に行うのが、整理整頓(=リファクタリング)だと思います。

エンジニアが作業しているコードを綺麗にすることにより、将来的にバグを作り出さなかったり、効率良く作業が出来る環境を作ることが出来ます。

エンジニアを惹きつける、引き止めるためのリファクタリング

汚い環境で働くということは、モチベーションを下げ、ムダな作業を発生させ、効率を下げるということです。汚い環境で働くのは非常に辛く、可能であれば、人はその環境から離れていきます。

この文章も同じように読み替えることが出来ます。

汚いコード上で働くということは、モチベーションを下げ、ムダな作業を発生させ、効率を下げるということです。汚いコード上で働くのは非常に辛く、可能であれば、エンジニアはそのコード(会社)から離れていきます。

エンジニアが働く場所の環境を良くすることとそのエンジニアを魅了するためにリファクタリングをさせる猶予を与えてあげてください。この魅力的な余裕があることでエンジニアとしてやる気が向上し、整理されたコードで仕事が出来るためパフォーマンスが上がります。働きやすい職場(コード)で最高のパフォーマンスを出すことが出来るのであれば、エンジニアが離職するのを引き止めるのに役立つはずです。

まとめ

汚い場所で人を働かせることが辛いということがわかるのであるなら、ぜひ汚い環境で働かされているエンジニアに掃除をする猶予を与えてあげてください。それが長期的に見るとサービスを改善を早くし、技術力のあるエンジニアを定着させ、変化に柔軟なサービスを提供させることが出来るようになるからです。