1章ソフトウェアアーキテクトになる

いつ私がソフトウェアアーキテクトになったかは定かではない。けれど、最初にそう呼ばれたときのことは覚えている。重要な顧客との打ち合わせに参加していて、技術的に難しい質問を受けたときのことだ。プロジェクトマネージャーがこう言った。「Michaelがこのプロジェクトのアーキテクトです。彼が詳しく調査を行い、1週間のうちに報告します」

何の前触れもなく、私はソフトウェアアーキテクトとなった。ワクワクし、キャリアアップへの期待に胸が膨らんだ。私はアーキテクトなんだ! しかし、すぐに不安が湧き上がってきた。自分はアーキテクトだ。で、何をするんだ? ソフトウェアアーキテクトとソフトウェアエンジニアの違いって何だ?

ソフトウェアアーキテクトは、プログラミング以外にも、たくさんの責任がある。アーキテクトは、エンジニアリングの観点から問題を定義し、さらにソフトウェアシステムを実装可能な塊に分解する。その一方で、システムが全体として一貫性を保って動作するよう、全体に目を向け続ける。また、品質特性間のトレードオフを決定し、避けることのできない技術的負債を管理する。そして何より、チームのアーキテクチャスキルを育てる。アーキテクトで満たされたチームこそが最善だと理解しているからだ。

この章では、アーキテクトの役割について学ぶ。また、ソフトウェアアーキテクチャについての知識を得ることが、なぜより良いプログラマーまたは技術リーダーになることにつながるのかを学ぶ。さらに、ソフトウェアアーキテクトになるという、プロフェッショナルとしてのキャリアパスをどのように歩み始めるかについても学んでいく。

1.1 ソフトウェアアーキテクトが行うこと

ソフトウェアアーキテクトはチーム内で独特な立ち位置にいる。彼らはプロジェクトマネージャーではない。しかし、ソフトウェアをいつどうやって届けるかを決定する。彼らはプロダクトマネージャーではない。しかし、ソフトウェアがビジネス目標を満たすことを確認する。彼らはコードを書く。しかし、単なるアルゴリズムやコード以上のものを設計する。ソフトウェアアーキテクトは他とは全く異なる責任を持っていて、一見すると、すべての中心にいるように見える( ...

Get Design It! ―プログラマーのためのアーキテクティング入門 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.