2009年02月12日

最近周りでSEになるって人をよく聞くけど

文系でコンピュータサイエンスをあまり理解してなく、コードも書けない人がSEになるという話をよく聞くけど、それはどうなのかなぁと思う今日このごろ。

現在のソフトウェア作りの実情ではSEが設計書を作ってプログラマがそれをコードにするわけだけど、設計書からコードにする過程は単純作業ではありません。


まつもとゆきひろ氏が語る「ビューティフルコード」セミナーに行って来た
ソフトウェアの生産は車の作業工程に置いて、設計部分にあたる

コードが工業製品と勘違いされているために、「ソフトウェアの生産」は車の生産ラインのように扱われることがある。

しかし、ソフトウェアは本質的には情報なので、流れ作業は0に等しく、生産ラインのような作業はない。実は、ソフトウェアの生産は車の作業工程でいう「設計 = デザイン」の部分にあたる。車を設計する時には、原寸大の粘度を削って車の形にする。そして、それが美しいとか議論されて最終的なデザインに落ちる。

自動車業界で新車というと年に10台くらいしか出てこないのに、車のデザインと同じくらいクリエイティブで大変なソフトウェアは毎年大量にでてくる。これは、ソフトウェアが「ものづくり」として理解されてしまっている部分に原因があり、このギャップが不幸を生んでしまっている。例えば、コードの設計部分が軽視されるものそのためである。

本来、ソフトウェアの生産は設計なので、次の様な性質をもっている。

* 職人芸
* そこから生まれるソフトウェアは一品もの
* ソフトウェアにはよしあしがある


コードそのものがソフトウェアの設計書で、設計書からソフトウェアを作るという単純作業はコンパイラがやってくれているわけです。
設計書(ここではコードの意味)の書き方を知らない人が設計書(コード)の大まかな構成を決めちゃうと良いソフトウェアは作れない。


ただソフトウェア作成にあたってコードが書ける人だけが必要ないわけではない。
顧客の要望は複雑なのでそれをはっきりとさせる作業はコンピュータサイエンスを理解している必要は必ずしもない。むしろ技術者よりも消費者に近い目線で考えれる人の方が良いとも思います。

ただその人の仕事は顧客の要望をまとめ、どのような機能をもったソフトウェアが必要なのかをはっきりさせるだけに止めて、ソフトウェアの設計はしない方がいいでしょう。


チームで大規模なソフトウェアを作った経験もないのに生意気なことを言ってしまいましたが、これが正しいと思っています。




上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。