2020/05/18

比較できないつくりはどこかが間違っている

なにか独自なものを編み出したと思うとき、100回に99回は間違っている。

何か新しいプロダクトを作っていて、事業とシステム全体をおりまぜた全体像を計画しているときに、これは間違いないと肝を据えて取り組み始めようとする。システムをつくることは系を理解することなしにできない。システムを使うのとつくるのは、家に住むのと家につくるのの違いと同じだ。快適に水が扱えていても、その水がなぜ果たして安全に数十年も供給されるのかは知らなくて良い。

プロダクトは組み合わせで独自に見えてくる。ある面は別のプロダクトに似ており、ある面はまた別のプロダクトに似ている。それが幾重にもなり、すこし独自なものに見えてくる。些細な違いが圧倒的な価値観だと勘違いされ、ある面をしっかり組み上げることをおろそかにする。基本はすべての面において、完璧に既存のプロダクトを理解し、同等程度に組み上げなければ独自なものは生まれない。現代のプロダクト開発は全面戦争であり、全面的に素晴らしくなければ縮小し、淘汰される。

しかしこの勘違いはときとして爆発力になる。「もしかしたら自分はすごいものをつくっているのかもしれない」という自覚は、前に進む力になる。あるいは独自にみえるものを信じ、チームで向かっていかなければ新しい可能性を作れずに失敗する。学習最中の技術を使っているときに新しい可能性が見える体験をプログラマは多くする。この瞬間はいつも楽しい。巨大なシステムを作っているように思えても、実は小さな成功を積み重ねた結果だったりする。テストが通り、外部APIとの組み合わせがうまくいき、データが正しく保存される。小さなステップが面をつくり、質を上げる。

あるとき、ふと面を重ねていくと、なぜ自分たちがここまで作ってこれたのかわからなくなる。外から見れば直線上に進化してきたようにみえても、その過程はまがり道だらけだ。あなたの隣のあのサービスもきっとそうだ。結果として自分たちが立っているのがなぜなのかというのは、後にならないとわからないし、多くのことは後になってもわからない。コツは毎日いくつかの面を先駆者と比べることだ。向いている方向が違うならまだよく、方向が比較できなくなっていたら大抵うまくいかなくなっている。