megamouthの葬列

長い旅路の終わり

プログラマが「出来ません」と言う日

長い間、フリーランスなどという「便利屋」をこなしていると、馴染みの顧客から、トラブったプロジェクトに急遽参画してほしいという、ヘルプ案件が入ってきたりする。
嫌かと言われるとそうでもなく、むしろ、恩を着せて(足元を見るとも言う)高単価を取るチャンスだし、案件が燃え上がっているのは他人のせいであり、途中から入る私は気楽なものなので、積極的に首をつっこむことにしている。

こう言うと颯爽と現れるスーパーマンのようでかっこいいのだが、そこはクソ雑魚フリーランスの私。トラブルの内容というのは、「安いWordpress業者に頼んだ案件で、途中で、(カスタマイズ要件)がやっぱり出来ないと言われた」とか「アプリが毎回メモリリークで5分で落ちるのだが、全く治る気配がない」とかそういう情けない話ばかりである。

共通して言えるのは、炎上させた業者が「(問題を解決することが)出来ません」とはっきり言ってしまっていることである。

私などはプライドだけは一人前なので、自分の技量が足りないという理由で「出来ません」と言ったことはほとんどない。
もちろん、「Webアプリからデスクトップにある任意のExcelファイルを開いてください」とか、それはどういうセキュリティホールを突けば出来るんだ、的な根本的、常識的に無理なリクエストには「最近は起きながら寝言が言えるんだな(Webの仕様上出来ません)」ぐらいの返しはする。

だが、「Wordpressの○○というプラグインが対応していないので出来ません」とか、そういう類の「出来ません」は、要するに、自分がWPプラグインの内部動作やフックAPIを理解していないことを自白しているのに等しいわけで、「(工数上)出来ません」なのは理解できるものの、そうでない場合(そうでないから私のような高利悪徳エンジニアに依頼が来るわけであるから)
よくもまあ、「出来ません」なんてことを気楽に言うものだ。と毎回思ってしまう。

彼らの事情に首を突っ込んだことはないので、どういう「出来ません」なのかは本当のところわからない。
だが、プログラマにとって「出来ません」という事がいかに屈辱的なことであるか、と私が考えているのはご理解いただけたかと思う。


そんな私だが、最近、彼らの気持ちが少しわかるような出来事があった。
その仕事は、ES6をbabelでトランスパイルできるようにgulpタスクを追加して欲しいという内容だったのだが、ES6のある構文をサポートする為のgulpタスクがさっぱりわからないのである。

私は、出来るだけ公式のリファレンス以外をググるという行為を戒めてるのだが、今回ばかりはどうにもならないので、ググッてみた。
そうすると、有りがちな問題だったのか、すぐにコピペできそうな文例が沢山でてきた。
だが、それらは意味不明のモジュールを挟んだ、これは結局何をやってるんだ、という内容だったり、もはやgulpで書くタスクじゃないだろこれ、という内容だったりしたので、私は書かれた内容に全く納得がいかなかった。
しかし、最適な答えを探している時間がなかったので、私は仕方なく、良さそうなコピペを使って、なんとか要求される仕様通りに動くようにしてファイルを返した。

一応はちゃんと動いたようで、その場はなんとかなったのだが、自分でもよくわからない物を納品してしまったので、非常に収まりが悪い。

私は仕事が終わった後も、自分が何を書いたのか、ということを調べ続けて、ようやく自分がコピペした内容がどういうものかを理解できた。
(結論から言うと、それはgulpのアーキテクチャがそのエコシステムの中ですでに破綻しているという印象を受けざるを得ないものだったわけだが、それはさておき)
肝心なことは、もし私が仕事に追われ、調べる時間をとれず、そのファイルが何らかのトラブルを起こしてしまったら、私は「出来ません」と答えるしかなかっただろう、ということだ。

そもそも私はgulpが嫌いだし(思想自体は理解できるのだが、現在の定番的なgulpタスクはその思想を理解して作られているとは思えない)、こんな腐った物のためにgulp本体やプラグインのソースを読むなんてことは真っ平ごめんである。

「自分が何をしているかを理解しているのが良いプログラマだ」というのはこの世界でよく知られた格言であるが、逆に言えば、大半のプログラマは自分が何をしているか理解していないとも言える。

理解していないまま、または理解する事ができないまま、書いたプログラムを放置すれば、未知の問題が起きた時にどうすることもできない。
これを「恐怖」や「屈辱」であると考えることができないのであれば、おそらくその時プログラマは涼しい顔をして「出来ません」と言うことができるだろう。

私もgulpという素晴らしいソフトウェアを通じて、「こんなもの理解できなくて当たり前じゃ」と言う気分になったので、
Wordpressプラグインが対応してないので、その仕様が出来ません、と答えたプログラマも「WPなんて腐ったものを理解するなんてごめんだ」ということだったかもしれないし、メモリリークも「なんで低レベルAPI触ったとたんにメモリ管理できなくなる欠陥言語を触らないといけないんだ」ということだったのかもしれない、と、想像力を働かすことができた。


それでも、私は「出来ません」と答えることは屈辱的であると思う。

それはプログラマにとっての飯の種であり、存在意義であり、聖杯でもあるところのプログラムを汚す行為に他ならないからだ。

しかし、案件の内容やその人の待遇によっては、その敬意を失ってしまうのも無理はないのかもしれない。

私にもいつか、この不遇の時を経て、いつかニヤニヤと「出来ません」と答える日が来るだろう。

それでもプログラマを続ける意義があるのかどうかは、その時に考えようと思う。


新装版 達人プログラマー 職人から名匠への道

新装版 達人プログラマー 職人から名匠への道