ソフトウェアアーキテクト。聞きなれない言葉かも知れません。高レベルなソフトウェアシステムを定義し設計する人を指します。
プロジェクトリーダーが、その役割を担うことが多いでしょうか。
ソフトウェアアーキテクトには、こんな考えが求められます。
- ソフトウェアシステムの振る舞いを理解する
- 適切な技術を選択する
- 利用者のニーズを満たす
ビジネスとテクノロジーという、まるでコインの裏表のような要素を理解する必要があるのです。
優れたソフトウェアアーキテクトたちは、どのような考えでその役割を担うのでしょうか。至高のエッセイ集を読み解きましょう。
『ソフトウェアアーキテクトが知るべき97のこと』とは
ソフトウェアアーキテクトによるエッセイ集
書籍『ソフトウェアアーキテクトが知るべき97のこと』には、優れたソフトウェアアーキテクトたちによる97本のエッセイが詰め込まれています。日本語訳版には、さらに日本人アーキテクトが書いた11本もプラスされています。
それらは、アーキテクト達の豊富な経験に裏打ちされた至高のエッセイです。あなたがアーキテクト(もしくはプロジェクトリーダー)となり悩んだ時、なにかのヒントが得られるでしょう。
どこからでも気軽に読める
エッセイは、いずれも1~2ページで完結しています。ページの始めから読むのもよいですし、目次を見て気になったエッセイから読み進めることもできます。
エッセイの例
ソフトウェアアーキテクトとなるとき、あなたが優秀なプログラマであるほど気をつけておくポイントがあります。そんなエッセイを3つほどご紹介。
問題を解こうとするな
プログラミングには問題が発生します。バグで動かない、誤った結果が出る、処理が遅い…。どれも難解な問題です。解決へのチャレンジは魅力的で、人の心を誘惑します。
優秀なプログラマーは、問題を解くことに集中するよう、鍛えられています。それゆえ、この問題に果たして意味があるのかを考えず、問題解決モードに入ってしまいます。
アーキテクチャの視線からすると、最良の解決は、解決しないこと。問題を変えられないかを考えるのです。
これは管理者の実体験です。「2000ステップのプログラムが、謎のエラーで動かない」という問題への対処で、エラーを直すのでなく、その箇所をオープンソースライブラリに丸ごと置き換えたことがあります。
問題は解決し、さらに2000ステップのプログラムが100ステップになりました。
エッセイではこう説いています。問題に対する答えを考える前に、この問題がなければ世界がどのように見えるのか、を考えること。
「よいアイデア」を避けよ
「よいアイデアは、プロジェクトを破壊する」。刺激的な言葉から、このエッセイは始まります。
よいアイデアとは、
- 魅力的で
- 頭を使う必要がなくて
- 問題などなさそうで
- 間違っても痛い目にあいそうもない
そんなアイデアのこと。
プロジェクトの途中で、誰かが「よいアイデア」を持ってきます。プロジェクトに取り入れます。素晴らしい結果をもたらすはずです。
ところが、その「よいアイデア」、意外とコードに与える影響が大きいことに気づきはじめます。それを実現するために、ほかの「よいアイデア」も必要になってきます。
作業が増えていきます。日程が少しづつ遅れます。プロジェクトの終わりが、見えなくなっていくのです。
ねえ、設計についてずっと考えていたんだけどさ、いいアイデアがあるんだよ!
こんな言葉には要注意。その「よいアイデア」は、あなたのプロジェクトを破壊するものではないか、注意深く考えましょう。
それは交渉だということに気付け
予算削減という話は、よくあります。スポンサーがこんなことを言ってきました。
「この待機サーバーは、必要なのか?」
優秀なプログラマーでもあったアーキテクトは、こう答えてしまいがち。
「確かに待機サーバーがなくてもなんとかなります。ただし、定期メンテナンスとメモリパリティエラーによるクラッシュが起きたときに、システムがダウンしてもかまわなければの話です。まぁ後者はパリティビット付きメモリーを買えばいいので、あと心配なのはOSのクラッシュだけです。これは3.9日に1回起きるので、夜間リスタートが必要になります…」
これは正しいのですが、言ってはいけないことです。スポンサーは、「なんとかなります」の後は何も聞いていません。
正しい答えはこうです。
「はい。必要です。」
そして、ここからが交渉なのです。サーバーの必要性を訴え、交渉のハードルを引き上げるのです。
この交渉の続きは、ぜひエッセイをご覧ください。
まとめ
書籍『ソフトウェアアーキテクトが知るべき97のこと』にあるエッセイには、アーキテクトたちのアイデアが詰まっています。
いままでプログラマーであった人に、トップアーキテクトたちは、大事なことを伝えています。
ソフトウェアアーキテクトは、プログラマーと異なる視線で、世界を見ること
それは、すでに優れたプログラマとして活躍してきたあなたになら、きっと可能なことでしょう。
コメント