ソフトウェア業界への不満と不安

高専時代の同窓会へ行ってきました。
久方ぶりに出会う人に諭されて、関数型言語を使いたくなったり、Knuth先生の書いた数学の本の存在を知り、読みたくなったりもしましたw


それ以上に気になったのが、ソフトウェア業界に就職した人たちとの会話。
まとめると、次の課題について。
なお、自分の見解なので、思い当たる人が見てる場合(教えてもないし、多分見てないとも思うけど)、書き手の意見の整理と思ってくださいな。決して、乏しいと思っているわけではありません。

  • 前提
    • 議論した相手は中小企業勤め
    • 仕事を取ることから、その仕事を終えるまで一通りを行う
    • 自分は下請けだと言っていた
  • 議論内容(相手の主張、多少誇張ありかも)
    • 開発の依頼者は不完全もいいところである
    • SEは契約から取ってくるから、他社より安く、よいサービスを提供しなくてはならない
    • ソフトウェアは、相手のやりたいことが出来ているかが重要。品質など二の次
    • 契約外の事柄を断らない。追加料金などもない
    • 相手の言うことは絶対。相手は時間を取ってくれない
    • 自作ツール?何それ?
    • 現状でもそこそこ満足している


自分は仕事をしていないのですが、正直、こんなこと聞かされたら働く気が無くなります。こんなだからデスマーチなんかが起こるんだ……
ソフトウェアの開発を頼む側、作る側。共にこんな意識で、今後国際社会に対応できるとでも思っているのでしょうか。

まず感じたのが、明らかに両者が無知であることでした。
名誉のために言っておきますが、決してけなしているわけではありません。ただ、プログラマ・経営者としては不適切だとは思っています。


自分の中でのプログラマの定義は「楽をするために苦労をする」人です。各種のツールを知り、無いのであれば自分を作り、といったことが出来る人こそが、プログラマを名乗る資格があると思っています。
例えば、各種の設計書などを提出することがあるそうですが、例えばdoxygenなどのツールを使用したり、必要に応じてperlなどの言語で、設計書の作成を自動化することは考えられるでしょう。
これらの考慮を一切することなく、学習することを放棄して、いきなり手作業で設計書を作成するのはどうかと思います。自分の経験上、変更されない設計書が作成出来る場合、ソースコードがそのまま書けることがほとんどですから、ソースコードから詳細設計書を書くことも問題が無いと思います。*1


また、依頼者側も「ソフトウェアは何でも出来る」と、存在を軽視しがちです。しかも、「何が作りたい」かすら決まっていないことがあるそうで。
あえて言います。


「馬鹿かあんたら。」


あなた方が分からないものを、開発者が作れるはずは無いでしょう。
例えば、google:How the customer explained itをご覧下さい。
これだけで分かるでしょう?
このことが広く知られない以上、日本が情報先進国に数えられることは無いでしょうな。
意思伝達が難しい以上、必要な時間で必要なものを作るためには意思伝達作業が必ず必要です。それを省くようなら、たとえ下請けといえど仕事を受けるべきでは無いでしょう。両者に悪い結果を残すだけなのですから。


経営者。マネージャー。未来を夢見る学生から一言申し上げるならば。
簡単なことです。現実を見てください。それだけです。


ちなみに、人月の神話っていっても、全く知らないようだったしなあ……
自分の意見としては「実力の無いプログラマ(SE含む)」はいらないと思えるので、チームワーク云々言う前に、自分自身を恥ずかしくないようにするか、自分自身を高めるための努力を継続することはしてください。
チームワークにより現れる成果は積でしょう。チームの効果が高いことは認めます。とはいえ、一人の値が1未満(最低0)であれば全体の値は下がるだけです。


現実がこれなら、本気でベンチャー立ち上げるために経営学を勉強したくすらなってきたよ……

*1:無論、設計は重要です。しかし、変更も多く、概略をUMLなどで記述するのがコスト対効果的に適切ではないかと自分では思っています。