プログラマの紹介: プログラマって?

そもそも「プログラマ」とは何なのでしょうか?

簡単に言えば、「コンピュータ ソフトウェアを開発する人」なのですが、コンピュータと無縁な人には、そもそも「ソフトウェア」が通用しません。

「ソフトウェアって何?フリースとかの洋服と関係あるかね?」っと真顔で質問してきたのは、私の祖父でした。ソフトなウェアっと判断したのか、語学力はあるようです。彼は高齢ではありますが、ボケている訳ではありません。(もちろん私の祖父である以上、狙いボケの可能性はありますが)

彼は、ただ知らない横文字の単語を、少しは知っている横文字の単語に置き換えようと努力していただけでしたが、世間一般の方々が彼ほど努力家ではないようで・・・コンピュータと聞いた瞬間に「私とは別の世界」っという表情を浮かべてくれます。

それでも説明しなければ、親戚中で爪弾きにされてしまいますので、そこはグッと抑えて、車のギアを5,6つ落として歩行者と同じ速度で走るつもりで「コンピュータ」から説明をしましょう。
といっても、勢いあまって真空管時代のマニアックな話から始めると夜が明けてしまうので、その辺りの歴史はぶっ飛ばして、最近の家電量販店で必ずお見かけするパソコンからはじめましょう。

パソコンっていうのは、パーソナル コンピュータの略で、個人が使うコンピュータ。んで、コンピュータっていうのは・・・電子部品がいっぱい組み合わさった魔法の箱(←でしょ?(笑))
中身ぃ? あぁ、気にしないでいいよ。ビデオ操作するのにビデオの中身がどぉなってようが使えるよね?じゃぁ、パソコンも使えるって(笑)


 :
ぜぇぜぇ、
 :

やっとパソコンっとコンピュータの説明が終わったらソフトウェア自体の説明です。ソフトウェアという言葉は、ハードウェアの対義語で、ハードウェアが物理的に存在する器を意味します。

ですので、ソフトウェアは物理的に存在しないもの? あれれ?

・・・なんて説明をしはじめると、几帳面な方は、自分の中で言語学的矛盾に耐え切れなくなります。そぉならないためには、「例」で説明するのがいいかもしれません。文書作成や、家計簿や、ゲームなんかができてぇ、コンパクトディスクとかに入っているもの。


さぁ、ごまかしきれたでしょうか?(笑)
それでは、まとめてみましょう。プログラマとは...
「電子部品がいっぱい組み合わさった魔法の箱の中で動く、文書作成や家計簿やゲームなんかができて、コンパクトディスクとかに入っているものを作る人」


 :
なんか素敵な職業だと思いませんか、「プログラマ」って?(笑)

プログラマの紹介: はじめましてのプログラマ

初対面の人と職業について話しをするのは、苦手だけど、少し楽しい ひとときだったりする。
  「お仕事は何を?」
  『コンピュータ関係の仕事です。』
  「あぁ・・・コンピュータのどのような?」
  『プログラマをやっています。』

コンピュータ関係といっただけで、尊敬のような敬遠のような態度がチラッと表れる人もいるが、プログラマというとさらに ”んん?”といった顔になるのが面白い。

高齢の方は、このあたりで次の話題に移るので楽だが ”コンピュータが生まれたときからある”10代、20代といった世代の場合は、質問がエスカレートしてくる。
  「Windowsですか?それとも UNIX? いや、MACかな?」
  『メインはWindows です。以前はUNIXも少々。』
  「何か私の知っているソフトとか作ってたりして・・・」
  『いやぁ~、市販のパッケージソフトは作ってませんよ。
   企業向けのオーダーメードソフトなんかですかねぇ。』
  「やっぱ、VBとか使うんですかぁ?」
  『えぇ、VBとVC++を使ってますよ』

5分くらい、尋問のような面接のようなGeek(←註:ギリシャ語のような不明なという意味です。)な会話が続くと相手も、やっと追及の手を緩めてくれる。そして最後の一言が、やってくる。
  「パソコンで何かわからない事があったら聞いてもいいですか?」

コンピュータ関係、プログラマっと聞くと、パソコンに詳しいので助けてくれると思われているらしい・・・。

これが40代、50代といった”コンピュータは後からやってきた”管理職の世代だと、また一味違った方向に進む。
  「自宅にパソコンを買ったんだけど電子メールの設定が・・・」
とか
  「2台のパソコンで、1つの回線を使ってインターネットを・・・」
といった具体的な悩みを相談されてしまう。

