自分がプログラマーになったのはとても些細な理由からで、ものすごく大雑把に言うと自分が理系が好きだったのと大学に行く際親から「理工系で手に職をつけなければ費用は出してやらん!」とはっきりと言われたので、じゃあコンピューターでもやるか、という実にくだらない理由だった。
その後紆余曲折を経て今どうにかこうにかCPANにモジュールを色々登録できてたり、あちらこちらのプログラムにパッチを送ったりとできたり、それよりなにより親に言われた通り自分の食い扶持くらいはなんとか稼げるくらいにはなった・・・つもりだ。
でもこういう業界で働いていて、しかもプログラミング/エンジニアリングのスーパースターみたいな人達と会ったり仕事したりしてて思うのはやはりエリートの彼らと凡人の自分とでは設計開発思想が違うなぁ、というところ。
すごい人達のプログラムはすごい。わけのわからない事をやってるように見えて実は今まで存在しなかった物を作り出し、それでありながら高性能だったりする。だがそれらの成果物のうち、10個のうち7個くらいはインターフェースのせいで他のプロジェクトで使い回しができなかったり、ドキュメントが足りなかったりで、どうも「わかる人にだけ使ってもらえればいい」的な物だったりする。
俺はアメリカの大学2期生の時にC++の授業の単位を落としたくらいで(4期生の時に取り直した)、正直元々そんなにプログラミングの才能なんてないんだが、そんな時助けられたのがJavadocで、あの言語の隅々まで網羅してあるドキュメントがなければプログラマーをやめて調理人の道を歩んでいたかもしれない*1。いわゆる、天才でなくともわかるように(しかし簡潔に)凡人用に説明をしてくれるツールがあったおかげでなんとか理工系にいられたのだ。
これが悪いかというとちょっと違って、実際に最先端の物を作るのにそんな細かい所まで全部決まったり終了したりするのを待っていたら先に進まなかったりするのでそれはそれでいいのだが、凡人を自称する俺としてはそこをどうにかするように事を進めて行くのが俺の立ち位置だったりするんではないかと思ったりする。
特にオープンソースの世界では他人に受かってもらってなんぼである。直感的かつ使い回しが効くインターフェース、そしてそれらをつなぐドキュメンテーションがなければ他人の訳の分からないコードなんて使いたくないし、逆に使ってくれると思えない。使ってもらえなければオープンソースのコードなんて書いてる意味ねーじゃん、と思う。
そんな自分が目指すのは割と"Programming For The Masses"のような感じ。じゃあなにをやっているかというと別に大した事はやってなくて、とにかく他人が操作しなくてはいけないレベルにおいて
- 「文章のように読める」インターフェースを目指す
- 初期化/設定/内部データへのアクセスはなるたけ容易にする
- コードは必ずサンプルを書く
という3か条を満たす事は目指している。天才は上記がなくったってソースコードを読んだり、理論的な事を解説した論文とかを読んでれば使い方とかがなんとかわかったりしてしまうものらしいが、俺はほとんどの場合ソースコードは読む事はできるけどそれから実際のコーディングをすらすらするのはやっぱり無理だしそこまでの情熱があることも少ない。やはり上記3点がないブツは敬遠する傾向がある。っていうか、それくらいできてないコードはあまり信用できない、と言ったほうがいいかもしれない。
実際にアンケートを取ったわけではないので俺のレベルのエンジニアがどう思ってるかは知らないが、やっぱりエンジニアリングってのは「大衆」が使えてこそその意義があると思う。
品川駅でコーヒー飲んでたらこんなに書いてしまった。そろそろ移動すべ。なんかとりとめもなくなってしまったが自分はいわゆる最先端にはいないかもしれないが、これからもそういう事に気をつけて行きたいと思うのだ。
コメント