あなたはおそらく、動作するだけでなくユーザーを喜ばせるソフトウェアを作成したいと考えてこのゲームに携わっているのではないでしょうか?
朗報です!これは推理ゲームではありません。それは、深い理解に基づいた、情報に基づいた決定に関するものです。それは推測ではなく事実についてです。
「ソフトウェア アーキテクチャでは、事実は信頼できる味方ですが、推測でしょうか? 事実はデジタル砂上の楼閣を構築するだけかもしれません。」
この道には難しい選択が山積しているかもしれませんが、正しい知識を身につければ、十数 (またはそれ以上) の推測ではなく、自信を持って次の正しいものを構築できるでしょう。
ヤグニ?あなたはそれを必要としません。これはエクストリーム プログラミングから生まれた原則です。 YAGNI は基本的に、必要と判断されるまで機能を追加しないようにという親切な注意喚起です。そして信じてください、それは切実に必要とされているのです。
オーバーエンジニアリングは、コーヒーを燃料とした深夜のコーディング セッションと同じくらい一般的です。どちらも起こるべきではありませんが、どうなるかはご存知のとおりです...
一つ話をさせてください。私はかつてある男と一緒に仕事をしたことがあります、彼をスミッティと呼びましょう。さて、Smitty は非常に熱心な開発者でした。彼は、クライアントが自転車だけを要求したときに、宇宙船全体を設計するような人でした。それは畏怖の念を抱かせるものでしたが、多くの場合、それは単に不必要でした。
ある日、Smitty は何週間もかけて複雑な機能を開発しましたが、その機能はクライアントが決して使用しませんでした。その時間、エネルギー、そしてコーヒーはすべて無駄になりました。
これは、YAGNI が回避できる落とし穴です。スミッティのようにならないでください。必要なものを必要なときに構築します。
しかし、何が必要なのかをどうやって知ることができるでしょうか?ソフトウェアは技術力を誇示するものではありません。それはユーザーの問題を解決することです。あなたの導きの星?あなたやあなたのチームの気まぐれや願望ではなく、ユーザーのニーズ。
それは、パズルの欠けたピースのようにユーザーの生活にフィットする、非常にシームレスなソリューションを作り上げることです。
ソフトウェア アーキテクチャは、一連のプロジェクトから偶然継承したものではなく、製品全体を念頭に置いて慎重に検討する必要があります。 「偶然のデザイン」は避けましょう。
広く愛されているメッセージング プラットフォームである Slack について考えてみましょう。 Slack の特徴は、顧客の要望に徹底的に焦点を当てていることです。これは単なるメッセージング アプリになる予定ではありませんでした。仕事がシームレスに展開されるコラボレーション ハブとなるように設計されました。
彼らはデータを観察、調査、照合し、それらの洞察を私たちが欠かすことのできないアプリに紡ぎ出しました。 Slack のようになりましょう。ユーザーのニーズに基づいてソフトウェア アーキテクチャを決定してください。
さて、情報に基づいた意思決定を行うには、データ、つまり冷酷で厳しい事実が必要です。推測は人生に必要のない敵です。それは目隠しをして的を狙おうとするようなもので、たいていは外れるでしょう。
直感に基づいて下される決定はコインを投げるのと同じであり、成功するソフトウェアはそうは構築されません。
実質的にデータを崇拝する企業である Amazon について考えてみましょう。すべてのアーキテクチャ上の決定、追加されたすべての機能、および行われたすべての変更は、顧客データの徹底的な分析に基づいています。結果?顧客がリピートし続ける、非常にパーソナライズされたショッピング体験。
「このデータはどこで入手できますか?」良い質問!それを集める仕組みを構築するのです!これらは、ユーザーからの直接のフィードバックのように単純なものもあれば、自動化されたデータ分析パイプラインのように複雑なものもあります。これは、洞察を得るために罠を張るようなものだと考えてください。罠を仕掛ければ仕掛けるほど、より多くの罠を捕まえることができます。
とはいえ、データを収集することが目的ではないことを覚えておくことが重要です。それは、より優れた、より便利な機能をユーザーに提供するのに役立つ実用的な洞察を収集することです。さあ、自分の内なるデータサイエンティストを受け入れてください!
データドリブンでユーザー中心のアプローチへの転換は大変に思えるかもしれませんが、その成果は絶対に価値があります。新しい方法論の採用、データ リテラシーの育成、ユーザー第一の文化の育成は、チーム全体の変化です。
はい、難しいように思えるかもしれませんが、その成果は、より無駄がなく、より効率的で、価値を重視したソフトウェア開発プロセスになることです。より頻繁に正しいことに集中すると、より少ない労力でより多くのことを達成できるようになります。
ほら、抵抗があるかも知れません。古いやり方、楽なやり方にしがみついている人もいるかもしれません。しかし、これは新しい時代を擁護するチャンスです。推測ではなく事実に基づいて意思決定が行われる未来にチームを導くチャンスです。
ソフトウェアは開発者の欲求を満たすためではなく、実際の問題を解決するために構築されます。
ここが最初のステップです。小さなことから始めましょう。次回、機能を追加したり、アーキテクチャに関する決定を下そうとしたときは、「この決定を裏付けるデータはありますか? それはユーザーに役立つものですか? それとも、単に新しいものですか?」と尋ねてください。
優れたソフトウェアは、気まぐれや直感に基づいて構築されるものではありません。それは情報に基づいた決定に基づいて構築されます。
最終的には、ユーザーに多大な価値を提供すること、つまり人々が使い、愛し、それなしの生活を想像できないソフトウェアを作成することです。そして、あなたにはそれができる以上の能力があります。
ですから、現場に出て事実を収集し、ユーザーを第一に考えて、素晴らしいソフトウェアの構築を始めてください。ユーザーが待っています。