確かに何年もプログラマをやっていれば、コンピュータに疎い人たちよりは詳しいだろうとは思うけど、人それぞれに守備範囲というものがあって、その範囲を超えると回答はあいまいになっていく・・・。
  『標準で入ってる電子メールソフトを使えばメールできますよ』
  『プロキシという製品を探してみたらどぉですか?』

当たり前と言えば当たり前の回答に、30%程度の人はあきれてくれる。70%程度の良識を持った人は、”こいつじゃだめだ”なのか、”ただでは誰も教えてくれない”なのかは不明だが質問を終わりにしてくれる。

いちばんやっかいなのが、コンピュータ関係の仕事をしている人と職業の話しをする時だったりする。コンピュータ関係でプログラマまでは他の人の時と同じだけど、その次がバリエーションに富んでいる。会社の話しや、コンピュータ系の資格の話しや、転職の話しや、コンピュータ業界の未来といった大きな話しなどである。
私の場合は、それぞれのバリエーションに対して、話の抽斗(ひきだし)をたくさん準備しているので、それを話せばなんとかなっているようだ。


最後に・・・

一番楽しいのは、やはりプログラマ同士の”はじめまして”だと思う。 はじめが肝心っと闘いを挑んでくる人もいて、とても刺激的な会話が楽しめる(笑) この会話の特徴は、自分の勝てる領域では「饒舌」になり、勝てない領域や不明確な領域では「会話をはぐらかそう」とするところだ。
たいていのプログラマはそぉするし、私もその例外ではない(笑)

プログラマの紹介: 誤解されがちなプログラマ

以前プログラマの技術支援をやっていた時に、コンピュータ雑誌の取材を受けたことがある。
  「プログラマは、やっぱりコーヒー好きですか?」
  「夜型なので、朝遅く、ずるずるとなったりしますか?」
といった質問があり、返答に困った。

私自身コーヒーは好きだが、プログラマ全員が好きかと聞かれても統計をとらないとわからない。ミネラルウォーター好きもいれば、ハーヴティー好きもいるし、ここ一番の時だけ、苦いコーヒーを飲む人もいる。つまり、プログラマだからといって、プログラマ以外の人とそれほど違いはないのである。

夜型についても同じだ。延々と日々続く残業をしているのは、企業システムを開発しているプログラマや、SE、新聞や雑誌を編集している人など様々だが、その中の一人一人が夜型かといえばその人次第だと思う。別プロジェクトや別会社に移ったら朝型で続かなかったという話しはあまり聞かない。

(そぉ思っているのは本人だけかもしれないが)私は夜型でも朝型でも大丈夫だが、仕事が終わった深夜に、警察官に職務質問されるような日々はコリゴリなので、朝型を目指している。

プログラマ向け書籍の企画打合せで、編集の担当者からこんな意見を聞いたことがある。
  「プログラマ向けなのでレベルが高く、色んな事について専門的に
  書いた方が・・・」

これも誤解である。すべてのプログラマが技術レベルが高いわけじゃないし、色んな事に精通もしていない。どちらかといえば、山にこもって仕事をしている状態の方が多いので、アンテナを張り巡らせている人か、身近にそんな人がいる人でなければ、技術領域は狭くなっている人の方が多い。

また、初級・中級・上級にかかわらず、自分の専門領域以外には見向きもしない(見ている暇が無い)人も多い。必要なときに必要なものだけ探すといった感じか・・・。


こんな誤解もある。
  「プログラマなら、ゲームとか携帯電話とか新製品が好きでしょ?」

確かに、私の周りにはゲーム好きも、携帯電話新機種マニア(?)もいる。それはプログラマであるなしにかかわらずだと思う。私はゲームは疲れる(←爺クサ(笑))ので、やらない事にしている。また、ゲームにのめり込むのが怖いというのも、やらない理由だ。

携帯電話にも詳しくはない。新しい機種の機能や軽さよりも、料金やエリアにしか興味がない。(でも、写メールは使ってる(笑))
PDAやParmTop、WindowsCEなどの端末は存在は認知しているが、移動中にまで仕事をしたくないので、持ちたくもない。(みんな、そんなに忙しいのが好きなの?本読もうよ!)


結論として言えるのは・・・
  「プログラマって結構普通な人たち」

# 私の自覚症状が無いせいかもしれませんが (^-^;

プログラマの種類: 転職におけるプログラマ

ちまたにあふれている転職雑誌やインターネット上の求人サイトでもわかるように、コンピュータ関係の求人は多い。コンピュータ関係の仕事をしている人の転職も他の業種に比べると多い方だと思う。

