web-dev-qa-db-ja.com

コードメンテナの役割からどのように脱却しますか?

私の最後の3つの仕事では、私はコードのメンテナーでした。 3つのケースすべてで、私は採用されましたafterプロジェクトのコードの大部分はすでに記述されています。

私は独学のプログラマーです。私が初めてプロとしての仕事を始める前に、自分のベルトの下で数十のプロジェクトを開始し、成功裏に出荷しました。

新しいコードの作成と既存のコードの保守は、2つのまったく異なる仕事です。航空エンジニアと航空機整備士を比較するようなものです。

それは特に、あなたが飛行機を何らかの方法で論理的または保守しやすいように設計することを試みなかったエンジニアによって設計された飛行機で作業している航空機整備士である場合には、うんざりします。

私はプロジェクトが最初に始まるときに周りにいるように感じ始めています。あなたはそれらの1人でなければなりません特別何らかの形でコンピューターサイエンスの分野の他の人々を超越しています。その立場になるには何が必要ですか?

この質問には簡単な答えはないようですが、誰かに洞察を与えることはできますか?新しいプロジェクトの1階に行ったことがありますか?そこにたどり着くまでに何がかかりましたか?

13
nbv4

メンテナンスは人によって異なることを意味し、さまざまな理由で発生します。

  • 最悪の場合、最初のシステムが急いでまとめられ、最初のチームがすべてを担当しました。彼らは80/20の規則に従っていたので、販売できる最低限の実行可能な製品があるかもしれませんが、多くの顧客は多くの修正と小さな改善を必要としています。多くの問題がありますが、栄光はあまり残っていません。あなたは一番大変な仕事をしていて、感謝しています。これがあなたの状況ではないことを願っています。
  • より良いケースでは、作業に注意を払い、フィールド製品を壊さずに変更できると信頼できることを示しました。残っている問題は、元のシステムを一緒にハンマーで打った人々にとっては難しすぎます。多分彼らはシステムを長持ちさせるのに失敗しました、そしておそらくあなたは彼らの代わりとして、物事を正しく設定し、顧客、プロジェクト、そして利益を救うためにそこにいます。
  • ほとんどの場合、プロジェクトのコストの60%はメンテナンス中に発生します。おそらくそれはタイミングであり、おそらく組織は新しい開発と保守を分離していますが、私たちの多くが保守を行っているため、あなたは3/5にいます。

ここでいくつかのことを試してみてください:

  • 素晴らしい仕事をし、素晴らしい態度をとり、アイデアのリーダーになります。
  • 一人でではなく、できるだけチームで作業してください。
  • 新しい言語を学ぶ。
  • 新しいプラットフォームについて学びます。
  • 小規模なプログラムでの作業を依頼します。小規模な企業にも適用できます。
  • 熟練し、ドキュメントに参加してください。プロジェクトが始まると、ウォーターフォール後の時代でも、要件をロードマップし、文書化し、評価し、明確にするために、多くの文書による調整が必要になります。
  • 要件管理、見積もり、リスク評価を理解していない人の手でプロジェクトを開始するのは危険なので、これらのスキルをできる限り学び、実践してください。
  • より正式なトレーニングまたは認定を取得します。これにより、ステータスが向上し、新しい開発プロジェクトのチームが結成されたときに、より魅力的な選択肢になります。
  • 会社またはいくつかのコンサルティングを開始します。これにより、お気に入りの種類の作業を対象とするクリエイティブなアウトレットが得られ、コードやドキュメントなしで開始するのがどのようなものかをよりよく理解できます。
  • 上司や新しいプロジェクトを計画している人に近づきます。
  • 逆に、テスターやQAに非常に近い場合、それらの出力はメンテナンスへの入力になることが多いので、上司があなたが本当にうまく働いていると誰が思うと思いますか?
  • できるだけ多くの友達を作り、できるだけ多くのグリーンフィールド開発者の尊敬を勝ち取りましょう。
  • 新しい開発者は人々にできることなので、批判や否定のヒントについては注意してください。彼らにあなたの考えを自由に非難または判断なしで与えてください。あなたのアイデアは紹介する必要はありません、ただ彼らに言ってください。言うまでもありませんが、以前はこの方法で行っていましたが、うまくいかない場合は、これを試してください。言わないでください、わかりませんが、これでうまくいくかもしれません。アイデアを言ってください。またはそれ以上を示します。
  • 新しいプロジェクトに変わる可能性のある概念実証を見つけて、機会を見つけてください。
  • 誰があなたに仕事を割り当てるか注意してください。通常、それはあなたの指揮系統の誰かである必要があります。同僚の場合は、しばらくプッシュバックしてください。それがあなたが監督する誰かであるならば、コントロールが逆転している正当な理由がある必要があります。 QAまたはテストの場合は、それがコマンドチェーンの問題であり、以前に約束した作業を遅らせるような方法でスケジュールされていないことを確認してください。
  • 完璧に注意してください。新しい開発は、たとえ目を横切ってtに点を打たなくても、多くの場合、速い人のために予約されています。
  • 自分の開発ラインに適した初期のプロジェクトスキルの学習と実践に時間をかけます。これには、ソースリポジトリの作成、ビルド環境の定義、常時統合サーバーの構成、ハードウェアチームと緊密に連携して、ボードサポートパッケージを備えた新しいボードを立ち上げるか、セルフテストで電源を書くことが含まれます。新しい開発ツール、トレーニング、COTSハードウェアを購入するための購入の仕方を知るのに役立つかもしれません。
  • メンテナンスプロジェクトが終了する前に、おそらくチームリーダーやマネージャー、または外部にスキルを社内で購入する前に、先に進んでください。
  • あなたが知っているすべてのテクノロジーに堪能であり、多くのテクノロジーを知っている。

