𝗪𝗵𝘆 𝗠𝗼𝘀𝘁 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗜𝘀 𝗕𝘂𝗶𝗹𝘁 𝗕𝗮𝗰𝗸𝘄𝗮𝗿𝗱𝘀
ほとんどのソフトウェアは、逆方向に構築されています。
これは、人々が間違ったものに報酬を与えているために起こります。
機能(Features)は注目を集めますが、アーキテクチャ(Architecture)はそうではありません。 お知らせは注目を集めますが、ドキュメントはそうではありません。 新しい機能(Capabilities)は注目を集めますが、メンテナンスはそうではありません。
チームは目に見える部分から着手し、土台を疎かにします。
一般的なソフトウェアに関する問いは、間違った段階に焦点を当てています:
- どのような機能を構築すべきか?
- ダッシュボードはどのような見た目であるべきか?
- どのような連携(Integrations)をサポートすべきか?
- 次は何を発表できるか?
これらの問いは時期尚早です。機能を構築する前に、システムを理解しなければなりません。
家を建てることを考えてみてください。まず壁の色から始めることはありません。まず始めるのは:
- 土台
- 構造
- 配管
- 電気系統
目に見える細部は、目に見えないシステムに依存しています。ソフトウェアも全く同じです。
ユーザーインターフェースは目に見えます。アーキテクチャは見えません。 機能は目に見えます。それを支えるシステムは見えません。
ソフトウェアが成功するかどうかは、システムによって決まります。
機能は個別の問題を解決します。システムは問題のカテゴリーを解決します。 機能は機能性(Functionality)を生み出します。システムは一貫性(Consistency)を生み出します。
機能に焦点を当てると複雑さは増大し、システムに焦点を当てると複雑さは整理されます。
ドキュメントは真実を明らかにします。適切に設計されたシステムには、明確なドキュメントがあります。設計が不十分なシステムには、長く複雑な説明が必要です。もしワークフローに何ページもの指示書が必要なら、そのワークフロー自体に問題がある可能性が高いでしょう。
ユーザーは個々の機能を体験するのではなく、システムを体験するのです。
ユーザーには見えません:
- 認証
- API
- データベースクエリ
- デプロイメントパイプライン
ユーザーが体験するのは:
- 信頼性
- スピード
- シンプルさ
- 安心感
これらの感覚は、システム全体から生まれます。
逆方向に構築することは、理解しやすいものです。機能はスクリーンショットに収まります。機能なら発表できます。しかし、システムを簡単に発表することはできません。
目に見えない仕事こそが、最大の価値を生み出します。
私はアプローチを変えました。プロジェクトにどのような機能が必要かを問うのをやめ、どのようなシステムを構築しているのかを問うようにしました。
システムは制約を生み出し、優先順位を生み出し、方向性を生み出します。
土台が存在すれば、機能の構築は容易になります。
成功している製品は、単に機能が多いだけではありません。思慮深いシステムを備えています。ワークフローは自然に感じられ、体験は意図的なものに感じられます。
目に見える部分から作り始めるのはやめましょう。まずはシステムを構築してください。機能はそこから自然に立ち上がってくるものです。
出典: https://dev.to/stinklewinks/why-most-software-is-built-backwards-46i