メンテナンスが最優先

プログラミングをするときに最低限考えなくてはいけないのは、クライアントの要求を満たしたり、バグがないようにしたりすることです。

このほかにも、ソフトウェアエンジニアはしばしばトレードオフ問題に頭を悩ませます。開発プロジェクトに欠かせない3つの要素を表す「QCD」という言葉を聞いたことがある人も多いでしょう。

QCDとは

  • Q:品質(Quality)
  • C:コスト(Cost)
  • D:納期(Delivery)

これらの3つは、すべて達成してこそプロジェクトの成功といえます。

ところが現実のプロジェクトでは、開発が終盤に近づいてくるとQCDに「調整」が入ることも少なくありません。

納期に間に合わせたいから人を増やすとか、ありがちですね。
でも、QCDのどれかを優先させなければならない状況というのは、すでに異常事態なのよ。

3つの目標をすべて達成するには、こうした「調整」をせずに済むようコントロールする必要があります。それには、プロジェクトや成果物の状態がいつ誰が見ても分かるように、見通しのよい状態に保っておくことが大切です。

見通しのよい状態に保つって、難しくないですか?具体的には、何をすればいいんでしょうか?
日頃から設計やコードをキレイにしたり、ドキュメントを整理したりしておくといいわね。
え?メンテナンスってことですか?
そういうことね。

例えば、以前に自分が関わっていたプロジェクトにバグレポートが届いたと想像してみましょう。現在は新しいプロジェクトで手一杯なので、ほかの誰かが修正作業を担当することになったとします。

このとき、コードがグチャグチャだったら?仕事をするうえで必要なドキュメントが不十分だったら?自分たちがメンテナンスを怠っていたせいで、ほかの人に迷惑がかかってしまうわけです。

もしかするとバグ修正の担当者にとっては、前任者に聞かなければ分からないことだらけかもしれません。その場合は、山ほどの質問を浴びせられることになるでしょう。

新しいプロジェクトで忙しいのに、過去のプロジェクトの面倒までみるのは大変ですね。
そうでしょ。だから、日頃のメンテナンスが大切なのよ。

メンテナンスに時間を割くのは、なにも将来のためだけではありません。プロジェクトや成果物の状態を整理することで、QDCに影響が出る前にプロジェクトの進行を素早くコントロールできるようになります。分かりやすく、見通しのよい状態を維持できれば、今取り組んでいる仕事もスピードアップするでしょう。

ここがポイント!
日頃のメンテナンスを優先的にやっておきましょう。その結果、プロジェクトをコントロールしやすくなります。

とはいっても、誰が見ても理解できるコードやドキュメントを作っておくことは、決して簡単ではないでしょう(実際とても高度な技術かも?)。

一方で、分かりやすく作るというのは、理解しながら作ることと似ています。まずは自分でよく理解したうえで、誰がみても分かるように工夫しましょう。そうすれば、設計力と実装力も自然と向上していきます。

なるほど〜。メンテナンスを優先させることは、ソフトウェアエンジニアとしての能力アップにつながるんですね!
そういうことね!設計力と実装力のバランス感覚も、自然に身に付いていくんじゃないかしら。