🔪

開発をしない開発者のすゝめ

2023/02/03に公開

はじめに

初投稿でふざけたタイトルにしました。半分ぐらいはタイトル詐欺なような気もしますが、残り半分はいたって真面目に開発しない開発者をオススメする理由を書きたいです。開発者なんだから開発するのが仕事だろと言いたいところですが、私は実際の仕事ではそうでもないように思っています。つまり、開発者でも開発しないことが仕事になることもあると思っています。

開発しない開発者とは

開発者と言ってもさまざまですが、ここではプログラマーとかエンジニアを指しています。

  • プログラマーはプログラミングすることが仕事
  • エンジニアはエンジニアリングすることが仕事

(進次郎構文みたいになってしまった)
上記のように思われがちですが、プログラマーがプログラミングしなければ仕事をしていないと言われるのでしょうか?エンジニアが設計をしなかったら仕事をしていないと言われるのでしょうか?
私はそうではない思っています。なぜなら、プログラミングも設計も手段の一つでしかないからです。お客さんや市場、あるいは自分の要望に応えることが目的で、システム開発はその目的のための手段でしかありません。目的を達成するための手段は1つとは限らないのが世の常です。そう考えると、開発しない開発者でも仕事ができるのではないかと思うのです。

では実際には何をやるか

開発しない開発者だからといって、何もしないわけでありません。開発者目線だからこそできる仕事をするのです。
世の中の営業やコンサルやマネージャーはシステムのことを知りません。知っていたとしても、エンジニアの10分の1程度の知識しか知らないことがほとんどです(もちろん例外的な方もいます)。つまり、お客さんの希望や要望が反映された要件定義書や仕様書、設計書を見た時に、それを疑ってみるのです。 お客さんが本当に実現したいことがそれらのドキュメントには反映されていないことは開発の現場ではよくあります。

例えば、お客さんから

「現状ではオフィスソフトで売上データを管理しているが、それをwebシステムに移行したい」

というような要望を受けたとしましょう。そのときに、安易にオフィスソフトで行っている業務をwebシステムで実現するのではなく、お客さんがwebシステムにしたいと言い出したきっかけを確認する必要があるわけです。そのきっかけとして例えば次のようなものが考えられるでしょう。

  • 複数のアクセス先から同じデータを見たいから
  • 保存したデータをBIツールで可視化したいから
  • 他システムとの連携をしたいから

いずれにせよwebシステムに移行したいという要望はお客さんにとっては手段でしかなく、目的は他にあるはずです。仕様書や設計書にはこれらの目的が抜け落ちていることが多々あります。だからこそ、それらのドキュメントを疑ってみることが重要なのです。 つまり、開発しない開発者というのは、お客さんの本当の目的をきちんと汲み取った上で、システム開発以外の選択肢も考えられる人のことをいうのです。上の例でお客さんの本当の目的はBIツールでデータの可視化をしたいということだったら、インプットは現状のオフィスソフトのままで、データをBIツールが解析できる形に加工することが最適かもしれません。そうした方が結果的にコストも安くなり、お客さんの入力方法も変わることがないため現場の負担も減らせるかもしれません。

つまり何が言いたいか

エンジニアがコンサルの仕事を肩代わりすべきだと言っているわけではありません。仕様書や設計書を1から10までチェックして改善できないかチェックすべきだと言っているわけでもありません。
何が言いたいかというと、ソースコードを書く量を減らす工夫をしようということです。誤解がないように言うと「こういうコーディングをするとソースコードが綺麗に見える」とか「このメソッドのあの使い方をするとコーディング量が減る」みたいな考え方でソースコードの量を減らすのではなく、システムの仕様を減らすことでコーディング量を減らすことができないか考えようということです。つまり、ここまでお客さんのためと言ってきましたが、最終的には自分のためです。お客さんにとっても開発にとってもwin-winとなる提案なら、コンサルやお客さんにも受け入れてもらいやすくなるから、そういう提案することでシステムの仕様を減らし、コーディング量を減らそうと言っています。コーディング量を減らすことでバグが生まれる可能性が減り、納期も早められる可能性だってあります。これこそが開発しない開発者です。ちなみにこの類の提案ができるようになるとお客さんからも上流工程の人々からも重宝されるため、評価(=単価)も上がります。
ただ、この提案には気をつけるべき点が1つだけあります。それはお客さんにとってwinとならない提案をするとコーディング量を減らしたいから提案していると思われ、信用をなくすということです。

まとめ

「開発をしない開発者」とは、お客さんの本当の目的を見抜き、その目的に沿った提案をすることでシステムの仕様を減らしてコーディング量を減らす開発者のことです。
最後に、個人的な意見にはなりますがエンジニアは開発をしないことこそが最強の開発だと思っています。開発さえしなければバグが生まれる可能性はない点で安心感が段違いです。一緒に開発しない開発者を目指していきましょう。

Discussion