プロプログラマとアマプログラマの境界とかquneプロプログラマとアマプログラマの境界とか2010/11/30まぁよく言われることだけれども,プロのプログラマとアマチュアのプログラマには一定の線引きができると思うんですね。先日,プロになりきれない趣味プログラマ氏が,相変わらずどうしようもないから注意したのでした。このままじゃクビになっちゃうよ?と。実装技術について,プロとアマの区別はあまりないと思います。現場で使われているプログラムは,要件的にシビアな現場でもない限り「どんな人が読んでも分かりやすいプログラム」が最良とされています。んなもんで,真面目に1年も練習すれば誰でも書けるようになる。分かりやすいプログラムが最良なのは,プログラムに精通している「あなた様」が翌日死んでも,システムだけは生き残るようにしておくためです。ま,保守しやすくするってことですが。レガシーコードも一部では分かりやすいとされているみたい。ここら辺にあたしゃ一貫して反対しているんですけれど,ま,ここでは細かいとこまで踏み込みません。プロとアマとで大きく性質が分かれる境界だと思うのが,自分のプログラムに関係する人を想定して作っているか,ということ。営利企業でプログラムを作っている場合,究極的な関係者はお客さんになるわけですけれど,それだけではありません。プログラムを取りまとめる上司やそれを売る営業さん,自分のプログラムを利用する他のプログラマなどなど,自分のプログラムの周りにはたくさんの関係者が集まります。プログラミングができるのは当然として,プロであるためには,そうした人たちを想定してプログラムを作れる必要があります。これは自分のプログラムに対して自分で責任を取れるということでもある。あなたは,バグ含みのプログラムを出したとき,ひとりで関係者に謝って修正/改修の工数をもらう交渉ができるでしょうか。バグが出たら出たときに直せばいいんだろ?な態度になってないでしょうか(バグを直すのにもお金と時間がかかる)。「そもそも自分のせいじゃない」とかいった具合に責任を回避したりしていないでしょうか。自分のプログラムがどうしてそう作られているのか,他人に対して説明できるでしょうか。技術的な対応の可否(できる/できない)について,論理的に説明できるでしょうか。提示した工数がなぜそれだけかかるのかについて,納得できる説明ができるでしょうか。外部仕様について疑問が生じたときに,適切な質問を投げることができるでしょうか。お客さん(あるいは上司)が言った通りのモノを作れるでしょうか(余計な尾ひれをつけたり,実装が面倒な機能を省いたりしていないでしょうか)。仕様を人に聞くのが面倒だからといって,自分独自の仕様で勝手に作ったりしていないでしょうか。こゆことが,すべて当該エンジニアの信用に関わってくると思うわけです。アマならバグ含みのソフトも「それが仕様だ」とか言い張れるけれども(そのソフトが使われなくなるだけだけ),プロだと現実的な問題として会社が損失を被ることになるし,本人も最悪食い扶持がなくなります。信用を無くすのは一瞬だけれども,取り戻すのは大変......というのはよく聞く話。結局のところ,エンジニアのプロフェッショナリズムつのは,こうした地味なことを地道にかつ早くそして確実にこなせることに集約されると思うわけです。した責任を背景にすると,マーケターが喜びそうな新しくて派手目な技術(なんとか2.0とか)に対する洞察力も変わってくるはずです。「どうやってテスト/デバッグするのさ?」とか「保守するときはどうするのさ?」とかいった具合に,開発プロセス全体を通じた位置づけを当該技術に与えられるようになる。作り散らかしてちょっと動くのを見て,「や,できた。はいおk」とは決してならない。そもそもこゆのは,ソフトウェアエンジニアリングに限らず,モノを作る職業の大前提だと思うわけです。町の部品工場しかり駅前のパン屋しかりです。そこら辺の認識が甘いっつかなんつか......ま,愚痴ばっか言っても仕方ないんですけどね。そんなことがありましたよ,とゆ話でした。