SSブログ

ソフトウェアエンジニア [プログラマー現役続行]

ソフトウェアエンジニア(Software Engineer)という言葉を、私自身は意図的に使っています。それは、ソフトウェア開発のすべての工程を行い、実際の設計・実装・デバッグまでも行うエンジニアです。Google社などの米国でのソフトウェア開発者は、肩書きはSoftware Engineerがほとんどです。自分で設計をすることなく、誰かの詳細設計に基づいて、それに忠実に単にコーディングするコーダー(あるいはプログラマー)は、ソフトウェアエンジニアとは呼びません。

米国でのソフトウェアエンジニアというのは、大学、大学院で情報工学(コンピュータサイエンス)を専攻し修了しているのが普通です。一方、日本ではいわゆるソフトウェア開発の各フェーズが細分化されて、いわゆるコーダーという作業をしている人もいたりします。したがって、新人でも良いということになってしまう訳です。

また、以前に書いた「ソフトウェアは工業製品ではない」 まつもとゆきひろ氏でも引用したように、「コード(ソフトウェア)を書くというのは、組み立てのことではなく、製造業でいう「設計」に相当する。」と私自身は考えています。

単に詳細設計通りにコーディングするだけなら、その詳細設計からコードを自動生成できるように詳細設計のやり方を工夫するのが正しいと思います。(忠実にコーディングするというような)単純作業は、人が行うべきものではなく、コンピュータに行わせるべきものです。人は、考えるという創造的な活動に時間を費やすべきです。

ソフトウェア開発組織のトップは、自分の組織がソフトウェアエンジニアの集団としてソフトウェアを開発しているのか、あるいは、ウォーターフォール的に各フェーズの担当者がいて、単なるコーダーがいるような組織でソフトウェアを開発しているのかの違いを認識しておく必要があります。

後者の組織では、単純作業的なコーディングしかしていないコーダーの評価は低く、上流工程を行っている人の評価が高いということになります。前者の組織(ソフトウェアエンジニアの集団)では、プログラミングも創造的な活動の一部であり、プログラミングをすることが低く評価されることはありません。たとえば、ソフトウェアエンジニアの集団であるGoogle社で、プログラミングを全くしないことを期待されているソフトウェアエンジニアはいないと思います。

ソフトウェアエンジニア集団としての開発組織のトップは、トップ自身がソフトウェアエンジニアとして経験がないと、その組織のメンバーを正しく評価できないと思います。もし、作業が細分化されて単なるコーダーがいるだけのようなソフトウェア開発しかトップが知らないとすると、開発業務の一部としてプログラミングを行っているソフトウェアエンジニアを正しく評価できず、「コーディングなんか新人にやらせろ!」というような不用意な発言をして、メンバーのモチベーションを下げてしまったりすることになります。

このような認識の違いによる悲劇が日本全体で多く発生していないと良いのですが・・・・・
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0