Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

ソフトウェア工学・暗黙の前提 (1)

就職してもうすぐ2年になります。大学ではソフトウェア工学を、主にオブジェクト指向設計/開発の勉強をしてました。

私も就職して初めて気付いたのですが、現在のソフトウェア工学には暗黙のうちに置かれている前提があって、しかもそれが現実とはだいぶ違うんじゃないのかと思えてきました。
なので、ソフトウェア工学が置いている(と思っている)前提と、ウチの会社だとこうだよ、という点を挙げていきたいと思います。全 n 回シリーズ。

開発者は新しい技術にすぐ適応する
ハナからソースがなくて申し分けないのですが、日本のSEが読む技術書の数は平均して年2冊だそうです*1。1冊読むのに半年ってことはないと思いますが、働いている人の多くは以下のように考えているのではないでしょうか。
  • できるだけ勉強したくない
  • 勉強せずに済めばそれに越したことはない、
  • 例え勉強して後々仕事がラクになるとしても勉強したくない
  • 仕事から離れられる時にコンピュータのことなんか考えたくない
  • 勉強したことが仕事に役に立つか不確定なのに勉強したくない*2
  • お客さんの業務の勉強だけで手一杯だよ(これはかなり真っ当な理由だと思います)
開発者はソフトウェアの動きを理解するにあたって十分な知識がある
以下の知識は大学では「常識」でしたが、どうも会社に入ると「知らない人の方が多い知識」になっているように思います。
  • プロファイラって何?
  • ガベージコレクションって何?
  • マルチスレッドって何?
  • HTTPを喋るときに飛んでいく情報(「送信」ボタンを押したときに飛んでいく情報は?)
  • DBのインデックスって何?
  • 計算量の概念(O(n)とかO(nLogn)とか)
  • オブジェクト指向(!)
  • (ソフトウェアの知識ではないですが)RAID 0/1/5

また「プロジェクトが大規模になると情報の伝達コストがやたら大きくなる」というのはよく知られています(知られていると思いたい)。ですが、共通の知識があれば情報の伝達コストが下げられる、という点に対する取り組みは一切なされていないように思います。
たぶん「勉強したことが仕事に役に立つか不確定」だから全員に同じ教育を受けさせるのはリスクが高すぎてできない、ということではないかと思います。
また、高校〜大学の頃は「情報処理技術者試験なんか役に立たない」という話をよく聞きましたが、これは「取ってるのが当たり前だから役に立たない」という意味ではありません。「知らないと情報の伝達効率は落ちるけど致命的な問題にはならないよ」という意味です、多分。

*1:偏差が不明なので根拠の値として使っていいのかも怪しいです

*2:「知識ポートフォリオ」みたいな概念がない、ということだと思うので、ソフトウェア工学自体の問題ではないけど……