現場で使える!? エンジニアが必ず覚えておきたい3つの法則

結論

ここでご紹介する3つの法則を意識して開発しているだけでも結論から言うと、

  1. 開発の品質は向上します
  2. 実際にマネージャやクライアントからの信頼も高くなります

ということが得られると思っています。 3つとも非常に有名な法則ですが、実際現場では何をやればいいのか...とかちょっとわかりにくいところもあるので、 実際に現場レベルではどういう話になるのかを落とし込んでみたので、ご紹介します!

ブルックスの法則

遅れているソフトウェアプロジェクトへの要員追加は、プロジェクトをさらに遅らせるだけである。

この法則のテーマは、MVPを考える大切さです。

たとえばアプリ開発が大幅に遅れており、5機能ぐらいやってもらえる人材を追加したいとします。 「はい!5機能やってもらう人探します!」は思考停止です。 その5機能が本当に必要か...その他タスクでいらないものはないか...モリモリ状態(やりたいことが詰め込まれている)ではないか...。 遅れているプロジェクトです。冷静に縮小を考えてみてもいいのではないでしょうか。

MVP(Minimum Viable Product)という考えを持つと下記のようなことが考えられます。

uxmilk.jp

  • スケボー:5機能のうち3機能はいらない。必要な2機能について簡易実装版を出す。 (これなら現状の人員でできる!)
  • 自転車:必要な2機能について改善版を出す。
  • バイク:不要だった3機能について、簡易実装版を出す。
  • 自動車:必要な5機能すべて揃う!

ソフトウェアの7,8割の機能はほとんど使われないと言われています。いらない機能です。 いらない機能をあぶり出し、本当にいるものだけをリリースするという癖を組織としてつけることが開発というか仕事のミソでしょうか。

ハインリッヒの法則

1つの重大事故の背後には29の軽微な事故があり、その背景には300の異常が存在する。

この法則のテーマは、リファクタリングの大切さ。 1つの重大なバグの背後には29の軽微なバグが存在し、軽微なバグの背景には300のコーディング上の問題がある(不適正なコメント、わかりにくい命名、重複コード、スペルミス...)。

大切なのはそういったコードを見過ごしている意識、環境であると思います。 そういったコツコツ系の小さな仕事でも大切にするエンジニアがシステムを守っているということを忘れてはいけません。

プログラミングだけではありません。システム開発でもこの法則が頭にあるのかはすごく大事です。 7payのセキュリティ問題も、推測ですが、組織体制・コミュニケーション・納期・リーダースキルなどの異常・軽微な不具合があり、インシデントにつながったと思っています。 組織のトップの方の記者会見やその後のインシデント対応などを見ていると、やはり背景には異常が多く存在していたのではと疑いたくなります。

コンウェイの法則

ソフトウェアの構造(アーキテクチャ)は、それを作った組織を反映したものになる。

この法則のテーマは、ソフトウェアを作るのは人だということです。

例えば...

技術力のあるリーダーの意見が第一で、メンバーは考えてもあまり採用されない、というチーム。言わば独裁的な場合です。 (リーダーほうが口が強く諦めたり、リーダーが頑固だから呆れたり...けっこうあったりするんですよね...) その場合、土台はリーダーのものになりますが、詳細な設計・実装についてはガタガタです。 メンバーも表ではしっかり開発しているように見えますが、裏では組織の粗探しを始めたり開発は二の次になります。

逆にリーダーがなかなか力を発揮できない、そこを疑問視したりボスマネジメントすることもなくメンバーはひたすら開発をするだけ。言わば、レームダック状態です。 その場合、土台がないので、どれだけしっかりした設計でも、仕様の漏れ・手戻りでの不満などガタガタです。

やはり会社・働くひとがみんな、○○さんはどういう人かをまず理解する。何が好きで何が嫌いで、どういう思想があって...。 そして、どういう役目を果たすと最高のパフォーマンスを発揮するのか。 そして、現状チームの人員配置や人間関係のどこに問題があるかを把握し改善する。 チームを知り、人を知り、改善していくことがソフトウェア開発である といって過言ではないと思っています。

まとめ

どうでしょうか?基本的なところに落とし込んでみました。 最後にさらっとまとめますと...

  • 無駄なことはするな。MVPだ。
  • コツコツ改善(リファクタリング)をしろ。
  • ソフトウェア開発は人だ。

こういう基本的なところってやっぱり皆意識できなかったり、そもそも知らなかったりします。 こういったことを意識している姿勢を見せるだけでも...

  • 他と違ったやつだな
  • いろいろ気づく人だな
  • チームのこと考えているな
  • 常にMVP意識していて助かるよ

とか色々喜ばれると思います!