> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/ja/2022/w02-cai-chaos-ten-year-reflections-on-architecture.md).

# W02-蔡超が10年間のアーキテクチャ設計から得たこと

週末、蔡超の講演を聞いた。Amazon中国の元チーフアーキテクトで、この10年間のアーキテクチャの仕事から得た気づきがテーマだった。中心的な内容を整理すると、結局はどれも「常識」だ。複雑なものを一枚ずつ剥がしていくと、常識が現れる。

**問題と技術。** 第一の層は、釘とハンマーの関係だ。技術ではなく問題から始める。蔡さんは、何年も前、あるチームの開発者が技術への熱意から、小さなプロジェクトのMySQLを、当時AWSが出したばかりのNoSQLデータベース、DynamoDBへ置き換えた例を挙げた。NoSQLが得意でないトランザクションやデータ整合性を考えなかったため、1人で済んでいた保守にチーム全体が必要になった。第二の層は、アーキテクチャ設計では「問題を提起する」ほうが「解く」より難しいことが多い、という点だ。『デザインのためのデザイン』の言葉を借りれば、「設計で最も難しいのは、どのような問題を設計すべきかを設計すること」である。

**単純さと容易さ。** アーキテクチャは納品を単純にする過程であって、複雑さを追うものではない。単純（simple）と容易（easy）は異なる。容易さは複雑さを利用者に渡し、単純さは複雑さを自分で引き受ける。本当の単純さは容易ではない仕事から生まれる。複雑にするのは容易だが、単純さには巧みさが含まれる。スティーブ・ジョブズの言葉を引用すると、「単純であることは、複雑であることより難しい場合がある。自分の考えを徹底して整理して初めて、物事をとても単純にできる。その努力には価値がある。達成できれば、山を動かすほどの力になる。本当の単純さに達するには、十分に深く考えなければならない」。

**実践と学習。** 忙しすぎると遅れを取る。知識を更新する時間がないからだ。最も恐ろしいのは、仕事の問題が複雑になるほど対応が難しくなり、残業でしか解決できず、その残業がさらに学習時間を奪う悪循環である。7・2・1の学習法が成り立つには、仕事に挑戦があり、優れた人を基準にでき、10分の1のインプットの割合を段階に応じて調整する必要がある。筋力トレーニングなら、進むほど練習量を増やす効果は小さくなり、食事や栄養、生活リズムの重要性が高まり、練習と同等になる。実践と学習は、トレーニングと栄養のようなものだ。インプットの構成を適時変える必要がある。
