回答:
ネットワーク。優れた建築家と知り合いになる。彼らと話してください。それらから学び、それらからアイデアを跳ね返してください。
熱心に読んでください。ソフトウェアアーキテクチャに関する書籍は数百冊あります(いくつかの優れた書籍も含まれます)。トピックを読み、関連トピック(建物のアーキテクチャ、管理構造、電気工学、運用アーキテクチャなど)を読みます。
建築を学ぶ。そこには何千ものプラットフォームと製品があります。それらを見てください。パーツを分解します。私の最高の早い段階での学習のいくつかは見てからだった偉大なアーキテクチャ(例えば、元のドゥームソースではほとんどの言語、圧縮ファイル、およびシンプルな構造を見て、)。
考えて、スケッチして、試してください。架空の問題について設計スキルを練習します。楽しい問題。興味深い問題。
してください。実際のシステムで作業します。それらを出荷します。あなたの悪い決定によって引き起こされる苦痛、あなたがあなたの開発者を引き起こす苦痛を感じて、それから学んでください。優れたアーキテクチャとは、取得する内容、その取得方法、および費用のバランスをとることです。
個人的には、読んだことよりも純粋な試行錯誤から多くを学んだと思います。クレイジーなアイデアがどれほど優れているか、そして素晴らしいアイデアがいくつあるか驚くかもしれません。しかし、あなたが試すまでそれを知ることはありません。これは、最初にコードを書き始めたときも、途中まで行ったときも同じです。すでに決めている理由だけで機能しないアーキテクチャに固執しないでください。
最後に、時間をかけてソリューションをじっくりと考えてください。物事をじっくり考えずにコーディングを始めるよう圧力をかけている同僚やマネージャーの話を聞かないように最善を尽くしてください。
コーダーは問題の解決について考えます。アーキテクトは、ソリューションの維持について考え、ソリューションに課す実装を制限し、時間の許す限り改善する実装の領域、スケジュールがずれた場合に省略または適用範囲を減らすことができる実装の領域、依存関係(内部および外部の両方) )実装のパフォーマンスに影響を与える可能性があり、リスクのエクスポージャーを制限するために実行できること、システムの新規ユーザーに必要なトレーニング、開発中のドキュメント、実装が想定されたソリューションから逸脱したときに必要な変更、および利害関係者は、行われている進歩と、解決されている実際の問題への実装の適用可能性について感じています。
アーキテクトであるためには、効果的にコミュニケーションをとり、考えや計画を実行可能なスケジュールに編成し、問題を実装可能な部分に分解し、技術的に困難な部分のプロトタイプを構築し、すべてが時間通りに完了するように部分の実装を調整する必要があります。
Enterprise Architect、Visio、または鉛筆と紙を使用してソリューションを図解する方法を学びます。他の回答で述べたように、アーキテクトのメンターを取得し、レビューのためにソリューションダイアグラムを彼らと共有します。フィードバックを聞いて、図を修正します。
現実的なスケジュールを構築する方法を学びます。実装にかかる時間の追跡を開始し、どれだけ時間がかかるかを正確に見積もるのにどれだけ近いかを追跡します。
コーディングを開始する前に次の課題を細かく分割し、省略した手順を追跡します。最終的なソリューションのコーディングを開始する前に、問題のある領域を予測してプロトタイプを作成する方法を学びます。
同様の質問に対するこの回答でPierre 303によってリンクされた記事は、ここにも追加する価値があります。
マーティンファウラーの建築家が必要な人