プログラミングというのは、実に愉快な生業である。
どういうこと?
僕は、どうにも気分屋の気質が強く、心が昂るときには、寝食を忘れ没頭し、逆に気分が乗らないときは石の如く動かない。そんな僕を支える相方は、いかなる時も冷静で、文句ひとつ言わず、ただ指示に従い、淡々と動いてくれねばならない存在である。つまり、コンピュータというものこそ、僕にとって至高の相方なのである。
変わり者・・・
さて、システム屋やweb屋というものは、いずれもプログラミングを生業にしている。そして、僕という男は、どちらかというとシステム屋気質が強いweb屋のようである。もちろん、web屋としてデザインもするし、ライティングも行う。だが、何よりもプログラミングを組み上げる作業が好きで好きで堪らない。
なぜプログラミングが好きなのか。その理由を語るならば、美しいプログラムこそが秩序そのものであるからである。
意味が分からない・・・
プログラミングとは、コンピュータを動かすための指令を並べる作業だ。指令の順番が正しければコンピュータは正しく動き、順序を間違えれば、誤作動を引き起こす。すなわち、プログラムというのは、書き手が考えた通りに動く一方、書き手が予期せぬことを突きつけられると途端に綻びを見せる。これがバグである。バグとは秩序の乱れであり、我々システム屋にとっては、恥じるべきミスなのである。
そそるぜ・・・
システムという狭い世界ではあるが、その動作ひとつ一つに意味を持たせ、コンピュータに秩序を守らせるのが、プログラミングなのだ。これほど、僕をそそる仕事はない。
世間ではプログラマーというと、オタクの類だと見られがちだが、そんなことはない。上位のシステム屋ともなれば、むしろ人間の思想や行動に強い関心を抱くようになる。少し悪趣味ではあるが、「人間観察」を趣味にしているシステム屋・web屋は結構多い。
悪趣味だね・・・
それもそのはず、プログラムという秩序が破綻する原因のほとんどは、操作する人間の意外性によってもたらされる。些細なミスの類は、リリース前に徹底的に潰されるが、想定外の操作はそう簡単には防げないのである。これが実に厄介であり、同時に興味深い。
例えば、画面操作の順序や入力内容や形式など、想定外のことをさらりとやってのける人間が必ずいる。100人中、2、3人は斜め上の考え方を持ち、システム屋が対象としている普通の人間とは異なった操作を平然とするのである。人智を超え、神の領域としか思えない操作をするのだ。
大袈裟にするな
思いがけぬ手順や操作でバグが発覚し、それがシステムの根幹を見直す契機となることもある。そうした場面に直面するたび、システム屋というものは、単なる技術者ではなく、人間の無限の可能性を相手にする創造的な職人であることを痛感する。
まるで、神・・・
それはない
だからこそ、僕たちシステム屋は、人間の行動パターンや思考の癖に対して敏感でなければならない。なぜその操作をしたのか、どうしてその入力を選んだのか・・・ユーザーの視点を理解しようとする努力は、プログラムの完成度を高めるために必要不可欠だ。言ってみれば、システム屋は人間という「最大の不確定要素」を相手に、限りなく完全に近い仕組みを作る職人であり、探偵でもあるのだ。
過去の話になるが、僕は予約管理システムを作成した。初期段階のテストでは問題なかったが、いざ実運用が始まると、おかしな動きをするという致命的なバグが発生した。その原因を探ると、現場のスタッフが独自の操作手順を編み出しており、その操作がプログラムの想定を越えていたのだ。これには驚嘆した。人間という存在は、論理だけでは捉えきれない奔放さを持つものだと再認識した。
その時、僕は思った。プログラムが動く仕組みは論理で成り立っているけれど、現実の人間は論理だけで動いているわけではない。多くの人間は、感情や状況、そして時には単なる思い付きで行動する。プログラムの中にその「人間らしさ」を組み込むことが、真に使いやすいシステムを作る鍵なのだと。
以後、僕はプログラムを書く際、「もし僕がユーザーだったらどうするか」と自問することを習慣とした。バグを潰すのは当然として、さらに一歩進んで、ユーザーの期待を超える動きを実現すること・・・それが僕の目指す理想のシステムとなった。
なるほど・・・
そう考えれば、プログラミングとはただの技術ではなく、技術と人間を繋ぐ一つの芸術であると言えるのではないか。全ての想定外を排除することは不可能であれど、そこに挑む日々は、やはり、僕にとっては幸福であり、無上の楽しみなのである。
(了)
コメント