ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  開発よもやま 投稿者:yokoi

プロトタイプアンチパターン「愛ゆえに」

ランサーズ Advent Calendar 2016 1日目の記事です。

CTOの横井です。僕は単騎で新企画とかやるときは、とりあえずプロトタイプベースで進めていくことが多いです。

その甲斐あってなのか、プロトタイプで終わったもの、社内ツールとして使われたもの、プロダクトとしてリリースしたもの等等含めて、ランサーズ来てからの1年半で、0からつくったものが大小合わせて30本くらい自分のプロジェクトディレクトリにありました(ちょっとしたコマンドとかライブラリチックなのは除いて、画面があるもの限定です)。

前職の受託開発時代とかもプロトタイプベースでお客さんに提案していたり(週1で客先でプロトタイプノックをすることもありました)したので、そう考えるとトータルでは結構つくってきた気もします。

今回は、そんな自分がプロトタイプづくりを経て感じたアンチパターンを紹介したいと思います。
 

プロトタイプアンチパターン 愛ゆえにパターン

最大の敵はプロトタイプに愛を抱いてしまうことだと思います。実現したいこと、届けたい価値に愛を持つのは大事です。大事ですがプロトタイプそのものに愛を抱くと大抵不幸な結末を迎えることになります。まさにサウザー様が言っていたとおりです。愛ゆえに人は苦しまなければならぬのです。

以下にプロトタイプに愛を持ってしまうとどうなるかの例を書きます。

折角つくったのにみんなが見てくれない! 試してくれない! と鬱々とした気持ちを抱えながら日々を過ごすことになる

結果1年後くらいに「あのときのプロトを続けていれば……」みたいな怨霊と化す

プロトタイプを見せるプレゼンの場で、上手く動かない! となったときにみんなに見せたい気持ちから、突然その場でバグ探しとか、見せよう見せようとして結果全員に物悲しい時間が訪れることになる

仮説が成立していないことがわかっても、プロトタイプを捨てたくなくなり、ついついそれを守るための理屈を考えてしまう

「じゃあ仮説の方向性を変えて……」のときにもなんとか今のプロトタイプを変更することでどうにかならないか考えてしまう

 
……耳が痛い!

つまるところ、これって手段が目的化しちゃったって話なんですが、じゃあどうするかっていうと単純で、プロトタイプそのものには愛を持たないようにすることがコツかなと思います。
そもそも、本来的に仮説を検証するための手段としてのプロトタイプになんで執着しちゃうのかって話なんですが、これはもう手間をかけちゃったからだと思うんですね。自分のコストを投下すればするほどもったいなくなってくる。なので、愛を持たないようにするための手段としては「時間をかけない」「(作り方そのものについては)悩まない」というところかなと。

時間をかけない、って意味だと、例えばプロトタイプ開発用に必要なものが揃ったスケルトンプロジェクトみたいなのをあらかじめつくっておくとか、それに適した技術選択にしておくとかがあります(自分の場合だとフロントとサーバーサイド両方での思考のスイッチングコストを減らしたいのでサーバサイドはNode.jsでやっちゃうことが多いです)。

悩まないという点では、もうとにかく色々なパターンを知っているか、過去につくったことがあるか、がものをいうかと思います。まあ、そういう意味では一つのプロトタイプづくりは、次のプロトタイプづくりを更に早めるための経験値稼ぎでもあります。それの極北は、めんどくさいところを勘で察して、程々にごまかすなんちゃって実装の知見だったりします(これは完全にプロトタイプづくりのみのためのスキルですが)。

個人的な指針としては、午前中で一段落つくかどうか、みたいなものを置いていたりします。

丸一日かけちゃうと、それを捨てざるをえないときに「無駄な一日だった……」と悲しくなっちゃいますが、午前中だけだと仮にまるっと捨てても「午前中調子出なかったなー」くらいの軽い気持ちでいられるのです。

勿論これは僕個人の感情にのみ由来する話で、本来的にはプロトタイプを捨てるとはいっても、無駄になるわけではなく、必ず得られるものがあると思っています。ただ、それと、自分が無意識的にでも抱いてしまう感情の折り合いはどうにかつけていくしかないかなーと。

といいつつも、またうっかりプロトタイプそのものに愛を抱いてしまって、執着して、を繰り返しているので、人生は修行だなーと思います。

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

SlackでEtherを送りあえるサービスをLambdaで実装した話

インターンの水島です。 現在は開発部でCREチームとブロックチェーンチームに参加しており、来年度ランサーズに新卒として入社する予定です。 今回はブロックチェーン実証実験の一環として、Slack上でEtherを送り合うことができる社内インフラのLambda化を行 …

CTOのGitHubコミット履歴で振り返る2016年

ランサーズCTOの横井です。 クリスマスというよりは、どちらかというと年末感のほうが強いので、GitHubのcontributionsの履歴でも見ながら今年を振り返ってみたいと思います。 ちなみに自分の立ち位置ですが、普段はプロダクト全体を見ている感じで、どこ …

PHP、CakePHPバージョンアップの決断

インフラエンジニアの金澤です。 この度、ランサーズ稼働環境(PHP + CakePHP)のバージョンアップを決断しました。 まずは私から、その経緯と計画についてお話いたします。 バージョンアップ決断の理由 ランサーズは、2008年にサービスを開始しました。 現 …