扱いにくいプロセスや質の低いソフトウェアなしで、多くの開発者がどのようにソフトウェアを一緒に書くことができますか?
-
30-09-2019 - |
質問
私は、本質的に同じ製品のためにソフトウェアを書いている何百人もの人々がいる会社で働いています。多くの人がそれに依存しているため、ソフトウェアの品質は高い必要があります(特に開発者自身)。このため、すべての主要な問題により、自動化されたものまたはマニュアルのいずれかが新しいチェックが行われました。
その結果、ソフトウェアを配信するプロセスはますます負担になりつつあります。そのため、より多くの開発者が必要です...まあ、あなたはそれが悪循環であることがわかります。
これで、ソフトウェアを迅速にリリースすることに問題があります。非常に深刻な問題のために1行のコードを変更するリードタイムは、少なくとも1日です。
ソフトウェアの品質を維持しながら、大規模な組織でのソフトウェアの配信をスピードアップするためにどのようなテクニックを使用していますか?
解決
また、大規模で面倒な組織で働いています。いくつかの実装を成功させました アジャイルソフトウェア開発 方法論ですが、特に2つの2つがあります。
反復的および増分開発 - リリースサイクルを短くてタイトに保ちます。大規模なチームで、リリースの間に多数の変更が加えられている場合、統合の悪夢に自分自身を見つけることができます。
大規模な組織は、長い開発タイムラインで大きなプロジェクト計画に傾いています。これと戦う。プロジェクトの計画は、開発の最初の2週間後にあなたの全体的な認識が変わる可能性がある場合、意味はありません。利害関係者を条件として、小さな増分リリースを行い、絶えず変化する要件に適応するというアイデアに慣れるようにします。
自動ユニットテスト - これは、高品質のソフトウェアをリリースしていることを保証する素晴らしい方法です。最悪のバグは、他の場所で意図しない結果をもたらす一見無邪気なコードの変更によって引き起こされます。包括的なユニットテストは、この種のバグをキャッチするための最良の方法かもしれません。卒業できる場合 テスト駆動型開発 また 行動駆動型開発, 、さらに良い。
大規模な組織には、平凡な開発者がいます。それは人生の事実です。自動化されたユニットテストは、それらに注意するのに最適な方法です。あなたのより良い開発者の一人に彼らのために彼らのユニットテストを書いてもらいます。少なくとも彼らのコードが機能することを保証するでしょう(醜い場合でも)。
他のヒント
見る 継続的インテグレーション
読んでください ジョエルテスト:コードを改善するための12ステップ.
プロセスを改善するには多くの方法がありますが、重要なコンポーネントは モジュール性. 。責任(コードと組織内の両方)を明確に分離し、明確で一貫したインターフェイスを定義することにより、1つの大規模なチームがすべて一緒に結び付けられた多くの小さなチームが働くことができます。
賢明だが悲観的なことわざ:
フレッド・ブルックス: プログラマーを遅いプロジェクトに追加すると、後でそれを行うことができます.
Gerry Sussman:プログラマーは、抵抗器を並行して組み合わせます。
他の誰か:プロジェクトのコストは、スケジュールの長さのプログラマーの数です。
うまくいくかもしれない何か:
プロジェクトを整理して、1人または2人によって構築されたコアアプリケーションが存在するように、できれば言語を介して運用されます。次に、すべてのプログラマーを効果的にします ユーザー その言語でコーディングすることにより、コアの。