私も数回の転職経験があり、正社員・派遣社員・個人事業主を経験してきた。いまだに求人サイトからのメールマガジンは(解除を忘れていて)購読している。そんな求人情報を見ていて、いつも思う事は・・・
「いくつの職種があるか?」

「同じ職種名が同じ仕事内容なのか?」
である。

コンピュータ関係では、SE(システムエンジニア)とプログラマが圧倒的に多く、サポートエンジニア、ネットワークエンジニア、ネットワーク管理者、技術営業、アナリスト、コンサルタント、データベースエンジニア、トレーナー、フィールドエンジニアなど、いろいろな職種名がある。
だが、それぞれの職種を厳密に定義したものには、いまだにお目にかかったことがない・・・私の単なる勉強不足だといいのだが。

そこで私見をまじえた分類と、実状を以下にまとめてみました。

分類= 営業企画,顧客担当

職種名= アナリスト,実状= 分析だけ?
職種名= コンサルタント,実状= 提案だけ?
職種名= 技術営業,実状= 技術もわかる営業さん?
職種名= SE,実状= 営業メインのまとめ役

分類= 開発構築

職種名= SE,実状= 設計開発メインのまとめ役
職種名= プログラマ,実状= 製造開発オンリー
職種名= データベースエンジニア,実状= データベースプログラマ
職種名= ネットワークエンジニア,実状= ネットワークプログラマ

分類= システム管理

職種名= システム管理者,実状= 企業システム全般の管理者
職種名= データベースエンジニア,実状= データベース管理者
職種名= ネットワークエンジニア,実状= ネットワーク管理者

分類= サポート保守

職種名= サポートエンジニア,実状= 顧客TELサポート等
職種名= ネットワークエンジニア,実状= ネットワーク保守
職種名= フィールドエンジニア,実状= システム全般保守

分類= 教育

職種名= トレーナー,実状= 専門的教育コースの先生
職種名= インストラクタ,実状= 一般向けコースの先生

一覧をみていただければ解るように、複数の分類に同一名の職種が存在 している。エンジニアといった曖昧な言葉を職種名に持っているのがそもそもの誤解の始まりなのかもしれない。

怪しげな職種は、ネットワークエンジニア、SE(システムエンジニア)、そしてコンサルタントである。いずれの職種も、単語と単語の間か先頭に意味を持つ単語を補えば分割できる職種であるが、それを省略しているために、怪しげになっている。
例えば、ネットワーク設計エンジニアとネットワークサポートエンジニアならば、職種と仕事内容のミスマッチ・勘違いも減るだろう。(勘違いを期待して求人している企業も少なからずあるのだろうが・・・) システムエンジニアの場合も、システム設計エンジニアとシステム営業エンジニア、あるいはシステム統合エンジニアとした方がミスマッチもなくなる。

さて、怪しげな職種の話しはこの辺りで終わりにし、本論のプログラマの話しに移りたい。転職雑誌や求人サイトで見かけるプログラマは、「初級プログラマ」を意味する企業が多い。求人企業のプログラマについての年齢制限や未経験可などの条件を見ればあきらかだ。

では、中級・上級プログラマは、どこに分類されているのだろうか?
そもそも、日本企業では、プログラマ→SE→管理職という図式が古くからあり、プログラマには初級と中級しか(考え的に)ないのが一般的である。(最近では、管理職の替わりに技師長のようなポストも準備はされているが)
上級プログラマは、SEや管理職を兼務しているか、アナリストやコンサルタントに職種替えするか、データベースかネットワークに特化するかのいずれかになってしまうのが実状ではないだろうか。

なぜそぉなってしまうのか? 年功序列から抜け切れない日本企業では年齢が高くなるにつれて給与が高くなる。つまり単位時間あたりの生産性が高い仕事をしなければ、会社として採算があわなくなるためである。

プログラマ一筋でいくには、そんな日本企業を離れて外資企業を選ぶか、フリーランスとなるか、会社を設立してしまうかしかないのである。

普段の会話の中で、自分の事を「私はプログラマです」というのはその人の自由だが、転職の面接などの場においては「開発者」か「デベロッパー」といった方がいい。プログラマを、SEと比較して「低級な仕事をしている人」と勘違いしている人や、「プログラムしかできない人」と思っている人は案外多いことに気づくべきだ・・・。

プログラマの種類: プログラマの分類

