web-dev-qa-db-ja.com

専用のメンテナンス作業はプログラマーのキャリアを妨げますか?

過去3年間の私の仕事の大部分は、再販する前にパッチの適用や時折の改造が必要なレガシーシステムの維持に重点を置いています。

多数のプロジェクトと限られた開発者しかいない企業で、専用のメンテナンスプログラマが果たすべき重要な役割を理解しています。

しかし、私は現在のキャリアの進歩を判断し、仲間を見ると、請負業者と企業開発者の両方;触ったことのある領域に関してはかなりの幅があるが、深さはあまりないので、私ははるかに遅れているように感じます。私は、ブログを始め、自分の小さなgit-hubプロジェクトに取り組み、定期的に仕事をした後に個人的なコーディングを行う時間があるように私の人生を再スケジュールすることによって、これに対処し始めました。

他の会社で面接してメンテナンス作業を逃れるようになったと感じます。3年間の経験を持つ人に必要な知識の深さは特にないので、自分はかなり若いスキルレベルである必要があります。機能開発の道はそうするでしょう。ですから、私の現在の仕事の経験の半分は、長い目で見ればまったく役に立たないでしょう。

しかし、これは私の主な質問につながります。これが私の個人的なジレンマに集中しすぎていると感じた場合はお詫びします。

専任のメンテナンスプログラミングの役割は、初期のキャリアにとって有害になりますか?他のプログラマーは、このような役割を回避する権利がありますか?後輩としてやり直す準備ができていない限り、この一連の作業を行うと、同様のタスクを実行するのにロックされますか?

52
Gyurme

専任のメンテナンスプログラミングの役割は、初期のキャリアにとって有害になりますか?他のプログラマーはこのような役割を回避する権利がありますか?後輩としてやり直す準備ができていない限り、この一連の作業を行うと、同様のタスクを実行するようにロックされますか?

最初に、あなたはあなたがかなり後輩であると考えられていることを知っているべきです。あなたは上手であり、これがまともな給与を与える唯一の方法なので、任意の昇進を得るかもしれませんが、あなたが次の仕事に向かうとき、あなたはまだジュニアと見なされます。

第2に、2〜4年の経験を持つ人を雇っている場合、彼らの仕事が純粋にメンテナンスであるかどうかは気にしません。 10年間のメンテナンスに費やしてグリーンフィールドプロジェクトを採用している場合、質問があるかもしれませんが、最初の数年間は正直にそれを期待しています。

一方で、メンテナンスに携わったことがない人を雇うとしたら、もっと疑わしくなります。私は最初の4年間を「良い」仕事から別の仕事にスキップする多くの仕事の候補者を抱えており、すべての人が保守可能なコードの原因について何も学んでいません。そして、間違いなく、私が固執する予定のグリーンフィールドプロジェクトを採用している場合、YOUがコードを維持するかどうかは気にせず、将来の開発者が維持できるようにする方法を知っていることを気にします。

あなたが言及する他のプログラマーは、これらのような仕事を避けますが、一般的に彼らは彼らのキャリアを妨げるのではなく、面白​​くないのでそれらを避けます。

最後に、ソフトウェア開発ジョブの非常に大きな割合(保守的には約80%と推測します)は50%以上のメンテナンスであることを知っておく必要があります。

ですから、これらすべてを切り抜けて、あなたの質問に答えてください。いいえ、それがあなたのキャリアを妨げることはないと思います。あなたがそこに長く滞在しすぎない限り。一般的な経験則は、「毎年同じ年の経験を積んでいるように感じ始めたら、今がその時です」です。毎年、あなたが去年よりも優れた開発者であるように思えるなら、あなたは元気です(そして、それは私にとって、あなたと同じくらい私のキャリアの20年になります)。

69
pdr

どんな仕事でも、あなたが得る経験はあなたがしていることに固有のものであり、その経験に基づいて他の仕事に応募するときの可能性の範囲を制限します。これは、メンテナンスに固有のものではありません。他の質問は、何かがメンテナンスであるか、新しいソフトウェア開発であるかよりも関連があると思います:

  • 使用している特定のテクノロジーはどの程度普及しているか?古く、他ではめったに使用されないものを維持していると、将来のキャリアの機会が制限されます(ただし、システム用の新しいソフトウェアの開発/広く使用されていないプラットフォーム/テクノロジー)。
  • 現在の作業は、将来行う予定の作業にどのように備えていますか?指摘したように、保守作業は重要であり、常に存在します。このタイプのプログラミングに焦点を当てたキャリアを持つことには何の問題もありません。システム管理者にとっては常に多くの可能性があります。 あなたがやりたいことではないかもしれません。あなたの現在の仕事があなたが興味を持っているもののためにあなたを準備していないなら、それは心配です。

しかし、私はあまり心配していません。あなたが言うことの一つは:

私は、これまでに触れた領域に関してはかなりの幅を獲得しましたが、深さはあまりありませんでした。

これはあなたの利益のために使用することができるので、これを問題として考えないでください。幅広い経験を持っているということは、「そうです、私はそれをやった」と言うことができることの広い範囲があることを意味します。多くの仕事が、いくつかの異なるテクノロジーやタスクの経験を求めています。 1つのテクノロジで非常に深い経験を持つ開発者よりも有利になるでしょう。

さらに、多くの仕事はメンテナンスと新開発の混合を伴います。さらに新しい開発を行いたい場合は、既存のメンテナンスエクスペリエンスを使用して、より多くの開発エクスペリエンスを提供する混合ロールに移行できます。

結論として、あなたの履歴書はあなたが思っているよりも良いでしょう。その多くは、経験の強みをどれだけうまく分析して、応募と面接のプロセスでそれらの長所を伝えるかによって決まります。

