自分の作ったプロダクトを求めてくれる人は世界のどこかに必ずいる

便乗してポエムでも。

時間をかけて、つまらないものを作りたいか? - futoase.hatenablog.com

作り話とは思えないくらいリアリティがあって、「あー、あるある…」と思いながら読みました。

僕自身、こういった経験がないと言えば嘘になりますし、パッと思いつくだけでもいくつか記憶が蘇る程度には似たような経験があります。

ただ「つまらないもの」という表現はちょっと気になったので、僕が普段どういう考えで開発に携わってるのか書いてみたいと想います。

※あくまでこのエントリは僕自身の考えを述べたポエムであり、元エントリを否定するものではありません。

「つまらない」は主観的意見

当たり前のことですが「つまらない」というのはその人の主観です。 元エントリでは対義語として「楽しい」という言葉が使われていますが、これも主観です。

開発者として自分が楽しいと感じるものの開発に携わりたいという想いはよく理解できますし、その価値観を否定したいとは思いません。 ただ、僕は自分自身の主観よりも、そのプロダクトを利用する人の主観を大事にしたいと思ってますし、そういう意味で「つまらない」という表現には若干違和感を覚えました*1

興味の対象はプロダクトそのものでなく利用者の想い

例えば僕はほとんどゲームはやりませんがそんな僕でもゲーム開発に携わる機会があればそれなりに楽しめると思いますし、経理や労務管理について以前に若干かじった程度の知識しかありませんがそういった業務システムの開発を楽しくやれる自信もあります。

よくいろいろな人から「どういう業界に興味がありますか?」とか「どういったサービスを作りたいんですか?」と聞かれることがありますが、実際のところ、そんなに深く考えたことはないというか、もっと率直に言うとプロダクトそのものにはそこまで興味はありません。

もちろん自分がターゲット層にあたるサービスだと意見を言いやすいし、そういう場合は(開発者としてではなく、利用者候補として)自分の意見を言うことはありますが、自分の感覚をそこまで信用していないというか、市場にいる他の利用者が自分と同じような感覚を抱く可能性は低いと思ってます。

その点については僕なんかよりもっとよく考えているマーケッターやUXデザイナーがいるはずだし、究極的には利用者と直接対話をしてプロダクトをデザインしていくほうがいいに決まっています。そこに僕自身の好き嫌いはあまり関係なく、それどころか僕が門外漢としてそれを主張しすぎると本来の利用者の欲しいものから遠ざかるような気がしていて意識的に抑えているところがあります。

僕がドメイン駆動設計(DDD)やメンタルモデルという概念に興味をもったのもそういう考え方が根底にあると思っています。

制約をコントロールするということ

僕はプログラミングは好きですし、データ設計やアプリケーション設計について考えることも好きです。

一方、利用者は自分の欲求を満たすプロダクトを欲しいと思っているはずですし、それがどういった振る舞いをするべきなのかを主張します。

このシンプルな構図だけを見れば需給のバランスは完全に保たれているはずで、僕は好きなことをやって、それを欲してくれる人が利用するという理想郷です。

それが実際には理想通りにならないということはその間に何かしらの歪みがあり、きっとそれをそうさせている何らかの制約があるはずです。 それはビジネスの現場であれば予算やスケジュールかもしれませんし、政治的なパワーバランス、または要件定義の失敗かもしれません。OSSであれば異なるコミュニティ間の文化や思想の違いもあり得るでしょう。

開発が「楽しい」か「つまらない」かは言うまでもなく、これらの制約をどの程度うまくコントロールできたかという結果なのです。 そしてこれは幸いにも技術の力でコントロールできる部分は多く、制約をコントロールすることそれ自体が僕ら開発者にとっての「楽しさ」になり得ます。

なので僕はプロダクトそのものに楽しさを求めることは少なく、制約そのものを楽しみたいと思うことが多いですし、きっとその先に、どんなプロダクトをどんな人向けに開発しても楽しめる、そんな理想郷があると信じています。

自分の作ったものを求めてくれる人は必ずいる

どんなプロダクトでも、プロダクトそのものに貴賎はなくて、それを欲している人のもとに正しく届けられているかどうか、それが重要です。

もちろん、実際の開発現場ではその間に先述したような多くの制約がありますが、モダンな開発プロセスの多くはそれをうまくコントロールするための手段を提供します。

例えばざっと思いついただけでも

  • 自己組織化するチームビルディング(スクラム
  • 反復開発、ドッグフーディング(リーン)
  • ユビキタス言語構築(DDD)
  • 高速プロトタイピング
  • TDD/BDD、継続的デリバリー

などが挙げられます。

プロダクトそのものに「つまらない」というレッテルをはるのではなく、それを求めている人はどこにいるのか、その人にどうやったら届くのか、そのためにはどういった手法が適しているのかを真摯に考えられるような、そういった人で僕はありたいですし、そういったチームで働けることを望みます。

最後は元エントリと同じ言葉で結びたいと思います。

皆悪意が有るわけではない。進んだ方向がたまたま見過ごしていた方向、 思わぬ方向に進んでいるだけ。だが、 「変だな」って思った時にすぐに言える、そんな場にしたいし、居たい。

*1:プロダクトそのものを形容する言葉として「つまらない」と言っているような気がしたのです。