身近にプログラマがいない人に限って、「私はプログラマです」っとなぜか自慢げな人もいるが、世の中、上には上がいるので足元をすくわれないように注意した方がいいでしょう。

今回は、プログラマの分類について考察してみたいと思います。

まず、職業としてプログラマをしているか、趣味としてるかがあります。一般的にプログラマといえば、職業でプログラミングをおこなっている人をさす場合が多いと思います。職業=プロ、趣味=アマ なのかとえいば、そぉでもなく、趣味の一部で高度なシェアウェア・フリーソフトをつくっているプログラマもいたりします。

趣味でプログラマをしている人を「サンデープログラマ」と呼ぶ人もいますが職業プログラマをなんらかの理由で引退して、純粋な趣味としておこなっている場合もあって、彼らのスキルが職業プログラマと比較して低いわけではありません。

べつの分類としては、使用しているOS(オペレーティングシステム)による分類もあります。Windowsプログラマ、UNIXプログラマ、MACプログラマなど様々で、重複したOSを領域とするプログラマもいたりなんかします。

さらにプログラミング言語や開発環境による分類もあります。VisualBasicプログラマ、C++プログラマ、Javaプログラマ、Web系プログラマなどで、この分類でも、複数の言語や環境で開発できるプログラマがいるので、メインの(または、好きな)言語や環境で分類しないと、重複だらけになってしまいます。

さて、ここ数年メジャーになった「ハッカー」「クラッカー」はどのような人たちか、ご存知でしょうか?
ハッカー・クラッカーは、ともにプログラマである場合もあります。「・・・である場合」と表現したのは、プログラムを組めるハッカー・クラッカーとそぉでないハッカー・クラッカーがいるからです。

ハッカーは、特定のコンピュータシステムやオペレーティングシステムに詳しい人のことで、ある種、尊敬の意味もある呼称です。一方クラッカーは詳しいことは詳しいのですが、その詳しさやプログラミングができる技術を悪用し、システムを破壊したり、動作をおかしくしたりする悪者の呼称です。

・・・ですので、「ハッカーが侵入」は正しい表現ですが、「ハッカーがホームページを改ざん」というのは正しくありません。壊すのはクラッカーです。
技術的なレベルは同じでも、思想や社会的な良識の有無により、ハッカーとクラッカーは使い分けが必要です。
ちなみに、日本では法律の改正があり、コンピュータシステムに侵入しただけでも犯罪になりますので、注意しましょう(?)

次にコンピュータウィルスですが、コンピュータウィルス自体もプログラムですので、ウィルスを作る人もプログラマです。
だからといって、全てのプログラマがウィルスを作れるかというとそぉではありません。仮に作れたとしても、作って蔓延させるかといえば、心の病に犯されていないかぎり、作らないでしょう。