13
user82096

専任のメンテナンスプログラミングの役割は、初期のキャリアにとって有害になりますか?

ほとんどの場合-はい、想定します:

  • ここでキャリアとは、さまざまな技術スキルの専門知識を意味します。
  • あなたはそこでX年以上過ごしました。Xはあなたの考え方を「設定」するのに十分です。
  • あなたが脇に何もしないこと。
  • 「専用のメンテナ」(下記の編集を参照)は、保守するコードおよび新しいものをコーディングしないことを意味しますが、ほとんど常に保守または作業するようにコーディングします。メンテナンスモードのプロジェクト-新機能はなく、バグを修正するためにコードを変更する必要はほとんどありません。

これが常にであるという意味ではありません。

ソフトウェアを保守している人はめったに研究を行うことを勧められません(以下の編集を参照)。これは(通常)安定した仕事であり、既存のコードベースに最小限の変更を加える必要があるため、後で問題に取り組む方法を「形成」します。 「コードの変更が少ない=良い」と明示的に述べているソフトウェアを維持するためのポリシーを持っているかなりの数の会社を挙げることができます。もたらす。

他のプログラマーはこのような役割を回避する権利がありますか?

私は自分の仕事が好きで、他の何かに応募したくないので、どこにいても快適なので、非常に優れたメンテナを知っています。誰もが時々新しいことを学びたいとは限りません。だから-あなたの好みに応じてそれを避けるか探してください。

後輩としてやり直す準備ができていない限り、この一連の作業を行うと、同様のタスクを実行するのにロックされますか?

多くの場合-はい。すでに「ロープを知っている」などの経験があるためです。しかし、シフトは間違いなく可能であり、ジュニアポジションを申請しなくても発生する可能性があります。あなたはすでに別のことをやっています、それを続けてください!これは実際には非常に価値があり、気づいた「スキルギャップ」を減らすことができます。


編集:ダンは、(非常に正しい)メンテナンスタスクは、多くの場合、研究で実行できることを指摘しました。それは本当です。これに対処するために、2つの場所で上記の答えを変更しました。

このようなタスクは確実にこの方法で実行できます。ただし、AFAIKのレガシーシステムのほとんどの専用保守担当者には、ポリシーまたは管理の期待と期限があります-繰り返しますが、そうでない場合が多い-最小限で問題を解決するように強制します可能な変更。多くの場合、プレッシャーは十分高いため、この方法で実行できても、したくない場合があります。特にそれがあなたのコードではない場合:(RyleとNaurによる)理論がないと、修正する以上に損傷を与えるリスクがあります。

それにもかかわらず、注意する必要があります。私はハードなグローバルデータを持っていません。自分の経験から話します-私はOPのような状況で働いていました。メンテナーとして4〜10年の経験を持つ人を採用し、多くのメンテナーと話しました。 専用のメンテナーとして働いている人々を知っています。新しいものをコーディングする人だけでなく、プロジェクトを保守するためのコードも作成します-専任の保守担当者は、バグとパッチを作成するだけで、1つの新機能すらできません。これは、古いプロジェクトであり、現在は「保守モード」になっているためです。

機能開発の特定のパスに焦点を当てた3年間の経験を持つ人に必要な知識レベルの深さがないので、私は自分がスキルレベルのかなり若いと表現する必要があります。

正しい。 「X、Y、Zを使用したゼロからのシステム設計の3年の経験」とは言えないでしょう。「3年の経験[〜#〜]維持[〜#〜] X、Y、およびZを使用してゼロからシステムを作成します。CVを正しく使用する場合を除きます。

他の会社に面接してメンテナンス作業を逃れるようになったのは、3年間の経験を持つ人に必要な知識の深さがないので、自分はかなりレベルの若いと表現しなければならないような気がします。機能開発のパスは

「システムを一から設計して構築する」と言いたいのであれば、そうです。自分自身をジュニアとして分類する必要があります。

ITで非常に一般的なのは(そしてこれはあなたがしていることだとは言っていませんが)X年間働いてきたので、X年間の経験があり、{不定の数}年後にシニア{ウィジェット}開発者と見なす必要があります。

今、私を誤解しないでください、メンテナンス作業には何も問題はありません、誰もがいつかはそれをしなければなりませんが、あなたが気づいているのは、それをあまりにも長く続けると、あなたが将来その役割から逃れる。これはしばしば、新しい技術/ツール/方法を学ばないことで「行き詰まっている」ことと関係しています。

理想的には、「新しい」システム作業とレガシー作業の混合が必要です。

肯定的な見方をすると、おそらく多くの異なるアーキテクチャー(良いものと悪いもの)、異なるアプローチ、悪い決定がレガシープログラマーを後からずっと懸命に働かせる方法を見てきました。これらはすべて強調することができるよりもポジティブです。

幸運を!

1
ozz

これを別の角度から見ると、メンテナンスの専門家として自分自身を売り込むことは市場に出る機会だと思います。

外出先で複数のプロジェクトを抱えるソフトウェア会社のオーナーとして、私が最小化しなければならない最大のリスクの1つは、出荷を急ぐ開発者とその後のコードのメンテナンスです。

したがって、メンテナンス作業に情熱を傾けることができると想定して(経験についてブログを書く準備ができているので、そうなると思います)、メンテナンスの第一人者としてサービスを提供してくれた場合-すべてを磨くことが保証されます開発者のさまざまなプロジェクトのコードをリファクタリング、最適化、ドキュメント化することで、長期的な保守性を実現します。保証を裏付ける実績がありましたら、すぐに採用します。

私のアドバイスは、これを適切に試すことです。自分をメンテナンスの専門家として位置づけ、ブログを開拓してください。あなたは何かをしているかもしれません。

0
Kosta Kontos