torutkのブログ

ソフトウェア・エンジニアのブログ

ソフトウェア・エンジニア心得

  • 原理を理解して技術を活用する

コンピュータならどんな仕組みで動いているのか、OSはメモリやプロセス、スレッドをどう管理しているのだろうか、プログラムがどのようにコンパイル・リンクされ、実行されるのだろうか、データベース管理ソフトウェアはデータをどう管理し検索・登録しているのだろうか、ネットワークの上でどうやって通信が行われているのだろうか、・・・

言語仕様、通信規格、計算機やOSならその基本構成(個別のOSの機能ではなく)について、基本ルールをしっかり把握した上で必要に応じて詳細にアクセス(調査)できるように整理できているか・・・

これらは一例ですが、何か問題が発生したとき、課題が挙がったとき、問題・課題を解決する能力は、この原理を理解しているかどうかに大きく左右されます。「○○という問題がある。解決する方法はあるか?」との問いに、原理をしらないエンジニア(とは呼びたくないが)は、「さあ、分かりません。できません。やったことがありません」という回答しか出てきません。原理を知っているエンジニアなら「これは××が△△となって発生したものです。□□することで解決が可能かもしれません」という回答が出てくきます。もちろんその回答も間違っているかもしれないし、十分な解決ではないかもしれません。しかし、原理を知っているエンジニアなら行動に移れます。原理を知らないと、「では調査をしてくれ」と言って、ある時間が経過してから(時間はコストになる)「やっぱり分かりません。うまくできません。」となってしまいます。

プログラマーならば、作成するデータ構造やアルゴリズム(昨今の高級言語ならこれはライブラリから選択する作業になるが)について性能観点、メモリ使用観点で評価できなくてはならないし、通信処理を記述するなら正常系だけでなく通信規格を理解した上で想定される障害への対処をプログラミングできなくてはならないでしょう。

原理を理解するにはやはり勉強が必要です。しかし、ことソフトウェアに関しては原理を理解するのに十分な専門書・解説書が少なく、専門雑誌も休刊相次ぎ寒い状況ですし、Web上のコンテンツに至っては・・・(これについては人のことは言えませんが)。セミナーも原理を教える骨系のものはなかなか見当たりません。(資格取得は原理はさておきHowTo)

OJTが成立する職場環境でもないし・・・

ちょうどトリノオリンピックでスケート等の冬季スポーツの環境が貧弱な点が問題になっていますが、ソフトウェア産業においても人材育成という点では環境が貧弱と思います。