新種のウィルスがでまわるたびに、面白半分にウィルスを捕獲して動作を確認するような人もいますが(^-^; そんな労力やウィルスを作る労力があるのならば、別の方向に向けて欲しいものです・・・。

結局、プログラマの分類をするぞ!といっておいてハッカーやウィルスの話しをしてしまったように思えますが (^-^;
ハッカーやプログラマといった用語を注意深く使い分けて欲しいなぁ~ っという願いが込められています。よくわからない分野だからといって全てを一緒にして「悪」と決め付けた報道などは、善良な職業プログラマを傷つけますので・・・。

プログラマの種類: プログラマのプロとアマ

プロフェッショナル(プロ)とアマチュア(アマ)の違いはどこにあるのでしょうか?

お金を稼いでいればプロ? 稼いでなければアマ? この定義だと、職業プログラマやシェアウェア作家はプロ、フリーソフト作家はアマとなってしまいます。また、職業プログラマがすべてプロであるか疑問が残ります。

プログラマのプロ・アマを見分ける、私の個人的な意見としては・・・まず、「プログラムを動かして見ること」から始まります。画面が派手で統一感がなく、操作方法が解りにくい場合は、アマです(断言(笑)) 逆にシックな画面で、他の市販プログラムと同じような操作性で、使用する人にとって便利な機能や説明が施されていればプロです。シックな画面は、長時間プログラムを動作させるであろう使用者の視力までも操作性の一部として考慮されているからです。また、日本語環境で動作するプログラムの場合、画面上で左上から右下に向けた操作の流れとなっていれば、かなり操作性を考えてくれているといえるでしょう。

次に「プログラムソースを見ること」で、プロ・アマの違いがはっきりとわかります。プログラム全体の流れ、適切なエラー処理、適切かつ適量なコメント、アルゴリズムの合理性、データ構造のわかりやすさ、メンテナンスの容易性などなど、プロの作ったプログラムは、そのプログラムが他者によってもメンテナンスが可能で、長い寿命を持つであろうことがわかります。一方アマの作品は、「動けばいい」「とりあえず」といった感じがします。それもある意味正しい場合もあるのですが (^-^;

プログラマの特徴: プログラマが使う言葉

ご存知のように、コンピュータは欧米を中心として発達したもので、我が日本は、いまだに「後追い状態」だといえます。そのため、コンピュータ関連の文献や技術資料の多くは英語で記載されたものが多く、英語に弱いプログラマを悩ましています。

コンピュータ英語は、一般の方が使用している英語に比べ、新しい単語も多く、産業翻訳者のレベルもまちまちであるため、同一の英単語が別々の日本語になっていたり、日本語に訳しきれていない単語や、ただカタカナにしたものなどであふれています。

そのような状況で、プログラマ同士やコンピュータ業界人同士の会話や電子メールでのやりとりは、カタカナやアルファベットが混じったGeekなものです。

アルゴリズム、アーキテクチャなど、英単語の発音をそのままカタカナにした言葉はそれでもコンピュータ業界以外の方でもわかるとは思いますが、それをさらに短縮した シスアド、ネスケなどの言葉も日常的に使用されます。日本人は特に長い単語を省略するのが好きなようで、3文字か4文字程度のキャッチーな単語が定着しやすいみたいです。

それはそぉと、「アルゴリズム」の日本語訳は何なのでしょうか?

私は後輩などに聞かれた場合には、
「南米アルゴ地方に伝わる独特のリズム」
あるいは
「カニバリズムの親戚」
と答えたりしていますが・・・。

また、某コンピュータソフトメーカーなどが数ヶ月に一度の頻度で世の中にばらまく3文字アルファベット略語は、多くのプログラマの記憶力を無駄に消費させています。ASP、SOAP、VBAなど、何の略かを正確につづれる方はそぉ多くはないのではないでしょうか?

さらにプログラマの場合、スラングが大好きな方も多いので、「www」をスリーダブル、ダブルダブルダブル、わわわ などと好き勝手に読み、相手に理解を強制したりします(笑) そもそも、どの呼び名が正しいのかもわからないものが多すぎます。チルダとか、ハイフンとか、オルトなんて普通に生活していて出てくる単語ではないですしね。

スラングと言えば・・・コンピュータの電源を入れる事を「あげる」、電源を切るあるいはシャットダウンする事を「落とす」といったりします。机の上に置かれたパソコンをシャットダウンする時は注意が必要です。

ハッカーを目指している人たちや、アンダーグランドを住処にしている人たちも独特のスラングを持っています。有名なのは、プロキシサーバーを串と呼んだり、中学生レベルの行いを厨房と呼んだり・・・スラングというより、駄洒落か誤変換みたいな感じですかね。少し前のパソコン通信時代の方々は、電話代の事をミカカ代と呼んだり某国産パソコンメーカーをミイソと呼んだりしていました。これは、キーボードのアルファベットに対応するカタカナ文字という単純な暗号化。 Linuxなんぞをやられている方々の間では、初心者の事(?)をタコというそぉで・・・自分の事をタコと言う人もいるぐらいなので、タコと呼ばれても軽く聞き流す大人の対応が必要だったりします。

プログラマの言葉・・・そんなに本人たちは難しいとか思っていないのですがご理解いただけましたでしょうか?

プログラマの特徴: プログラマの美学

プログラマは、(まともな説明をするのであれば)コンピュータプログラムをテキストエディタや開発ツールを駆使して作成し、コンピュータの理解できる実行形式ファイルに変換し、動作させる人です。

極端なことを言えば、動作さえすれば元々のテキストエディタで作成したファイル(ソースファイル)が、ひっちゃかめっちゃかでもいいのですが長い年月と経験を積み重ねたプログラマほど、プログラムに対する美学をもっていたりします。

この美学は、ソースファイルの縦横の配置だとか、個々のプログラム断片の量が均一だとか、同じ機能をいかに少ないプログラムソース行で実現するかなど・・・ひとそれぞれのこだわりがあります。

そして、それらの美学を理解しあえるプログラマ同士では、ある種の仲間意識が芽生えますが・・・美学を理解できないプログラマに対しては長々とお説教が繰り広げられます。そしてその美学を理解しないプログラマは認められなかったり、経験の少なさをあざ笑われたりっと悲惨な目にあう可能性もあります。(本当かよ?(笑))

全てのプログラマがそのようなマニアックな美学の持ち主かといえばそぉでもなく、美学の度合いも人それぞれといった感じです。

人の作ったプログラムが理解しにくくっていやだった事や、標準的なプログラムの書き方・お作法を考えた事のある人や、同じ課題を作っても周りの人とプログラムが違うことに気づいた人は、美学に目覚める可能性大です。(別に病気ではないので、目覚めてもいいのですが)

プログラマにとって、「プログラム」とは作りっぱなしの1回っきりのものではなく、何回もバージョンアップしたり、数年後にバージョンアップしたりっと、長く使用することを前提とした作品なので、せめて多少の丁寧さは持ち合わせて欲しいものです。

プログラマの特徴: プログラマのプロ意識

プロ意識を持っているか、持っていないかは、プログラマに限らず一緒に仕事をするうえで、重要だと思います。

ところで「プロ意識」って何でしょう?(笑)

一つ一つは単純なことで、その積み重ねだと思います。

「約束を守るかどぉか」期限を守ってくれないっと、その人の仕事が終わらないだけでなく周りの人にも迷惑をかけてしまいます。

「まともなものを作るか」その人ができたと思っても、できの悪いものというのは多々ありますが、時間に追われていい加減なものを作る人は周りからみて迷惑です。

「できない場合に正直に申告するか」どんなにがんばってもできない時や場合はあると思いますがそんな時に、正直に申告しないと事態はさらに悪化します。

「不明な箇所をそのままにしていないか」わからないことを自分勝手に解釈し、仕様を変えてしまったり不明なまま放置・忘却すると、最終的に自分に跳ね返ってきます。

他にもいろいろっとあるでしょうが、信用とか信頼ですかね。

「信用を作るのは時間がかかるが、壊すのは一瞬」

それを肝に銘じ、それぞれのプロ意識を高めていって欲しいものです。

プログラマの特徴: プログラマの擬人化

プログラマに限らず、コンピュータ業界のひとに多いのが、無機物であるコンピュータなどに名前をつける人たちだ。

「マイケル君、今日は ご機嫌斜めなの?」 と問いかける目の先に、コンピュータがある光景を眺めるのにも慣れてしまうくらい一般化している(?)

元来、無機物なので調子の良い悪いがあるはずもないのだが人間のように雨の日は動作が鈍かったり、黙りっぱなしになったりするので、人格化・擬人化する気持ちもわからないではないが・・・。

せめて・・・他の業界の人たちの前では、やめておいた方がいいかもっと思ってしまうのは、私だけだろうか???

プログラマの特徴: プログラマの用語

「バグ(BUG)」という言葉がある。

プログラマ以外の方は、意味もわからず使っている人もいるがプログラマを自称する人でも、正確な意味を意識していない人もいる。

コンピュータシステムが真空管を使っていた大昔に、コンピュータルームに入り込んだ虫(BUG)が原因でシステムが停止したのことが、「バグ」の語源である。そこから、プログラムに入り込んだ、プログラマが意図していないミスのことを、バグと呼ぶようになった。プログラマが書き上げたプログラムを検査する「デバッグ」という作業は、バグを除去するという意味だ。

この定義でいくと、プログラマが意図したミスか、意図していないミスかが問題となる。意図したミスというのは、とてもおかしな表現であるが、こちらはバグではなく「設計ミス」あるいは「仕様」と呼ばれる。仕様がおかしいためにプログラムが期待通りに動作しなければ、「バグを修正」するのではなく、「仕様変更・修正」することになる。

設計ミス、仕様については、プログラマにも責任があることはあるが、会社上部あるいはチーム、コミュニティ全体の責任による部分である。某コンピュータソフトメーカーは、(傍目から見たら)明らかなバグを、仕様という言葉で強引にねじ伏せる・・・それって開き直りか?

バグには色々な種類がある。時限爆弾のように、ある年月日になるとシステムが異常となるものや、コンピュータの資源(CPU時間、メモリ、ハードディスク容量)を徐々に食いつぶすものや、自己増殖を繰り返すものなと様々だ。これらの例をみると、コンピュータウィルスのようでもあり、ぞっとする。

バグの数には、数学的な理論がある。あるプログラムに1つバグがあったとすると、それ以外に後2つはバグが潜在している可能性が高い。つまり、数回デバッグを繰り返すと、バグの数は級数的に増加し、それらすべてを除去することは不可能に近くなる。

また、バグの数とプログラムの規模は正の相関があり、プログラム規模が増大するとバグの比率は徐々に高まる。これらの理論から、言えることは・・・
「良質のものをコンパクトに作りなさい」ということである。

プログラマの特徴: プログラマの理論

コンピュータ業界に入ってすぐの頃、プログラマの先輩に教えていただいた、ありがたいお言葉を紹介したい・・・

  「論よりRUN」

論より証拠のもじりなのではあるが、意味としては能書きをあれこれと考えているよりは、RUNつまりプログラムを実行してみれば、動くかどぉかはすぐわかるという、とても的を得た言葉だ。

ある会社の面接で、突然プログラミングのテストを受けた。言い訳するのは嫌なのだが・・・久しぶりのUNIX環境で久しぶりのC言語だったのと、風邪で38度ほど熱があったので1時間の制限時間内では、80%くらいしか完成しなかった。

そのテスト後に、面接の担当者に聞かれた。
  「自分で、今回のプログラムを採点すると何点ですか?」
  『0点です。』
  「えっ!? なぜ?」
  『プログラムは動かなければ、いくら美しくプログラム
   されていても意味がありません。動いた上で、正常/異常の
   判断や、ユーザーの操作性、プログラム構造などで点が
   プラスされるだけです。』
  「はぁ~、厳しいんですね。」
  『えぇ、プロですから・・・動きませんでしたが (^-^; 』

理論を語って、決めるとこは決めて・・・そして落とす。エンタテイメント(というよりは「笑い」?)の基本です。

プログラマの能力: プログラマと学歴

学歴の高低っと、プログラマの能力は比例するのでしょうか?

私の知っているスキルの高いプログラマには、高校卒や専門学校卒の方が多くいます。私が以前勤めていた会社では、高専卒と学部卒、大学院卒がいましたが・・・年齢差のせいか、あるいは私の偏見かもしれませんが頭の固そぉな大学院卒と、若さと吸収力(?)を持った高専卒と学部卒という感じがしました。

私のなかの結論としては、プログラマの能力と学歴は無関係だと思っています。また、日本企業の多くは、高学歴=高収入であるため能力と賃金では逆転がおきている場合もあるように思えます。それが、コンピュータ業界での転職の促進や、学歴社会の崩壊へと繋がっているのであれば、いいことなのかもしれませんがね (^-^;

プログラマの能力: プログラマのあせり

何年か前に、「プログラマ35歳定年説」というのが話題になった。この説は、日本では有名かもしれませんが、どのような根拠があるのか、いまひとつはっきりしません。しかし、35歳を目前にした、職業プログラマの多くを不安にさせているのは事実のようです。

# 私は、その歳を超えたので引退を・・・(こらこら)

この説では、日本企業(社会?)におけるプログラマの報酬の限界と個人的な能力や記憶力、新しい環境への適応力などが35歳前後で衰える(らしい)という点を力説しているようです。

実際の話しぃ~、報酬については頭打ちになるのは事実だと思われますが、個人の能力?限界?については、疑問視する声もあります。そもそも、脳みその構造すら完全に把握していない人類が、能力の限界がわかるのかな?

40代、50代でも現役のプログラマもいますし、第一線で活躍もされています。某コンピュータ雑誌でも、50代後半のプログラマ集団を特集していたりするくらいなので、年齢だけで限界とかを決めてしまうのは、あまりにも乱暴なのでは? っと思ったりしちゃいます。

私の場合・・・「いつかそんな日が来るのかいな?」っと思ってはみたりもしますが、「それで?仕事なくなるの?」っという感じで、ちょっと 他人事モード(笑) だったりします。これからの少子高齢化社会で、35歳で引退させてたら、人手不足になっちゃいますしね。

プログラマの能力: プログラマのスキル差

プログラマって、かなりスキル差・個人差が激しい職業だなぁって思います。適性もあるのかもしれませんが、スキル差を数値化すると5倍~10倍以上もあるように思えます。

プログラマとしてのキャリアが長ければ、スキルが高いかといえばそぉでもなく・・・キャリアが多少短くて、スキルの高い人もたくさんいる世界です。

キャリアの長さ・短さを考える場合は・・・どれだけプログラムを開発したかという量ではなく、どのようなトラブルに遭遇してどのように解決したとか、次のトラブルをどのように防いだとか・・・そんな部分ではキャリアの長さが、ものをいうのかな?って思います。

また、ある領域や環境での専門家と呼ばれるような人は、別の環境に移った場合にも、ある程度の応用をきかせられればこの世界で長生きできているみたいです。特定の領域や環境に固執することは、悪いことではありませんが、移り変わりの激しい世界なので、取り残されてしまう危険があります。

さて、話しはガラリっと変わってしまいますが、コンピュータシステム開発の世界では、「人月見積り」というのが一般的におこなわれています。聞きなれない方に説明しますと・・・1人の人が1月間働くと「1人月」です・・・システムの規模が10人月の場合、10人が1月間でもできますし、1人が10月間でもできるっという単純な掛け算だと思ってください。

実際には、人のランク(係数)があって、ランクごとの集計か、平均ランクでの人月で全体量を表したりします。それでぇ、ランクごとに金額があって、システム規模でシステム見積価格を出すためのものです。

前述のとおりスキル差の激しい世界で、この「人月見積り」が果たして適切な見積り方法であるかは、幾度も議論がなされているようですが・・・システムの規模自体の算定がおろそかなので(笑) かわりになる見積り方法が無い為に、使われ続けているのかな? って思います。

かわりになる候補としては、ファンクションポイント(画面や帳票などシステム構成要素ごとに、経験値を元に算出する方法) などがあったといえばあったのですが・・・それって、やっぱり 山勘?(笑)

人月見積りは、プログラマや設計者を、機械かなにかと勘違いしているところにも問題があります。1人月や1人日、コンスタントにプログラムやドキュメントがアウトプットできるかいなぁ~ってね。特にスキルの高い人ほど、Peeky(やる/やらないや、のる/のらないでムラのある)だったりしますしね (^-^;

・・・ということで、かなりスキル差がある世界だけどスキル差が報酬に結びついているかといわれると、そぉでもないみたい。それが、転職の多い業界となっている原因の1つかも。

プログラマの能力: プログラマと仕事の集中

プログラマに限らず、スキル差の激しい業界では、当然スキルの高い人に仕事が集中する。

火のついたシステムを転々と渡り歩くプロフェッショナルは仲間からみれば心強いのですが、本人や本人の家族にしてみれば大変なようです。

そんなスキルの高い彼らが、スキルの低い人たちを養っているようにも思えたりしますが、それでも不平不満を口にせずがんばっている人も多く・・・私的には、感心しています。私の場合は、損得を勘定してしまう機能が備わっていますし(笑) 自己防御機能もありますので、仕事が集中化する前に・・・逃げます。

プログラマはどちらかと言えば、「職人芸」のようでもあるので仕事が集中したとしても、それを乗り越えさえすれば、優越感に浸れますが・・・無理しないでくださいね > 企業戦士の方々

プログラマの適正

どんな職業でも、その職業をやりたいと思う人が、その職業に最も適していると思います。
また、日本では職業選択の自由が保障されている・・・はずです。(実際には、年齢制限や性別の制限もあるのでしょうが・・・)

まぁまぁ、一般的なことはさておき、プログラマについてはどぉでしょうか?どんな人がプログラマにむいているのでしょうか?

ご存知のようにコンピュータ業界は、その他の業界と異なり、出来上がった世界ではなく、成長(衰退?)を繰り返しているので、
「新しい環境や人への適応能力」は必要とされます。
また、100%すべての事柄が整っているということは少ないので、70%でもいいので残りの「曖昧さを受け入れる能力」も必要です。
あとは・・・時間が長くなる傾向があるので「体力」に自信があるか、適度に休みを入れれば回復できる身体が必要かもしれません。
・・・外部的な要件としては、こんなものでしょうか?

プログラマとしてのコアな部分では・・・
「気が短くて、おっちょこちょいでも大丈夫」です。私がそぉなので。(笑)

「あきらめが悪い」っと、身体を壊すことになるのでほどほどに。

それっと、いろいろなアンテナを張って情報収集が必要な世界ですので「好奇心旺盛」な方がいいかもしれません。

そんなとこですかね。「それって普通じゃん?」という意見もあるでしょうが・・・
普通ですって プログラマは。

最後に・・・
自分がプログラマに むいているかでお悩みの方に一言。
「適性は・・・後からついてくるものです。」(断言(笑))



風水吉凶方位 風水吉凶方位 |  奇門遁甲 奇門遁甲 |  金運神社 金運神社 |  仏像 仏像 |  論語 論語 |  般若心経 般若心経 |  二十四節気 二十四節気 |  菜根譚 菜根譚 |  SharePoint活用 SharePoint |  OneNote活用 OneNote |  ICT活用 ICT