ベルリンのITスタートアップで働くジャバ・ザ・ハットリの日記

日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログ

【パズル2】ほとんどのエンジニアには解けるが、下位20%のダメなエンジニアにだけ解けないパズル?

移転しました。

前回に続き、Webエンジニア向けのパズルを作った。プログラム言語を問わず、フロントエンド、バックエンド、iOS、Android、どんな技術を担当しているエンジニアであっても誰でも解けるパズルだ。
サイトにアクセスするとHack Me If You Can(ハックできるもんならやってみろ)のタイトルとCall my APIsとあるのみ。分かる人なら数分以内に解けるだろう。

f:id:tango_ruby:20151228205015p:plain:w300
http://challenge-your-limits2.herokuapp.com/

パズルが解けたらコメントを入れられる仕組みにしている。パズルを解いたDarth Vader氏よりイキなコメントが入っている。このDarth Vaderは私の職場の同僚アメリカ人エンジニアのAだ。

Aとは前回のパズルを解いてもらった時は「あーそうか」程度で終わったのだが、今回のパズルに関しては長い議論になった。Aが異を唱えたのはパズルの難易度に関してだ。Aの言ったことを要約するとこうだ。

A「パズルの難易度をできるだけカンタンにする点は同意する。だが今回のはカンタンと言うよりも、ほとんど問題とその答えが同時に出ている状態だ。もはやパズルになっていない。エラーメッセージに説明やヒントを記載して返していると、技術が分かっていない人でもググればスグに解決する。技術が分かってない人と分かっている人の差が無い。そんなのパズルじゃねーよ!」
とモニター画面に出したエラーメッセージを叩いて何度も主張していた。

Aの言いたいことは分かる。が、私はAの趣旨を十分に理解した上でAの考えをパズルに取り入れずに公開することにした。なぜなら私が考えるこのパズルの目的は「技術を知らなかった人をふるい落とすこと」ではないからだ。

前回のパズルにしてもすごくカンタンな作りで、キーになる技術はcurlコマンドのみだった。もしcurlコマンドを知らなかったとしても、ブログにしっかりcurlを使えば解けますよ、と記載した。この時点でcurlコマンドを知らなくてもググれば、curlを知っていた人との差は無くなったはずだ。

実際、パズルを解いてコメントを入れていただいた方の中に「curlを調べたら解けた」「はじめてcurl使った」などが見られて、とても嬉しかった。
ググればなんでも検索にヒットする世界に住むエンジニアにとって「ナニかを知っているかどうか」の価値はその程度だ。

ではなんのためのこんなパズルを作ったのか。目的はただひとつ「優秀なエンジニアに楽しんでいただくため」だ。

モノを作ったことのある人なら誰でも持っているであろう「どう?オレの作ったの?オモロいやろ?」と言ってみんなに作ったモノを見せたくなってしまうアノ感覚である。

「勉強になった」とコメントをいただいて誰かの役に立てるのは非常に光栄なことだ。が、私は別に「エンジニアのスキル向上のために!」とかそんな高尚な理念をかかげてパズルを作ってはいない。ただただ「オモロイやろ?」と言いたくてしょうがないから作ったのだ。

なので、どうすれば優秀なエンジニアに楽しんでいただけるか、だけを考えた。ある特定の技術をたまたま知らなかった人を除外したところで、楽しめる訳がない。エラーメッセージに内容を記載しているので、ググッて多少の機転を利かせれば解決できるようにした。エンジニアに降りかかる問題の解決策を発見した瞬間の「あっ!これだ!」とモニター画面を見つめながら思わずニンマリしてしまう感覚はエンジニア冥利に尽きると言っていいだろう。その瞬間をできるだけステキに創出するパズルを心がけた。


できればネタバレは控えていただきたい。
これはパズルの作成者がその権利を独り占めするためだけに「ネット上に回答を書くなよ」と主張しているのではない。ネットでシェアされるのは全体の利益を増大させるべきもので、今回のパズルのネタバレは誰の得にもならない。ネタバレはこのパズルの目的である「あっ!そうだ!」のトキメキを無くしてしまうだけだ。「エラーメッセージに詳しいヒントまで載せて返しているのに、パズルの解法までネタバレする意味はないだろ」というのが正直なところだ。

優秀なエンジニア向けのパズルと謳っているが優秀な人ほど忙しいし、パズルなんかに付き合っている時間はない。
でもそんなエンジニアには共通して「おもしろそうな問題があったら、それを無視して通り過ぎることができない」という性質があることを私は知っている。

そうなのだ。放っておけばいいのにオモロそうなエンジニア系の問題があると、ついついその頭脳とキーボードを叩く指が反応してしまうのだ。パズルを通してそんなエンジニアの方々に楽しんでいただければ幸いである。


【ほとんどのエンジニアには解けるが、下位20%のダメなエンジニアにだけ解けないパズル?】(herokuの無料プランにデプロイしたのでだいたい眠ってます。最初の1発目だけは遅いのでしばしお待ちください)
http://challenge-your-limits2.herokuapp.com/

ヒント:まずはcurl使って

$ curl http://challenge-your-limits2.herokuapp.com/something/something

とかやればいろいろ出ます。
(他の追加ヒントを新しいブログの記事に載せた)

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com

tango-ruby.hatenablog.com