𝗪𝗵𝘆 𝗠𝗼𝘀𝘁 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗜𝘀 𝗕𝘂𝗶𝗹𝘁 𝗕𝗮𝗰𝗸𝘄𝗮𝗿𝗱𝘀

ほとんどのソフトウェアは、逆方向に構築されています。

これは、人々が間違ったものに報酬を与えているために起こります。

機能(Features)は注目を集めますが、アーキテクチャ(Architecture)はそうではありません。 お知らせは注目を集めますが、ドキュメントはそうではありません。 新しい機能(Capabilities)は注目を集めますが、メンテナンスはそうではありません。

チームは目に見える部分から着手し、土台を疎かにします。

一般的なソフトウェアに関する問いは、間違った段階に焦点を当てています:

  • どのような機能を構築すべきか?
  • ダッシュボードはどのような見た目であるべきか?
  • どのような連携(Integrations)をサポートすべきか?
  • 次は何を発表できるか?

これらの問いは時期尚早です。機能を構築する前に、システムを理解しなければなりません。

家を建てることを考えてみてください。まず壁の色から始めることはありません。まず始めるのは:

  • 土台
  • 構造
  • 配管
  • 電気系統

目に見える細部は、目に見えないシステムに依存しています。ソフトウェアも全く同じです。

ユーザーインターフェースは目に見えます。アーキテクチャは見えません。 機能は目に見えます。それを支えるシステムは見えません。

ソフトウェアが成功するかどうかは、システムによって決まります。

機能は個別の問題を解決します。システムは問題のカテゴリーを解決します。 機能は機能性(Functionality)を生み出します。システムは一貫性(Consistency)を生み出します。

機能に焦点を当てると複雑さは増大し、システムに焦点を当てると複雑さは整理されます。

ドキュメントは真実を明らかにします。適切に設計されたシステムには、明確なドキュメントがあります。設計が不十分なシステムには、長く複雑な説明が必要です。もしワークフローに何ページもの指示書が必要なら、そのワークフロー自体に問題がある可能性が高いでしょう。

ユーザーは個々の機能を体験するのではなく、システムを体験するのです。

ユーザーには見えません:

  • 認証
  • API
  • データベースクエリ
  • デプロイメントパイプライン

ユーザーが体験するのは:

  • 信頼性
  • スピード
  • シンプルさ
  • 安心感

これらの感覚は、システム全体から生まれます。

逆方向に構築することは、理解しやすいものです。機能はスクリーンショットに収まります。機能なら発表できます。しかし、システムを簡単に発表することはできません。

目に見えない仕事こそが、最大の価値を生み出します。

私はアプローチを変えました。プロジェクトにどのような機能が必要かを問うのをやめ、どのようなシステムを構築しているのかを問うようにしました。

システムは制約を生み出し、優先順位を生み出し、方向性を生み出します。

土台が存在すれば、機能の構築は容易になります。

成功している製品は、単に機能が多いだけではありません。思慮深いシステムを備えています。ワークフローは自然に感じられ、体験は意図的なものに感じられます。

目に見える部分から作り始めるのはやめましょう。まずはシステムを構築してください。機能はそこから自然に立ち上がってくるものです。

出典: https://dev.to/stinklewinks/why-most-software-is-built-backwards-46i