「技術はビジネス/文化ほど重要ではない」か?

ヨードン博士の「ソフトウェア工学で最も大切な10の考え方」という資料を、平鍋さんが翻訳されていた。ヨードン博士が「書いたよ」ってtwitterでつぶやいて、平鍋さんが「翻訳したいな」って呟いて、5分で「いいよ」って返事をもらったとか。すごいなー。

平鍋さんのページ:Ed Yourdon の『ソフトウェア工学で大切な10の考え方』を訳しました。:An Agile Way:オルタナティブ・ブログ
原文はこれかな?:Top Ten Software Engineering Concepts, v10


その中にある、以下の記述が目に留まった。

  • Technology less important than business/cultural issues.
  • Technology is not the key issue.

言いたいことは分かるけれど、ちょっと悲しいなぁ。技術屋としてはこう言って欲しいわけ。

  • Technology is important as well as business.

二宮尊徳ふうに、こう言ってみますか。

  • 技術なきビジネスは犯罪であり、ビジネスなき技術は寝言である

いやはや、ちょっと過激すぎるか(苦笑)。


え?元の文章をお前は誤読してるって?うん、分かってる。

まず僕は、元の文章から "cultural" を抜いてしまっている。それに、元の文章が指している "business issue" は例えば契約上の問題とか協力企業との面倒なしがらみとか政治的なことであって、ビジネスとしての成功/失敗ということではないんだと思う。

だけど、誤読は分かった上で、ちょっとこのまま突っ走ってみたい。つまり、ここで書くことは冒頭のヨードン博士の資料とはあまり関係がない。単にその資料からインスパイアされた思考の軌跡をここに書き連ねているだけ、と思ってほしい。


最近思っているのは、こういうソフトウェア開発に関する言説というのは、それなりに注意深くというか慎重に読まなくちゃいけないな、ということ。

ソフトウェア開発を研究されている方というのは、たぶん、多くの業種業態に横断してソフトウェア開発を研究されているんだと思うわけ。つまり、例えばウェブアプリ、業務システム、金融システム、組み込みソフト、・・・といったあらゆる分野のソフトウェア開発を横断的に観察して、ソフトウェア開発に共通する固有の問題を抽出しているんだと思うわけ。

つまりその過程で、例えば金融システムのみに固有の問題はそぎ落とされてしまう。もしかするとある種の金融システムにおいては、金融工学の難しい数式を使いこなして的確にシステムに組み込んでいくことがビジネス上の成功の大きな鍵となっているかもしれないけれど、そういう「技術」はそぎ落とされてしまうわけだ。

例えば僕がやっているソフト開発が彼らのケーススタディとして観察されたらどうなるのか。僕は3次元CAD開発をやっているわけで、その開発の成功にはそれなりに3次元形状処理の技術も大きな役割を担っていると考えている。しかし、彼らの研究レポートからはそれらの情報はそぎ落とされてしまうのではないか。

つまり、当たり前のことだけれど、「ソフトウェア開発」という視点で分野横断的に観察しているわけだから、観測範囲に含まれる「技術」というのは「ソフトウェア技術」だけである。つまりオブジェクト指向とかプログラミング言語とかそういった技術だけが観測範囲に入っていて、例えば金融工学とかグラフィックスとか形状処理といった技術は彼らの観測範囲には入っていないのだ。

あとは、共通して残る問題はビジネスや文化的な問題だけだ。これらの問題とソフトウェア技術の問題を比較すると、どうしても結論としては「ビジネス/文化の問題のほうが重要」ということになる。それはそれで、もちろん非常に重要な示唆なんだけど、これをそのまま自分のビジネスに当てはめて大丈夫なのか、というところは慎重に考える必要がありそうだ。この文脈で語られる「技術」には、「あなた」のソフトウェアに固有の技術は含まれていないのだから。


ちょっと話は変わるけれど。学生の頃だけど、こういう意見を聞いたことがある。

「英語は重要だけど、英語が話せるだけじゃ意味ないよ。英語で『何を』話せるかが重要なんだ。何も話す内容を持ってなかったら、英語の電話を取り次ぐくらいの仕事しか出来ない。だから英語自体よりも英語で伝える内容を充実させる勉強がまずは重要だ。」

英語がキライだった僕は「要するに今は英語は勉強しなくていい」と都合のいいように解釈した大バカ者だった。今ではそれを猛烈に後悔しているのだが、それはまた別の話。

ここで言いたいのは、ソフトウェア技術も英語みたいなものってこと。ソフトウェア技術だけじゃ意味がないのだ。ソフトウェア技術を使って『何を』コンピュータにやらせるか、が重要なんだよね。その『何を』の部分の技術・知識を持っていなければ、単にSEが書いた仕様をプログラミング言語に翻訳する仕事しか出来ないのだ。そんな翻訳技術だけじゃ大した成功は望めないんじゃないかな。もうひとつ上のレイヤーの技術も身につけないと。

もう、「プログラムが書けます」だけでは技術者とはいえない時代になったのだと思う。


だから、僕たちは "Technology is less important than business/cultural issues." を誤読しないように注意しなくてはならない。と、敢えて誤読して突っ走っている僕が書いても何の説得力もないんだけど、まあそれはおいといて。自分に都合よく解釈して、何か問題があると「上司が悪い」「営業が悪い」「マネジメントが悪い」「多重下請け構造が悪い」と技術以外の部分ばかりに愚痴をたれていてはダメなんだろうな、と思う。

依然として技術は重要なのだ。ただ、プログラムを書くだけの技術では十分ではなくなったのだ。技術を磨くことでより良い未来を築くことは可能なのだ。

技術者がこういう意識を持てば、技術の地位は必ず押し上げていくことが出来るはずだと思う。