プログラマーの深層心理?
どうも先週風邪をひいてから頭痛が続いている気がするので、柔らかい話題でも。。
まず、プログラマーという仕事は、狭義では「プログラムを書く人」だと思いますが、私の考えるプログラマーは、「プログラムを作ることで課題を解決できる人」と勝手に考えていますので、そういう定義での話しです。
要するに、私の考えるプログラマーは、それこそ企画から設計・コーディング・設置と全てに関わるような仕事です。そういう仕事をしているときの心理状態を少し書いてみようと思います。
たとえば、ちょうど今、あるインターネットエリアで、私が作ったプログラムがHTTPパケット全てを仲介しながらある処理をして動いています。プログラムに問題があれば、そのエリアのHTTP通信が止まってしまいますので当然大騒ぎになることでしょう。
あるいは、当社の商用DHCPサーバ製品であるProDHCPは私が作ったものですが、これも全国各地でIPアドレスを払い出し続けています。こちらも止まったり、重複払い出しが発生したりすれば、端末のネットワーク接続がうまくできなくなり、インターネットが使えなくなったり、社内システムが使えなくなったり、あるいはIP電話が使えなくなったりして大騒ぎになります。
もちろん、私一人だけで全ての仕事をしているわけではなく、パートナーさんの力添えもとても大きいのですが、最終的に処理をしているソースコードは全て私が書いたものです(極論すればOSやコンパイラは?となりますが)。
そんなプログラムを作って販売している状態で、どんなことを考えているのか、ということなのですが・・・
・不安
ソースコードを書きながら十分考え、テストも行ってきたつもりでも、いざ本番となると、やっぱり不安がないと言えば嘘になります。ちょうど自分で組み立てた椅子に座るときの感覚に似ている気がします。特に、初回の本番、あるいは、セットアップ直後の切り替え時などは何とも言えない気分を毎回味わいます。
・何か問題が出てしまったときのために・・・
もちろん私も人間ですので、失敗の経験はそれなりに(結構?)あります。問題が発生してしまったときには、
・原因切り分け
・修正
を、どれだけ素早くできるかがポイントです。インターネットでの障害は、テスト環境などで再現することが困難な場合が多いので、ログはとても重要です。原因切り分けができて、なおかつ、性能に影響が出ないようなログ出力を、プログラミング時にかなりの重要度で組み込んでおきます。原因さえわかれば修正は大抵すぐです。すぐに修正できないようなソースは書きません。
まあ、対処はこのように頑張れば良いのですが、実際に問題が出てしまうと、それはひどい精神状態に陥ります。個人の趣味ではないので、多くの関係者の強力・連携によりようやく稼働開始までたどり着いたのに、問題が発生してしまったために、利用者に迷惑をかけたことはもちろん、切り戻しになってしまったり、再稼働までの長い道のりをまたお願いしなければならなかったりする為です。
・開き直り
「やるだけのことはやった」と開き直る気持ちも大事だと思っています。極論すれば「今の時代、切腹しろとは言われないから」と考えるくらいで。。実は開き直りにも根拠が必要なもので、誰もできないような難しいものを作ったときには「できただけでもすごいのだ!」と開き直りやすいものです。簡単なものほどミスしたときには冷たい視線を浴びるものです。
・もっと良くしたい
実稼働を開始すると、様々なデータが見えてくるので、改善したいポイントもどんどん見えてきます。ところが、実稼働後はプログラムの入れ替えが困難な場合が多く、ジレンマに陥ります。
・プログラムを止めることができないので入れ換えられない
・それなりに動いているのに、入れ換えて問題が起きたら困る
一発ものはともかく、製品のようにどんどん提供していくプログラムの場合は、入れ換えてもらえなくてもガンガン改良していきます!
・自己満足
自分で作ったプログラムが、重要なところで使ってもらえているということは、少しくすぐったい言葉ですが「誇らしい気持ち」になります。特にプログラムは「目に見えないもの」なので、自慢することも、認めてもらうことも、意外と難しいのです。
・感謝
いくら自分で立派なプログラムを書いても、使う場がなければなんの役にも立ちません。ユーザはもちろん、多くの関係者の皆さんの存在のおかげで役に立てているわけです。特に、選んでくれた方、勧めてくれた方、見守ってくれた方には感謝の気持ちでいっぱいです。
まあ、「それがどうした?」と思うかもしれませんが、プログラマーはこんなことを考えているんだとわかれば、うまく仕事を頼めると思いますし、プログラマーもうまく使ってくれる人には、良い仕事を提供できるものです!