まめログ

Javaプログラマの歩み

システムの質と提供価値の相関について

営業と口論になったので経緯を含め持論を書く。


私はコードの質を高めることで顧客へのシステムによって提供できる価値を高めることが出来ると考えています。

営業的にはコードの質は、些細なこと、顧客の要件を満たせばそれでいいということでした。

口論になるということは、会社や営業はそうは思っていないということ。
現実に、いわゆるアンチパターン満載のコードで書かれたシステムが多く顧客に納品されています。

・数百行にわたるメソッド
・数千行もある神クラス
メソッドの先頭で全ての変数を宣言
オブジェクト指向を理解しておらず、「Main」、「Common」、「Logic」、「Database」等のクラス名
・動詞のクラス名「GetData.java

など

勿論、メソッドが何百行あろうと、クラスが何千行もあって責務の分割が出来ていなかろうが、顧客の要件を満たせていれば顧客にとっては満足度100%のシステムです。
そこに私も異論はありません。

ただ、多くのシステムで一回作って終わりということはありません。
新たな要件、処理が顧客から追加要望が来た時点で、現状のシステムは「動いていないシステム」となります。

その時に、うまく設計されていれば(コードの質が高ければ)1週間で終わるのに、作りが甘かったせいで1か月かかるということがあれば、システムが提供する価値は、うまく設計されているシステムのほうが高いことになると思っています。

そして、少しでもそうした質を上げるためにエンジニアは日々勉強していっているのだと誇りを持っています。

そうした誇りややりがいをないがしろにされたことに悲しさと怒りを覚えました。

また、密結合なシステム、長大なメソッドなどで沢山のエンジニアが苦労し、様々な手法や技術(オブジェクト指向言語デザインパターン単体テストフレームワーク等)が生み出されました。

技術やコーディングの質をないがしろにすることは、こうしたエンジニアたちの苦労や功績を全く評価しないことにもつながると思います。

これは、以下のブログに言いたいことが纏めてありました。

モンブラン・ノーランドとオブジェクト指向プログラミング – 2014年29週目 | mizoguche.info

 

この偉大な “進歩"《ソフトウェア工学》をお前達は踏みつけにしているんだ!

だからお前達の 儀式《コード》は彼らへの侮辱だと言っているんだ!

お前達の古い 戒律《プログラミングスタイル》こそ悪霊じゃないのか!

そんなに 神《オブジェクト指向プログラミング》が怖いのか!

確かに、Javaで言えば今までforループで書いていた処理を、ラムダ式にしたところで顧客にとってはそれだけでは何の価値も生まれません。エンジニアの自己満足です。そこは否定しません。でも自己満足も大事ですよね。モチベーションが高ければ生産性も高くなりますしね。

ただ、そうした技術がなぜ生み出されたのかというところまで、システム開発に携わるのであれば知ってほしいと思います。そしてエンジニアのやりがいやスキルと、顧客の利益が共に高まっていくことを喜べる会社にしていきたいと思います。