ソフトウェアアーキテクチャのスキルを向上させる方法[終了]


9

ソフトウェアアーキテクチャのスキルを向上させる最良の方法は何ですか?私たちは大学でデザインパターンを教えられましたが、シンプルでわかりやすい例を含む本がたくさんありますが、それらを除いて、どうすれば優れた建築を学ぶことができますか?つまり、どのようにして優れた建築家に進化するのでしょうか。前提条件は何ですか?


4
ハードノックの学校を真剣に試してください...
ジョブ

回答:


20
  1. ネットワーク。優れた建築家と知り合いになる。彼らと話してください。それらから学び、それらからアイデアを跳ね返してください。

  2. 熱心に読んでください。ソフトウェアアーキテクチャに関する書籍は数百冊あります(いくつかの優れた書籍も含まれます)。トピックを読み、関連トピック(建物のアーキテクチャ、管理構造、電気工学、運用アーキテクチャなど)を読みます。

  3. 建築を学ぶ。そこには何千ものプラットフォームと製品があります。それらを見てください。パーツを分解します。私の最高の早い段階での学習のいくつかは見てからだった偉大なアーキテクチャ(例えば、元のドゥームソースではほとんどの言語、圧縮ファイル、およびシンプルな構造を見て、)。

  4. 考えて、スケッチして、試してください。架空の問題について設計スキルを練習します。楽しい問題。興味深い問題。

  5. してください。実際のシステムで作業します。それらを出荷します。あなたの悪い決定によって引き起こされる苦痛、あなたがあなたの開発者を引き起こす苦痛を感じて、それから学んでください。優れたアーキテクチャとは、取得する内容、その取得方法、および費用のバランスをとることです。


あなたの意見で最高のリソースは何ですか?
オタク

良い資料を見つける(そしてそれが何であるかを知る)ことは難しい問題であるため、リソースを自分で判断する方法を学ぶことをお勧めします。いつか標準的な教科書(ドメインを定義するもの)を見て、他の人が優れたアーキテクチャだと考えるものを見る必要があると言えます。キヤノンや既知の優れたアーキテクチャには同意できないかもしれませんが、ここから考え始めることができます。
Bruce Alderson、2011年

6

個人的には、読んだことよりも純粋な試行錯誤から多くを学んだと思います。クレイジーなアイデアがどれほど優れているか、そして素晴らしいアイデアがいくつあるか驚くかもしれません。しかし、あなたが試すまでそれを知ることはありません。これは、最初にコードを書き始めたときも、途中まで行ったときも同じです。すでに決めている理由だけで機能しないアーキテクチャに固執しないでください。

最後に、時間をかけてソリューションをじっくりと考えてください。物事をじっくり考えずにコーディングを始めるよう圧力をかけている同僚やマネージャーの話を聞かないように最善を尽くしてください。


+1思考が最も重要です。UMLで考えをスケッチしてみてください。問題をできるだけ具体的に考えます。デザインにはコーディングの2倍の時間がかかると思います
didxga

2

コーダーは問題の解決について考えます。アーキテクトは、ソリューションの維持について考え、ソリューションに課す実装を制限し、時間の許す限り改善する実装の領域、スケジュールがずれた場合に省略または適用範囲を減らすことができる実装の領域、依存関係(内部および外部の両方) )実装のパフォーマンスに影響を与える可能性があり、リスクのエクスポージャーを制限するために実行できること、システムの新規ユーザーに必要なトレーニング、開発中のドキュメント、実装が想定されたソリューションから逸脱したときに必要な変更、および利害関係者は、行われている進歩と、解決されている実際の問題への実装の適用可能性について感じています。

アーキテクトであるためには、効果的にコミュニケーションをとり、考えや計画を実行可能なスケジュールに編成し、問題を実装可能な部分に分解し、技術的に困難な部分のプロトタイプを構築し、すべてが時間通りに完了するように部分の実装を調整する必要があります。

Enterprise ArchitectVisio、または鉛筆と紙を使用してソリューションを図解する方法を学びます。他の回答で述べたように、アーキテクトのメンターを取得し、レビューのためにソリューションダイアグラムを彼らと共有します。フィードバックを聞いて、図を修正します。

現実的なスケジュールを構築する方法を学びます。実装にかかる時間の追跡を開始し、どれだけ時間がかかるかを正確に見積もるのにどれだけ近いかを追跡します。

コーディングを開始する前に次の課題を細かく分割し、省略した手順を追跡します。最終的なソリューションのコーディングを開始する前に、問題のある領域を予測してプロトタイプを作成する方法を学びます。

同様の質問に対するこの回答Pierre 303によってリンクされた記事は、ここにも追加する価値があります。

マーティンファウラーの建築家が必要な人

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.