初めてのウェブサイトを作ろうと腰を据えたとき、高揚感は本物だった。難しいのはコードを学ぶことだと思っていた。タグを覚え、関数を理解し、構文を正しく書くこと。だが、それは間違いだった。コードを書くこと自体は、実は簡単なことだったのだ。本当の挑戦は、それらのコードの行を、人々が混乱や苛立ちを感じることなく使える「何か」へと変えることだった。その最初のプロジェクトで学んだのは、開発とは孤独にタイピングすることではなく、あなたの技術スタックなど気にしない「人間」のために問題を解決することなのだ、ということだ。私は、時間、睡眠、そして初期ユーザーを失うことになる大失敗を犯した。その中でも、特に際立っていたものが5つある。

リリース前の完璧主義への執着

私は、何かを「完璧」と呼ぶ資格を得るずっと前から、完璧主義の罠に陥っていた。1日の午後を丸ごと、カラーコード(hex code)を1色違いで入れ替えたり、border-radiusの値を8ピクセルから10ピクセルへ、あるいはその逆へと微調整したり、訪問者がページを見る前に見出しのコピーを5回も書き直したりすることに費やした。自分では磨きをかけているのだと言い聞かせていたが、実際には品質という名目のもとで先延ばしにしていただけだった。結果はどうだったか? リリースは3週間遅れた。ようやくサイトが公開されたとき、私が苦悩したボタンの曲線についてコメントしたユーザーは一人もいなかった。彼らが気にしたのは、フォームがクラッシュせずに送信できるかどうかだった。

教訓は刻まれた。まずはリリースすることだ。受け取っていないフィードバックをもとに改善(iterate)することはできないのだから。構造をしっかりさせ、コアとなる機能が動作することを確認し、公開する。洗練(refinement)はバージョン2の仕事であり、バージョン0の仕事ではない。何が本当に壊れているのか、そして何が単に「不完全だ」と自分が思い込んでいるだけなのかは、ユーザーが教えてくれる。

早すぎる多機能化

私のプロジェクトは、本の推薦を共有するためのシンプルなツールとして始まった。それが唯一のコンセプトだった。しかし2週目までには、ユーザーログインシステム、動的な評価グラフ、ネストされたコメントセクション、ダークモードの切り替え、メールダイジェストの設計まで済ませていた。そのどれもが、まともに動作していなかった。ログインフローは半分は失敗し、グラフには表示すべきデータがなく、コメントセクションでは重複投稿ができてしまった。その一方で、サイトが存在する理由そのものである「本のリスト表示」という基本機能は、壊れた未完成の余計な機能の山に埋もれ、ホームページに訪れた誰もが混乱する状態になっていた。

1つの問題を鮮やかに解決するシンプルなサイトは、10のことを下手に行う複雑なサイトに常に勝る。コードをもう一行書く前に、あなたのプロダクトがユーザーのために果たす「たった一つの役割」を定義せよ。それを構築し、テストし、信頼できるものになるまで磨き上げることだ。もしユーザーが実際にダッシュボードやソーシャルフィードを求めてきたら、その時に追加すればいい。それまでは、鋭い包丁さえあれば十分な場面で、スイスアーミーナイフを作りたくなる衝動を抑えるべきだ。

見た目の裏にある体験の軽視

優雅なフォントやスタイリッシュなカラーパレットを選ぶのに何時間も費やした。ヒーローセクションの背景グラデーションに執着した。しかし、サイトの実際の使い心地については無視していた。圧縮していないフル解像度のPNG画像を配信していたため、ページの読み込みは非常に遅かった。ナビゲーションのラベルには、見た目は良いがリンク先を推測させるような「凝った言葉」を使っていた。ボタンは細くてスタイリッシュだったが、スマートフォンの画面ではタップするには小さすぎた。

ビジュアルデザインとユーザーエクスペリエンス(UX)は、互換性のある別物ではないということを、身をもって学んだ。バナー画像が表示されるまで数秒待たされたり、2クリック以内で連絡先を見つけられなかったりすれば、どんなに美しいインターフェースも失敗に終わる。あらゆるインタラクションをシンプルにせよ。ナビゲーションには平易な言葉を使え。アセットは圧縮せよ。タップターゲットが十分に大きいか確認せよ。スピードと明快さは、最後に付け加えるボーナスではない。それこそが、他のすべてを支える土台なのだ。

自分のマシンでのみテストすること

私は、たった一台のノートPC、一つのブラウザ、一つの画面解像度でサイト全体を開発した。自分のマシンでは、すべてが完璧に見えた。ところが、友人がiPhoneでサイトを開いたとき、ボタンが重なり、テキストがコンテナからはみ出していた。別の友人がMacのSafariを使うと、CSSグリッドのレイアウト全体が崩れて、読み取り不可能な積み重なりになった。私は「自分に動けば、誰にとっても動くはずだ」と密かに思い込んでいた。その思い込みのせいで、週末を返上して必死のホットフィックス(hotfix)を行い、恥ずかしい謝罪を繰り返すことになった。

私と同じ間違いを繰り返さないでほしい。公開する前に、Chrome、Firefox、Safari、Edgeでサイトを立ち上げて確認すること。ブラウザの開発者ツールを使って、さまざまな幅のスマートフォン、タブレット、ノートPCをシミュレートすること。すべてのリンクをクリックし、すべてのフォームを送信し、ウィンドウのサイズを極端に変えてみることだ。テスト中に見つけるバグは、ユーザーが本番環境(production)で見つけるバグよりも、はるかに安上がりなのだから。

フィードバックを個人攻撃として受け取ること

プロジェクトを共有するのは緊張しました。もし嫌われてしまったらどうしよう?同僚が、私が時間を費やしてきた機能を削ることを提案したとき、