現在、私は有料のインターンシップに参加しており、過去5年間にわたって(異なる時期に)複数の開発者によって開発された古いシステムを維持する任務を負っています。経営陣は「システムは生命維持中」に同意しており、現在システムを使用しているエンドユーザーからかなり定期的にバグ報告を受け取っています。
このシステムは、人々がまだ使用していて、ビジネスアクティビティをサポートしている場合、時代遅れではありません。まだ使用されているので、ビジネスはそれを捨てることができません-システムの必要性がなくなるまでサポートする必要があります。それは、ビジネス目標の変更、または新しいシステムの開発、テスト、およびエンドユーザーへの展開が成功した可能性があります。
本当に、5年はそれほど長くありません。私は10年前のコードを使用したことがあります。それでもユーザーのニーズに応えている場合、なぜそれを捨てるのですか?それはそれを開発するために費やされた多くのお金を捨てています。コストの増加のために維持できなくなるか、要件が大幅に変わるまで、それを捨てるビジネス上の理由はありません。
現在、経営陣はプロジェクトをさらに1年間延長したいと考えており、その過程でユーザーベースのほぼ3倍になります。
このシステムは「生命維持装置」であると経営者が言う場合、なぜ彼らはそれをさらに展開しようとしているのですか?保守作業は、交換されるまでレガシーシステムで継続するのが一般的ですが、システムが寿命に達した場合、通常はより多くの人に展開されません。メンテナンスの延長は1つのことですが、システムに依存するユーザーを追加することは、すべて異なる状況です。
私には、それは実際には寿命ではなく、むしろメンテナンス段階にあり、システムがユーザーのニーズを満たさなくなるまでそこにあり続けるようです。
インターン(または任意のエントリーレベルのポジション)として、「プッシュバック」する方法を教えてください。オープンエンドの文書ではありますが、私は懸念を述べた報告書をすでに書いています。変更を提案するためのプロトコルまたはドキュメントタイプはありますか?私は提案をする立場にありますか、それとも単に古いシステムをサポートし続けるべきですか?
古いシステムを引き続きサポートする必要があります。後で、あなたはソフトウェアがあなたの会社の主要なビジネスではないことに言及します。このような環境では、ソフトウェアチームの仕事は会社の主要なビジネスをサポートすることです。ただし、ソフトウェアチームはビジネス目標を念頭に置く必要もあります。
それまでの間、あなたの提案を誇張しない方法で記録してください。システムと統合できる、または新しいシステムが作成された場合/使用された場合に使用される可能性のある他の技術または技術とそれらの長所/短所を指摘します。これをどのように行うかは会社によって異なりますが、後のいくつかの点を考慮すると、おそらくwikiまたは他の共同サイトを確立することが役立つでしょう。
ソフトウェア以外のビジネスでは、ソフトウェアはコストであり、ソフトウェアチーム(特にソフトウェアプロジェクト/プログラムマネージャー)は、エンドユーザーのニーズをサポートしながら、ソフトウェアシステムの構築と保守のコストを可能な限り最小化するように努力する必要があります。(私が知る限り、投稿からとにかく)ユーザーのニーズを満たすソフトウェアを捨てることは、ソフトウェアチームの最大の利益に反します。
*明確にするために、ソフトウェア開発は私の会社の主要なビジネスではありません。そのため、内部プロトコルは存在しません。さらに、プロジェクトには正式なドキュメントは一切なく、要件ドキュメントもありません。開発は非常にアドホックです。
私には、これが問題です。文書を作成せず、仕様に合わせて開発することも、一貫性を欠くと、ソフトウェア開発のコストが増加する傾向があります。これを修正することは私の最優先事項であり、コーディング標準、バージョン管理、自己文書化コードと設計文書の作成、欠陥追跡、要件仕様などに取り組むことでそれを行います。