# 難しいことを簡単にする 技術をベースにしてなにかものをつくるとき、時間をかけてもいいものは出来上がらないと考えている今日この頃、年末年始、気温は下がりまくりですが皆さんいかがお過ごしですか。 エンジニアに、ここをこう変えて欲しい、とリクエストしたとき、難しいので時間が掛かりますという返答がかえってきたら、それは時間に見合った出来上がりにならない可能性が高いと思ったほうがいい。ましてや、どれくらいかかるかわからないと言われたら、それはできない、と同じ意味だと受け取った方が良い。 なぜか。 技術に難しいもクソもないから。できることはできるしできないことはできない。できることは予測ができるし、逆に予測がつかないことは、ほとんどできないも同じだ。頑張ればできるというのは、たいていやればやるほどさらにややこしい状態をつくる。例えばソースコードで言えば、どんどん複雑度が増して、最後にはだれもどこにも手をいれられない状態になる。いわゆるスパゲッティ状態。コードを読むこと自体、一行手を加えること自体がパズルを解く作業と化す。それを避ける術はないこともないが、たいていは”頑張る”人々によって破滅に寄せられる。 歴史のあるシステムは、多かれ少なかれそういったものを抱えている。きのう生まれたばかりのコードでもすでに負の遺産を抱え始めているかもしれない。できた時はすばらしいシステムに思えても、まわりの技術が進むことで陳腐化し、いずれだるいものになったりする。だから、なにかシステムを拡張しようとした際に、時間が掛かる(掛かりすぎる)という状態は、拡張自体が元の仕様を覆しすぎているか、すでにその動いているシステム自体の仕組みがよろしくない状態にあると思ったほうが良い。 変化そのものに対応する仕組みがいる。 良いシステムの条件は手を加えやすいことだ。ああしたい、こうしたい。はいはい、できますよ。簡単に、すぐに。それが当たり前にならないといけない。要件がどんどん増え、運用もずっと続くようなシステムで、もっとも優先されるべきはそこだ。要件はその場でかなえられないと意味がない。目の前にあるチャンスを逃す。競合がいるならなおさらだ。雨が止んでから傘を手にしても、荷物になるだけだ。時間が掛かるのはなぜか、そこを十分に考えないといけない。アジャイルがどうした、スクラムがどうした。腹が減って死に掛けている人に、ダイヤの指輪は価値がない。システムの複雑度が一定ラインを超えたら、本当にそこをクリアしないと、人力ではドン詰まる。工数かければなんとかなるでしょうと思うのはど素人の発想だ。異論は認めない。ITシステム作る目的は、工数かけないでなにかするためだ。計算機で楽することだ。なのに工数かけるとは何事だ。工数ってのは人力だ。矛盾している。工数かけて何かやるという発想はそもそもおかしい。 工数がかかる状況というのは危ない。エンジニアに自然に仕事が産まれてるということだ。だから、逆を言えば、美しい仕事をするエンジニアは、なんとも暇そうにしているだろう。いつも忙しそうに、複雑な問題を解いているぜ!という体のエンジニアは、もしかしたらそれははったりかもしれない。複雑なものを産み、それを一部改善し、またその作業でことを複雑にする、マッチポンプエンジニアを見極めないといけない。 ただ、ガチで難しい問題を美しく解いている人もいる。勘違いしてはならない。そうあるべきだし、そうありたい。(勘違いされないように書きますが、これは必死の努力を裏でやるという話ではないし、学者のような、本質的に問題を解くことがお仕事のようなことを論じているのではありませんし、エンジニアのお仕事においても、問題を解くことそれ自体がお仕事という場面も多多あります) だから、問題を解くのがエンジニアの仕事だという定義を時々見かけるが、そんなのうそだよな、と思う。問題を解いたその答えが、また問題を産むようなお仕事が多いからだ。前述したように、そうした方がエンジニアにとっては仕事が増えてメリットなので、放置すればそちらに流れるのは自然な話。それを食い止めるには、そうならないための仕組みがいる。そのためには、まず、問題を解くのがエンジニアのお仕事といううそをやめないといけない。このうそは、難しい問題も頑張ってなんとかする、ということを肯定していてたちが悪い。頑張るしか解く道がないことだってある。それはそれで仕方がないが、そうじゃないのにそうなっているという認識が薄いのが、そもそも問題なのだ。 というわけで、だらだら書いてみたが、そうしたパズルをうなって解くような仕事はしたくないなあという嫌悪感はなんなのか。自分がやるべきこと、やっていることは何だろう。ここのところずっと通勤電車の中で考えたりしていた。早く目覚めた朝に、改めて考えて思いついたのは、難しいことを簡単にする、ということだった。誰かが何かをするときに、できなかったりややこしかったりすることを、簡単にできるようにする。生み出すべき価値の評価基準はそこにあると思う。何を簡単にしたか、そこが大事なのだ。もちろん、ビジネスだから、お金を稼ぐというのは必達事項かもしれない。ただ、それは連帯目標値であって、仕事の絶対評価基準ではないと思う。貨幣のない時代から、人は難しいことを簡単にしてバリューをだしてきたにちがいない。お金そのものも、乱暴に言えば社会経済におけるあれこれを簡単にするためのツールだ。 難しいことを簡単にする。これだ。これがいいや。