保守の役割は、いくつかの方法であなたの利点に変えることができます。

  • グループまたは会社が作成するすべてのプロジェクトに潜在的に取り組むことができます。
  • 新しい開発と保守が分離されている場合、競争力の低いリーダーシップトラックをたどることができます。新しいプロジェクトのリードは非常に切望されていますが、メンテナンスリードがあなたの質問に利用できるかもしれません。あなたが与えるための励ましとメンタリングを持っている場合、そのチームのメンバーはそれをもっと感謝するかもしれません。
  • プロジェクトがメンテナンス中である場合は、顧客とやり取りする可能性が高くなります。間違って扱われると、これはキャリアを終了します。適切に処理され、それはマネージャー以外では見つけるのが難しい開発以外の積極的な注目を集めます。

これをすべて言っても、私はロールモデルではなく反例です。この視点の多くは、経験と観察から来ています。

まだ作成する必要がある多くの新しいプログラムがあります。
準備ができていれば、意外とすぐに作業ができるようになります。

6
DeveloperDon

私はあなたに悪いニュースを持っています:人類のニーズの多くのアプリケーションはすでに書かれています、それはそれらが常に変化する環境に微調整されるべきであるということだけです。

いつか、新しいモジュールなど、システムの新しい部分を書くように求められ、グリーンフィールド開発に関する知識を活用できます。

それまでは、レガシーアプリケーションをリファクタリングしてモジュールをクリーンアップする方法を学ぶことができます。

レガシーアプリケーションの操作」と「パターンへのリファクタリング )」元のRefactoring(Fowler)を読んでいない場合は、読んでください。そして、テスト駆動開発(TDD)を学び、常に役立ちます。

PHPを使用している場合のために、私は ハンズオン記事 を記述しました。このコードは引き続き実行されます...

楽しんで!

4
Aadaam

脱出する最も簡単な方法は、プログラミングのスタイルを完全に変更し、同時に新しいスキルを追加することです。たとえば、研究者になろうとします。それは最初の年の名誉の仕事ではないかもしれません、そして確かにそれは通常のプログラミングの仕事ほど高額ではありません業界の他の部分とほぼ同じですが、今日見つかる最も困難な問題に取り組むためのスキルは間違いなくあります。そのような仕事の後、あなたは次のボスに見せるためにいくつかの興味深いプロジェクトがあれば、より良いポジションに簡単に飛び込むことができます。

1
paxRoman