プログラマ、テスター、SE、PMなど、いろいろやってるオヤジです。

プログラマーとアマグラマーの違いとは? -楽しみたいならプロにはなるな!

»

プログラミングとアマグラミングはどこが違うの?

 プロが行うプログラミングとアマチュアのプログラミング(以後、アマグラミング)はどこが違うと思いますか?

 例えば簡単な自動販売機のプログラムを作る例を考えてみます。全部130円のジュースで千円札が使える自販機だとするとこんな感じの処理を思いつくのではないでしょうか。

  • 入れられたお金が130円以上になったらジュースのボタンを点灯する
  • ジュースのボタンが押されたら、そのジュースを1つ出してお釣りの処理に進む
  • お釣りの処理では、(入れたお金)ー 130 円をお釣りとして出す
  • ジュースのボタンを押す前にキャンセルボタンが押されたら、入れたお金をそのまま返す
  • ジュースの在庫がなくなったら、「売り切れ」の表示を出してそのジュースのボタンを無効にする
  • 自販機内の小銭の合計が870円未満になったら「釣銭切れ」の表示を出して千円札を受け付けないようにする

でもこれだけでは不十分です。レアケースですがお客を怒らせてしまうこともあり得ます。わかりますか?

レアケースも考慮するのが "プロ" グラミング

 プロが作るプログラムは、レアケースも含めてあらゆるケースを考慮します。そしてそれを確認するために、テスト工程に多大な時間を費用をかけています。これがプログラミングとアマグラミングの大きな違いだと私は思っています。

 アマグラミングではレアケースまで考えることは少ないのではないでしょうか。ましてやレアケース用のテストなんかしないでしょう。それはなぜか? 楽しくないからです。起こる可能性が低いことに労力を使いたいとは思わないからです。モノづくりは作り上げるときが楽しいのであって、レアケースの異常まで考えて対応することは楽しくもありません。

 プロのプログラミングだと、高い品質を要求されるプログラムであればあるほど、レアケースを考慮し、テスト工程に時間とお金をかけます。そして不具合が起こらないようにコーディング規約などが細かく決められます。それが行き過ぎると「こんなテスト本当に必要なんだろうか?」「この規約って意味がないんじゃないの?」と思うようになってしまいます。こうなってくるともはやプログラミングは楽しいものではなくなってしまいます。

楽しみたいならプロにはなるな!

 プロのスポーツ選手の場合、好きで始めたスポーツなのに、プロになると勝つことが仕事になるのでときには姑息な手も使わなくてはいけなくなります。体を壊してまで戦わなくてはいけなかったりします。好きだったはずのそのスポーツが辛いものに思えることがあります。ですから、スポーツを楽しみたいならプロ選手にならないほうがいい。趣味で続けるほうが楽しめる。という人もいます。

 プログラマーもスポーツ選手と似たところがあります。プログラミングを楽しみたいのなら、プロのプログラマーにならずに趣味のアマグラマーでいたほうがいいかもしれません。

 近くにプログラマーになりたいという人がいましたら、プログラミングとアマグラミングの違いを説明してあげるといいのではないでしょうか。そしてそれでもプログラマーになりたいという覚悟を持った人だけにプロの世界に入って来てほしいものです。そんなことを言っていると誰も来ないかもしれませんが。

 あべっかんでした。

 ※自販機の不具合の事例はこちらに書いてあります。

Comment(5)

コメント

仲澤@失業者

趣味の中でお金がもらえなかったのは歌と楽器演奏くらいでした。
自分は楽しくないことは仕事にしないというつまらない信念を貫いてしまったのでした。
思い起こせばプログラマになったのも、金を払うから作ってほしいと言われたからでした。

ところで、海外では子供でも知っている話なのですが、日本ではなぜかあまりメジャーでない問いに
「象を冷蔵庫に入れる方法」を考えろというのがあります。

 (1)冷蔵庫の扉をあける。
 (2)象を入れる。
 (3)扉を閉める。

というのが答えで、物事はシンプルに考えようという教訓なのですが、
プログラマの新人君にこれ問うと、大抵巨大な冷蔵庫を設計しようとします。
「次にキリンを冷蔵庫に入れる方法」を問うのですが、
多くの新人君は冷蔵庫から象を出すの忘れます(笑)。

自販機は、客が希望した商品の価値を支払うならその商品を提供するだけのシンプルなオブジェクトです。
ただ、それぞれの語句のそもそも論を考えるのが楽しいのであって、
もしそう思わないのならプログラマ向きではないかも知れませんね。

abekkan

>仲澤さん

>趣味の中でお金がもらえなかったのは歌と楽器演奏くらいでした。
→これってすごいですね。ほとんどの趣味でお金を稼いでいるとは!

象の話は、屏風の虎を捕まえる一休さんのとんち話を思い出しました。

また、象と言えば、子どものころ「像が踏んでも壊れない」アーム筆入れを私は持っていました。でも、床に落としたら割れちゃいました!

user-key.

「多くの新人君」の考えた大きな冷蔵庫は、きっと、象もキリンも一緒に入れて大丈夫な位、大きな冷蔵庫だったんでしょう。
最近の倉庫(冷蔵機能付)はアホ程でかいし、よっぽど空腹でない限り、草食動物同士を入れてもいいんじゃない?って事で。

abekkan

>user-keyさん

>よっぼど空腹でない限り
→冷蔵庫に入れた時点で象もキリンも食用肉になっているのかと思っていたので、共食いは想定外でした!

元プロです

2年前にIT企業を停年退職して、プロからアマチュアに転向しました
今は趣味でプログラムを書いています

アマだからレアケースが甘いと言われては、いささか(==)です
今はアマだけれども、レアケースもしっかりと書いているつもりです

アマになって僕が一番実感したのは、納期にルーズになったことです
アイデアが出ると、無節操に仕様変更をします
天気がいいと遊びに出ます
プロだった時は眠くても仕事をしましたが、今は眠いと寝ます

だからいつまでたっても完成できないです

コメントを投稿する