私たちは、かなり古く、プログラミング初期の言語で書かれたレガシー コードに取り組んでいるチームです。チーム メンバーは最新のテクノロジのトレーニングを受けており、現在はレガシー コードに取り組まれているため、満足していません。レガシーコードでも働くように彼らを動機付けるにはどうすればよいですか?
11 に答える
チームを派遣してユーザーに会い、ユーザーがソフトウェアを使用するのを見てください。彼らは、ユーザーがそのソフトウェアで抱えている最も重大な問題を見つける必要があります。
ユーザーを知ることで、作業がより現実的になります。チームは、新しい機能を追加したり、いくつかのバグを排除したりすることで、実際の人に役立つことを理解できます。それは、プログラマーが退屈な仕事を成し遂げる動機となるはずです。
現金だけでは開発者を幸せにすることはできません。彼らが彼らの仕事に注意を払うことができるように、あなたは彼らに良い環境を提供するべきです。
もう1つのことは、テクノロジーが悪い、レガシー、または古いということはありません。あなたの会社がそれを維持する必要があるなら、あなたはそれを続けなければなりません。ただし、設計、コーディング、テスト、コードレビュー、インタラクティブセッションなどのすべての標準を維持してください。
また、パフォーマンスと保守性を向上させるために、レガシーコードを新しいプラットフォームに変換するように動機付けることができます。他の市場の製品と競争したいので、私が思うに、すべての会社は一度でもそれをします。
また、あなたの会社で使用されているが、彼らが知らない、または使用していない他のテクノロジーのためのいくつかのクールなセッションを提供します。彼らに物事に深く入り込み、問題解決のための適切な時間とサポートを与えましょう。主な目標は、手直しやバグを減らして時間どおりに納品することです。
彼らの仕事にいくつかの報酬を提供し、彼らの仕事に満足してください。
ありがとう。
私は「チームを送ってユーザーに会い、ソフトウェアを使ってユーザーを見る」が本当に好きです。
チームにやる気を起こさせる必要がある場合は、開発者に実際に使用法を訪問して、ユーザーが製品にどれだけ満足しているかを確認するように依頼します。
どうすれば既存のものよりも良くできるか、本当に挑戦したいと思います。
たとえば、テスト側で派手なことを試みることができます。モック フレームワークなどを試してください。
また、堅実なプログラマーになりたい場合は、すべてのテクノロジが最終的にレガシーになるため、レガシー コードを処理することは良い経験になることを強調してください。
近い将来、レガシー コードを廃止する余地はありますか? もしそうなら、「...までこれを続ければいい」というのは、ピルを甘くするかもしれません.
チーム メンバーは、レガシー コードが記述されている言語/環境の経験がありますか? そうでない場合は、操作方法がわからないことをするのが単に嫌なだけかもしれません。おそらく、彼らが少なくとも一過性の親しみを得るために、しばらくの間スケジュールを立てることが適切かもしれません。最新のテクノロジーからのパラダイム シフトがそれほど大きくなければ、それほど難しいことではないはずです。
現金は答えではありません。無料の食べ物、ソフト ドリンク、何でも、レガシー コード作業の単調な作業を軽減するだけです。彼らの視点を変えようとするのはどうですか?
「誰でも、リファクタリングが組み込まれた優れた IDE を備えた最新のコードを使用して優れた作業を行うことができます。Google で検索するだけで大量のリソースを利用できますが、私たちは少数の兄弟を誇りに思っており、古代の手続き型言語でこれを行うのに十分な能力を持っています。 . 私たちはこのひどい混乱したコードを手なずけ、後ろ手に片手でそれを行い、プロセスとツールを作成して、次の貧しい野郎がそれほどひどいことをしないようにします.」
チーム メンバーはレガシー コード チームでのみ作業を許可されていますか、それとも時間を別のプロジェクトに分割できますか? FORTRAN のデバッグに 1 週間 40 時間を費やすことに満足している人はいないと思います。しかし、実際に楽しんでいる何かに取り組むために日中に休憩を取ることができることを知っていれば、レガシー コードに数時間を費やさなければならない場合は、苦痛は少し軽減されます。
また、チーム メンバーが古いテクノロジを導入する前に、古いテクノロジについて学び、経験を積む時間を確保することについて、前に述べたことを繰り返します。トレーニングも楽しくなるように心がけましょう。私たちのレガシー コード トレーニングは、私たちが取り組んでいるコードだけを見るのではなく、興味深い問題に対して誰が最速/最短/最も完全/その他の解決策を思い付くことができるかを競うものとして設定されました。本当に、トレーニングのために確保する時間がなくても、それはチームの計画に適用できます. 目の前のタスクに少しの競争を追加するか、挑戦的で競争力のあるサイドプロジェクトに少し時間を割いてください.
これらのレガシー製品に取り組むことに対して、彼らはどのように報酬を得ていますか? 何が彼らを動機付けているか知っていますか?タイムリーな評価と賞賛を好む人もいれば、現金や、これは必ずしも最初に仕事に就いたときにサインアップしたものではないという理解を期待する人もいます. 1 対 1 のミーティングを開いて、彼らがより幸せになるために何が必要かを確認することを提案したくなるでしょう。それはより多くのお金ですか?休暇の柔軟性が高まる?レガシーテクノロジーのトレーニング?彼らがこれらの古代のシステムでうまく機能していることを確認すると、最初のプログラミングの日々は、メインフレームやその他の非常に古いツールを思い起こさせ、「これは実際にどれくらい長く実行されるのだろうか?」と疑問に思うかもしれません。
開発者から最もポジティブな感情をレガシー コーディングに引き付ける最も簡単な方法は、何らかの方法で古いものを新しくすることだと思います。
セッションを 1 回か 2 回行って、レガシー コードが何を行っているかを特定し、新しいアーキテクチャでそれを新たに行うには何が必要かを理解してください。「新しいアーキテクチャ」の部分が重要です。9/10 の割合で、恐れられているのはアーキテクチャ (スパゲッティ コード、標準化前の規則など) であるためです。
書き直しの見積もりが承認されない場合は、少なくとも、レガシー コードのリファクタリングを日常のメンテナンスに組み込む計画を立ててください。少なくとも、開発者は、誰も思い出したくない古い崩壊を単にモンキーレンチするのではなく、何か、そして何か新しいものに向かって取り組んでいるように感じます。
ちょうど私の2¢。
無料で利用できるリソース、IDE、専門知識、フレームワークなどの量を考えると、チームのやる気を引き出し、レガシーコードを学び、それを中途半端に修正するのに必要な時間は、新しいプラットフォームで同じものを構築するために簡単に使用できます。良いニュースですが、システムが整っているので、新しいプラットフォームで同じ動作を満たす必要があります。動作とユーザーエクスペリエンスがわからない製品のために何か新しいものを構築する必要があるのとは異なります。
余分な現金?:)他に何も知らない...
それが新しいテクノロジーのレガシーコードであっても、そのようなコードに取り組むのは必ずしも楽しいことではないので、「初期のテクノロジー」について... 唯一の動機は、最近のプログラミングがどのようであったかを発見することだと思います...