少し背景:
私はWindows XPを使用し、VB6/VB.NetでWinformsをコーディングし、VB.NetでいくつかのWebFormsをコーディングしています(95%メンテナンスコード)。私は4:3 19を1つ持っています。 "画面。より新しいバージョンのWindowsがすぐにリリースされることはありません。また、その音によるグリーンフィールド作業もありません。
私が入社したとき、私はこれについて何も言われませんでした、私はもっともっと最新の技術とフレームワークで仕事をするだろうと誤解しました。
私は以前の仕事からの最新の経験を持っています。より近代的なフレームワークと他のプログラミング言語の両方で、他の会社の開発者の友達に追いついているとき、彼らが最新のASP MVCフレームワーク、またはVagrant/Ruby on Rails/etcと私は緑色の目をしています!
すぐに別の仕事に取り掛かることができましたが、もう一度チャンスを与えるべきだと思います。
質問:
私は自分の現在の仕事がそれほど悪くないことを自分に納得させようとしています。では、この種の役割の利点は何でしょうか?古いテクノロジーを使用する利点はありますか?たぶん、私がより現代的なもので作業するのをピックアップしないいくつかのテクニック?それとも、キャリアが死にそうな場所なのでしょうか?
私が聞いたのは、彼らが最新のASP MVCフレームワーク、またはVagrant/Ruby on Rails/etcをどのように使用しているかということだけです。
ああ、でも彼らはおもちゃで遊んでいて、あなたは実際の仕事をしていて、解決策を達成するための仕事をするツールを使っています。
それはあなたが考慮しなければならないことです-ソフトウェアは、クールな新技術から次の最新のファッションにジャンプする人々とのアマチュアの問題です。それから、あなたが作成する製品やソリューションほどツールが重要ではない、よりプロフェッショナルなキャリアとしてそれを扱う人がいます。
古い技術を新しいものと交換する必要がある場所がありますが、一般的には単なるアップグレードであり、卸売りの交換ではありません。たとえば、VB6はVB.NETにアップグレードされ、Visual Studio 2002はVisual Studio 2012にアップグレードされます。完全な書き直しに取り組む人は、新しいツールを使用しても、それほど素晴らしいものではないことに気づきます。 (そのため、とりわけJoelは、書き換えは常に間違った答えであると言います)
だから、物事の達成に集中し、できる限りアップグレードし、それが理にかなったところにゆっくりと慎重に行ってください-最新のおもちゃで遊んでみたいからではありません昨年クールな技術でコーディングされた人々によって書かれたシステム)
確かに、企業が古いテクノロジーを使い続けることには、いくつかのメリットがあります。
レガシーのものは新しいものでは機能しないことがあります
企業は、新しい言語やオペレーティングシステムでは機能しないシステムに多額の資金を投資した可能性があります。古典的な例は、IE6と互換性のある多くのイントラネットWebアプリ、およびIE6のみです。 Windowsを使用するXP + IE6を使用するか、稼働中のシステムを破棄するか、新しいシステムにお金を投資するかの選択は明らかではありません。
変更のために変更することは賢明な選択ではありません
例:多くの銀行は、もともとCOBOLで書かれたアプリケーションを引き続き維持しています。何かがうまくいったとき、大規模なビジネスクリティカルシステムを書き換えるコストと、それを誤るリスクがあり、新しいバグの束を導入することを考えると、なぜ企業はそれを別の言語で書き直すことにしたのでしょうか。 (理由の1つを以下に示します)
ライセンスは高価です
たとえば、企業がWindows XPを使用するデスクトップを数百台持っているとします。彼らはWindows 8に移行したいと考えています。Windows8 Enterpriseの単一ライセンスのコストはいくらですか?このコストにマシンの数を掛けるとどうなるでしょうか。
サーバーにとってはさらに悪化します。 OracleまたはMicrosoft SQL Serverの1つのライセンスのコストは約3万ドルから4万ドルです。たとえば、50台のデータベースサーバーがある場合、ボリュームライセンスがあってもすぐに非常に高価になります。
私の会社では、Visual Studio 2010に悩まされています。その多数のバグに悩まされており、Microsoftがこのバージョンを放棄したため、これらのバグは決して解決されません。しかし、$ 13 000(他のバージョンでは利用できない独自の機能のためにUltimateバージョンが必要な場合)は、Visual Studio 2013に更新するには高すぎます。
そうは言っても、重要な欠点もあります。
レガシーのものは新しい才能を引き付けません
これは、COBOLアプリを管理している企業の問題の1つです。安価な開発者を見つけるのに苦労しています。また、メインフレームでの作業とCOBOLコードの記述は、クリエイティブな人にとって魅力的なものではありません。
これらのシステムと言語は、安定性を維持する必要があるバックボーンシステムには適していますが、絶え間ない革新が必要な製品には適していません。
古いとは安全を意味するものではありません
製品を新しい言語で書き換えると新しいバグが発生する可能性があるため、サポートされなくなった古いシステムを維持することも危険な場合があります。 Windows 98にバグが見つかり、システム全体が侵害される可能性があると想像してください。Microsoftはそれを解決するアップデートをリリースしますか?
レガシーはバイラル
レガシーシステムと新しいシステムの間の非互換性は、多くの場合、古い製品、言語、またはインフラストラクチャを使い続けると、どこか他の場所にアップグレードできないことを意味します。 IE6でのみ動作する古いイントラネットアプリは、すべてのデスクトップでWindows XP=につながります。つまり、新しいActive Directoryバージョンに移行できません。つまり、新しいアプリを使用できません。最新のActive Directoryバージョンなどが必要です。
生産性
製品の新しいバージョンは、生産性を向上させる新しい機能をもたらします。 Visual Studio 2013と.NET Framework 4.5は、Intellisense、Entity Framework、およびコードを削減する他の何千もの改善された機能を提供するため、Visual Basic 6.0で1時間かかるタスクは、Visual Studio 2013で1時間未満で実行できます。書くために、コードを書く速度を上げ、バグを導入するリスクを減らします。
例が十分に明確でない場合は、次の例をご覧ください。 Windows 3.1では、システム管理者はすべてのマシンを1つずつ手動でセットアップしていました(私が知らない自動化があった場合を除きます)。今日、彼らはPXEとWindowsアセスメント&デプロイメントキットを使用して、数千台のマシンに新しいOSとソフトウェアを数分で自動的にデプロイしました。
古いバージョンを使用すると、コストが非常に高くなる場合があります。 Windows 95の使用に満足している一部のユーザーには明らかではないかもしれませんが、開発者、システム管理者、設計者、科学者、およびハードウェアとアプリケーションの能力に大きく依存している他の人にとってははるかに明白です。
時代遅れのテクノロジーで開発することにはいくつかの利点がありますが、これらがテクノロジーの置き換えによって流暢さを失うことで受けるコストを上回るかどうかは、あなたと彼らの間の個人的な選択です。
廃止され、置き換えられたテクノロジーを使用することの3つの利点を考えることができます。
古いテクノロジー自体の知識
まだ使用されている唯一の古い技術は、誰かがどこかで、交換するよりも維持する方が安価だと判断した技術です。そのような古いテクノロジーの実務経験を列挙できることは、それ自体、同じ分野で働く別の仕事を得るのに役立ちます。そして、ますます多くの開発者が進むにつれて、そのようなものに取り組むためにあなたが請求できるプレミアムは上がります。
何か新しいことを学ぶ練習の機会
他の誰かがあなたに教えた言語でしかプログラミングできないなら、あなたは本当にプログラマーではありません。技術やモデルを古いテクノロジーに適合させるには、新しいテクノロジーに適合させるために必要なスキルとまったく同じものが必要です。
それらが置き換えられた理由のより深い理解
テクノロジー自体に精通していない場合、プログラマーではないHRまたはエグゼクティブタイプにVB.NETまたはC#がVB6より優れている理由を説明するのは困難です。また、後者に完全に精通していない場合は、置き換えられたものを知ることで、置き換えがどのように書かれたのかを理解するのに役立ちます。
上記のすべてが述べたように、時代遅れになったテクノロジーで記述されたアプリケーションの保守に会社が固執する理由は絶対にありません。
文書化されていないバグが原因でランタイムが失敗するまでそのままにしておくことができる場合、それは1つのことですが、開発者が移行計画なしに古い技術に費やす時間は、企業が最終的に支払う必要のある技術的負債です。
ある時点で、会社はVB6のサポート終了を心配する必要がありますが、残念ながらVB.NETにはまだ息が残っています。
単一の小さなモニターで作業する必要がある関連する理由はありますか?これは、十分にテストされたテクノロジーを心配するよりも、会社が安っぽいことのように聞こえます。いくつかの21インチモニターでバグが発生するわけではありません。
あなたのスキルを鋭く保ち、それに対して報酬を得るために、私はあなたのビルド、テスト、デプロイのセットアップを見ることを勧めます。これは、ビルドとデプロイにrake、powershell、nantを使用して、いくつかの新しいテクノロジーの導入を開始する機会になる場合があります。単体テストがない場合は、追加を開始します。
結局のところ、会社がテクノロジー分野に属していない場合、それは常に彼らにとって二次的なものになります。中核事業を保護するために安定性を維持することは、彼らにとって完全に理にかなっています。
私はキャリアのアドバイスをするのを避けます、他の人がベースをカバーしていると確信しています。
高齢者の場合、キャリアの終わりに向かって、古い技術の深い知識を、古いものをまだ使用している会社に販売することは、 最終的に魅力的です。たとえば、 PDP-11の経験がある場合は、カナダに移動することもできます 。
しかし、あなたのキャリアの早い段階で、私は次に進むことをお勧めします。
複数の利点があります。
1)広く使用されていないあいまいなものでなければ、テクノロジに利用できるリソースはたくさんあります。
2)変わらないので、会社の他の人がテクノロジーに精通していることを願っています。
3)新しい開発があまりない場合は、古いコードをよりクリーンで高速なリファクタリングに取り組むことができます。この古い技術を維持しているショップの種類は、それがどれほど忌まわしいものであっても、「機能する」コードを変更することにはおそらく反対することに注意してください。
古くなったテクノロジーの利点は他の回答で十分にカバーされているため、私はこの質問の裏側、つまり新しいテクノロジーを使用することの欠点に集中します。
まだ大きなVisual Studio 6コードベースがあり、すぐに置き換えられるようには見えません。
しかし、私たちは新しい開発のためにできる新しい技術を推進しています。
ご想像のとおり、COMを使用してレガシーVB6コードと非常にうまくインターフェースするVB.NETを作成することができます。
最先端のテクノロジーは生産性に大きなメリットをもたらすことが多いため、間違いなく楽しいものです。ただし、裏側は、数日/数週間前のバグ/不具合に遭遇する可能性があることです。それは、ブリーディングエッジと呼ばれています。
会社がソフトウェアをアップグレードするために現金を手に入れようとしていたとしても、これは(個人的な経験からわかったように)どちらの方法を選択したとしても、少し面倒かもしれません。
ソフトウェアポート
ソフトウェアは書き直されますが、ユーザーを混乱させないために、古いソフトウェアとまったく同じに見える必要があります。新しいテクノロジーを使用する喜びは、新しいGUIウィザードを使用できないという事実によって上書きされます。
Visual Studioの更新
あるバージョンのスタジオでは問題なく機能するコードの不具合を解決するために多くの時間を費やすため、新しい機能を実際に適切に使用することはできません。
機能移行
コア機能を維持したままソフトウェアを移行します。これにより、開発者の観点から最も自由が得られますが、新しい付加価値機能も含まれていない限り、企業がそのような演習の価値に疑問を抱く可能性があるバグが導入される可能性があります。
ほとんどの開発者にとってNirvanaは、最新のテクノロジーに関する質の高いトレーニング、学んだことを実践する機会、そして歯を削ぐグリーンフィールドプロジェクトです。
何をすべきかは主にあなたのタイプによって異なります。好奇心が強い人は常に新しいものを使いたいと思うでしょうが、ラダイトたちは古いテクノロジーが最高だと考えています。私たちのほとんどはその中間にいます。あなたはあなたが快適に感じる場所で運動する必要があります。現状に耐えられると感じた場合は素晴らしいですが、それ以外の場合は、今のところはコインを受け取り、より適切な位置に目を離さないでください。
これは正確にはあなたが求めているものではないかもしれませんが、いくつかの提案があります:
私が最大の利点は、彼らが移行する必要があることに最終的に気づいたときに専門家の面であなたの雇用主にあなたが提供できることだと思います。 XPは廃止される予定です 今年は、IT部門がすでに移行戦略を検討していると思います。 (そうでない場合は、履歴書を準備してください。彼らの会社が長く続くことはないからです。)
そのことを念頭に置いて、OS /プラットフォームの移行と組み合わせて主要なソフトウェアツールセットを移行することの利点のリストをまとめ始めることは賢明かもしれません。新しいテクノロジーに関するROIについて、技術的に精通していない管理チェーンの教育を支援します。あなたのマネージャーは、ウィズバンフレームワークや技術的なおもちゃについてわくわくしませんが、継続的なメンテナンス費用の比較コストに関する長期的な予測に非常に興味があるはずです 、今後の展開など.
同じように、この機会に顧客(ソフトウェアを使用している従業員)の満足度を調べることができます。彼らはどのような改善を期待していますか?どんなバグが彼らを狂わせますか?効率を大幅に向上させる機能は何ですか?テクノロジーへの新しい投資が収益に実証的な影響を与えることを雇用主に示すことができれば、Technical Migration Managerの称号を獲得できるでしょう。
そして、それはどんな履歴書にもよく似合うでしょう。
UPDATE:業界ではあなただけではないようです: " 世界のATMの95%がXPを実行しています "。誤解しないでください:XPは素晴らしいです-私はいつもファンでした。しかし、実際には、セキュリティパッチとアップデートが終了すると、XP銀行にとって実行可能な製品である。あなたの仕事は(銀行の顧客のために)優雅に、しかししつこくマネージャに、最終的にはXP廃止日を過ぎています。@ RobbieDeeのリンクが指摘しているように、2015年7月14日までです。交換システムを設計、実装、および展開するのに十分な時間です(今開始した場合)。
(しかし、企業全体のXPインストールをサインオフしたばかりの人にこのアイデアを売り込もうとしないでください。彼はあなたの味方ではありません。そのような判断で、その役割での彼の日は数えられます。より賢いヘッドが優勢です。)