ソフトウェアアーキテクトが知るべき97のこと

読んだ。自分なりのアーキテクト像を考えさせられた。

  • ネットワークの結合、ビルドプロセスのコンフィグレーション、単体テストの作成、ベンチマークの実装など、チームメンバーが出来る事なら何でも出来る必要がある。
  • アーキテクトは、ビジネスと技術のインターフェース。優れたアーキテクトは、問題点を見抜き、チームを集め、犠牲者を名指しせず、問題がどのようなものか説明し、エレガントな解決策や回避策を示さなければならない。
  • アーキテクトは、プロジェクトの開始時点からチームに溶け込んでいなければならない。象牙の塔から命令を下すのではなく、地上に立って、チームと共に働く。
  • アーキテクトは1つのツールのエキスパートでなければならない。どのツールについても、低すぎず高すぎないレベルが必要。
  • 重複は悪。反復的な作業は開発を遅らせる。アーキテクトはその様な部分を取り除く。
  • 動くスケルトンからスタートし、動く状態を保ちながら、少しずつ育てていく。
  • 簡単な問題を複雑に解決しない。複雑なソリューションはコストが増大する可能性がある。そして元に戻すのが難しくなる。今日のところは今日の問題を解決する。時間通りにアプリケーションを引き渡し、フィードバックを待つ。本当の要件はフィードバックに含まれている。設計をシンプルにしておけば、新しい要件を組み込むのはずっと簡単になる。
  • アーキテクトは何よりまずデベロッパーであれ。自分ではコードが書けない空想家などでは無い事をデベロッパー達に示す。
  • アーキテクチャーを設計する時には、実装する為の作業量がどのくらいになるか、見当が付いていなければならない。設計するならコーディングできなければならない。
  • 勤勉さが必要。有能なアーキテクトは、知識として知ってるが実践できていない事を思い出すため、毎日、毎週のチェックリストを作り、従っている。プロジェクトが失敗するのは、能力が無いからではなく、勤勉さと危機意識が欠けているから。勤勉であるためには、約束事を作り、それを守る事が必要。約束事には様々な義務や禁止事項が含まれている。


日本人では、伊藤直也氏と小野和俊氏がデベロッパー寄りのアーキテクト像、
その他はビジネス・設計寄りのアーキテクト像という印象。


個人的にはデベロッパー寄りのコラムの方が面白く読んだ。


海外のコラムでは、アーキテクト=デベロッパーの上級職。
日本のコラムでは、アーキテクト=設計者。
という印象を持った。
「ソフトウェアエンジニア」しかない世界と、
システムエンジニアプログラマー」で分業された世界の違いだろうか。