最後のプロジェクトは、私がソフトウェアデザイナーでした。すべての開発はオフショアでした。成功しました。したがって、このプロセスは機能します。
私は多くのドキュメントを作成しましたが、決して包括的ではなく、ステップバイステップの指示やクラス名、関数名などの詳細な説明も決してありませんでした。たとえば、シーケンス図、ユースケース、ワークフロー、システム、統合を作成しましたダイラグラム、および必要に応じてより詳細な設計ドキュメント。
それは、オフショア開発をどれだけ信頼するかにかかっています。オフショアチームが有能な開発者であると信じています。とはいえ、全体的な方向性を示しましたが、オフショアチームが満足のいくものであると判断した実装の余地を与えました。以前は、より細かく管理されていました。特定の状況では、必要に応じて設計パターンを使用してガイドします。また、私は定期的に彼らが書いたコードのコードレビューと分析を実施し、リファクタリングやクリーンアップの努力を勧めました。また、一部のチームがRVで事故を起こしたため、いくつかのリソースが不足していたため、実装中にストーリーの一部をコーディングすることになりました。
また、このプロセスは、プロジェクトのテクニカルリードの強さと、ビジネス、デザイナー、リード、開発者間のコミュニケーションでのみ成功すると思います。私たちはそれぞれの機能とストーリーについて多くの時間を費やし、オフショアのリード/リソースが要件を熟知していることを確認しました。機能/ストーリーのレビュー中に質問をしていない場合は、いくつかの問題が予想されます。また、業務はサインオフするまで完了したとは見なされませんでした。そのため、すべてがアジャイル開発を管理するツールで追跡されていたため、全員に説明責任が与えられました。
他の答えの1つがすでに示唆しているように、開発プロセスには命名基準(リシャーパールールが組み込まれています)、テストケースカバレッジ(TDD、モッキングなどを使用)が含まれていたため、適切なコーディングプロセスと手順がある場合は増加しますプロジェクトを成功させるチャンス。