(jp) =
# スパーク
数日前、フォーラムをブラウジングしているときに、この記事の発端となったディスカッションに出くわしました。 要するに、OP は高価なクエリに問題があり、それを最適化するために最善を尽くしていました。 スレッドには、この列にインデックスを付ける、結合の代わりにサブ選択を使用する、結果をチャンクするなど、クエリを最適化する方法を提案する多くの応答がありました…
私にとって奇妙だったのは、OP が 13k オプションを select 要素にロードしようとしていたという事実でした。 私は彼に、クエリを数ミリ秒に最適化できたとしても、ユーザー エクスペリエンスは悪くないだろうと提案しようとしました。 私は時間をかけて、代替案、UX のベスト プラクティスを含む記事、モバイル デバイスの最適化を彼に提示しました。 重心は変わりませんでした。 彼の既存のソリューションを改善するための献身は絶対的でした。 言うまでもなく、スレッドは今日まで開いています…
# 啓示
全体として、私自身を含む職場環境でこの動作に何回遭遇したかを考えさせられました. 早朝のコーヒーを飲みながら、この動作をシミュレートする実際の例を見つけようとしました。 私はカップを伸ばして、よくできていないコーヒーテーブルに慎重に置きました。 私はこのテーブルを 2 年前に IKEA から購入し、何時間もかけて組み立てようとしましたが、最後にネジが 1 つ余分に残っていることに気付きました。 手順の一部をめちゃくちゃにしてスキップしましたが、完了しました。 1本のネジのためにすべてを作り直すつもりはありませんでした。
今日まで、私のコーヒーテーブルは脚に取り付けられた紐で支えられており、訪れた友人は皆、テーブルを優しく扱う必要があることを知っています.
# がっかり
私はすぐに「The IKEA effect」という名前を思いつき、そのクールさを称賛しました。 案の定、それをグーグルで調べた後、そうであることに気付きました.Harvardの教授であるMichael I. Nortonの非常に興味深い論文があります.The “IKEA Effect”: When Labor Leads to Love そしてここに要約します.ウィキペディアの定義は次のとおりです。
イケア効果とは、消費者が部分的に作成した製品に不釣り合いに高い価値を置くという認知バイアスです。
# イケア効果の再訪
プログラマーとしての私のキャリアの中で、私はこの現象の負の副作用にかなり頻繁に気づきました。 それは、組織のさまざまなレベルでさまざまな形で現れます。
トップレベルの経営陣が次の大きなものを定義するために時間と労力を費やした後、技術的な制約やそれを構築するために必要な労力のレベルによって足を踏み入れるだけです。 デザイナーが何日もかけて忠実度の高いデザインを考え出すと、最終的には否定的なフィードバックを受け、設計図に戻る必要があります。 最後に、基本的にすべてを書き直す必要がある機能に何日も費やした後、コードレビューを受けるプログラマーのために!
# 努力が大きければ大きいほど盲目になる
問題の解決策に取り組んでいると、深く掘り下げるほど、問題の特定の部分に焦点が移ります。 多くの場合、これらの部分を解決するには、不釣り合いなほどの労力が必要になる場合があります。
この1つのことを機能させるために、stackoverflowを検索して猛烈に調べていることに何回気づきましたか! ようやくこのソリューションの小さな部分が機能するようになったとき、私はそれにとても愛着を持っていたので、それが正しい方法ではないかもしれないという考えさえ考えませんでした.
私は、挑戦しようとする者に対して、その名誉を守る準備ができていました! この段階では、あらゆる種類または形式のフィードバック (コード レビューによるものか、ウォーター クーラーによるものか) によって緊張が生じます。 最悪の部分は、フィードバックはおそらく正しいのに、あなたはすでに盲目であり、それを見ることも受け入れることもできないということです.
# 組み立て説明書
では、より優れた、またはより効率的な代替手段を探すのではなく、すでに取り組んでいることへの投資をやめさせるにはどうすればよいでしょうか。
これは私の要点です。
指示を読んで: 問題を理解せずに解決策に飛びつかないでください。 時間をかけて、必要に応じて説明を求めてください。
初期のフィードバック: 提案された解決策の概要を書き、同僚に伝えます。関与する必要がある全員が認識していることを確認してください。
下書きを作成する: コーディングして機能させます。抽象化や将来の保守性については考えず、できるだけシンプルにします。 もう一度フィードバックを求め、繰り返します。
再構築する: 大幅なリファクタリングが必要なフィードバックがありましたか? とにかく、あなたが物事を書き直そうとしていたのは大したことではありません。
いつ停止するかを知る: 何かが正しくないと感じたり、ソリューションでモデル化するのが奇妙に複雑になったりすると、悪臭がします。 後からではなく、今すぐアプローチを停止して再検討してください。 道に迷っていますか? それを機能させる方法を見つけるのに苦労していますか? あなたの専門知識のレベルでは問題が難しすぎるのかもしれません。 これには恥じらいはありません。 早い段階でシニア エキスパートと連絡を取り、ヒント、ペア コーディング、獣と戦うためにゲームを成長させるのに役立つあらゆることを求めます。
急いでください: すべての小さな部分を完璧にしようとしないでください。 解決策の核心に注意を払い、残りの部分と一緒に暮らすことを学びましょう。 それを出荷し、感情的に離れてしばらくしてから、再訪してリファクタリングしてください。
もう一度、おかげで ディミトリス、彼をチェックしてください! このトピックについて自分の考えを話し合うことに興味がある場合は、HN で共有できます。