私は、COBOL、VB6、C#、Javaなどのいくつかの言語をサポートする会社で働いています。
私は主要な作業にそれらの言語を使用していますが、いくつかのマイナープログラム(スクリプトなど)をPython=タスクのタイプ。
例:アナリストから複雑なCSVファイルが提供され、一部のDBテーブルにデータが入力されるため、Pythonを使用してそれを解析し、DBスクリプトを作成します。
どうしたの?
私が目にする主な問題は、これらの迅速で汚いスクリプトのいくつかの部分が徐々に重要性を増していることです。
アナリストはそれらを電子メールで参照し始めた( "エクスポートするスクリプトを起動する...")ため、当初考えていたよりも頻繁に必要とされます。
これらのスクリプトは、メインプロジェクトの一部ではない単なるユーティリティであることを付け加えておきます。単純なタスクを短時間で実行できるようにするだけです。私自身の小さな仕事では、彼らは多くのことを助けてくれます。
つまり、私が宝くじ当選者だった場合 事故に遭う、私の同僚はこれらのスクリプトなしでプロジェクトを存続させる必要があります。たとえば、CSVエラーを手動で修正するのにより多くの時間を費やすことになります。
これは一般的なシナリオですか?私は何か間違ったことをしていますか?私は何をすべきか?
それは実際にはこの時点に到達していないはずなので、状況を形式化する必要があります。ただし、これらのことが発生するため、これらのスクリプトを個人用に作成したことを上司に説明する必要がありますが、これらのスクリプトはより広範囲に「エスケープ」されています。 (必要に応じて)これをすぐに彼の注意に向けないのはあなたのせいだったことを認めます。
少なくとも、スクリプトは "念のため"にソース管理下に置く必要があります。少なくとも(理由が何であれ)利用できない場合は、同僚がスクリプトにアクセスできます。
次に、上司にPythonがこれらの方法になるための方法であることを説得するか、サポートされている言語でそれらを書き直す必要があることを受け入れる必要があります。ドキュメント化のコストがPython=でのスクリプトと同僚の教育は、書き直しよりも低いです。
私はあなたにあなたが何をするかについて完全な答えを与えることはできませんすべきします。最初に使用できる提案は1つだけです。
すべての(必須)開発者がアクセスできるリポジトリにスクリプトをチェックインします。ただし、ownの目的、つまり与えられたタスクを実行するためにこれらのスクリプトを最初に作成したことを必ずメモしてください。次に、これらのスクリプトをチェックインするだけで、他の人がスクリプトを使用できるようにすることを追加します。
その後は、他の人がそれにどう反応するかを確認する必要があります。
職場で同様の問題に遭遇しました。 「PHPって何?」と聞いた。数年前。彼らは、MSスタック以外のことを理解したり気にしたりしません。 pythonが仕事に適したツールである場合、私は上司にそのことを伝え、多くの比較の準備をし、なぜpythonであったかについて説明します正しい選択です。イライラしますが、pythonはテキスト操作に適した選択です。
あなたがしなければならない最初のことは、チームとあなたの上司と話すことです。現在、あなたは巨大なトラック要因を持っています(トラックに見舞われた場合、他の誰も簡単にスクリプトを維持することができません)。これらのタスクを実行するスクリプトを用意することは重要であるように見えますが、これらのスクリプトを編集および保守する必要がある人はだれでも重要です。 Pythonを使用することでどのように価値が追加されるか、時間、労力、リソース、お金などを節約する方法を説明する必要があります。
次に、それをプロジェクトのバージョン管理に入れます。今。プロジェクト用に作成するものは、そのプロジェクトのバージョン管理の範囲外であってはなりません。
反発に備えましょう。一般的に人々は変化を好まないのです。自分で実行して、サポートされていない(チーム/組織にとって)未知のテクノロジーを使用することは、少なくとも他の開発者に相談せず、全員のためにこれらのタスクを自動化する最良の(プロジェクトだけでなく)方法を決定せずに、悪い考えでした使用する。
これはおそらく良いケースだと思います
許可を得るよりも許しを求める方が簡単です。
あなたは仕事を成し遂げたように聞こえますが、あなたは今、反響に対処しなければならないでしょう。
私の経験則は:
他の人の仕事に影響を与える可能性があるものは、できるだけ早く同僚や上司と話し合う必要があります。
しかし、それがあなたとあなただけのためであり、それがあなたの会社のインフラストラクチャまたはセキュリティに損傷を与えない限り、あなたはあなたが仕事をやりたいと望んでいるように自由に行うことができます。
タスクが与えられ、時間通りにそれを達成できる唯一の方法がある場合、実際には選択肢がありません。担当者にあなたのやっていることを知らせたほうがいいと思います。必要なソース管理(絶対にまったく機能しない場合を除きます)のテストとドキュメントの外に出てはいけません。
会社によっては、1人の開発者に新しい開発領域の調査を開始させる必要がある場合があります。残念ながら、このコードは、他の誰もが思いつくよりも早く本番環境に入る可能性があります。
次の2つのオプションがあります。
組織によっては、1番目が難しい場合があります(すべての標準テクノロジーのリストを制限することで、トレーニングとサポートのスキル要件の組み合わせによる爆発的な増加を回避できます)。
2番目のオプションはあなたのスキルセットを助けるでしょう、そしてあなたは難しい仕事のいくつかを行うためにサードパーティ(そしておそらく商業的にフレンドリーなライセンスを持つオープンソース)を見つけることができるかもしれません。例えば。 「LINQ to CSV」を検索すると、いくつかの有用なヒットが得られるはずです。
ところで、VB6の開発者ツール(IDE、コンパイラ)はサポートされていないため(セキュリティ修正も含まれていません)、標準を更新する必要があります。 (VB6ランタイムは、現在のWindowsバージョンの一部としてサポートされ、インストールに含まれます)。これはおそらく#1にアプローチするためのヘルパーとして使用できます:サプライヤーの依存関係のために、標準ツールセットは移動ターゲットを上げる必要があります。
それらが自分で使用するツールである場合、生産性を高めるものなら何でも自由にできます。
実際、あなたは奨励されるべきですそのようなツールを作り、使用することです。それは最終的にあなたの腕の延長になります。
最終的に、彼らはそのようなツールを持つことの重要性を認識します彼らが書かれている言語に関係なく、そして彼らの作業環境に実装し始めます。
ええと、私は20の異なる言語での作業が悪いことを認めざるを得ませんでした。
Pythonを呼び出すBashスクリプトがありますJava C dllを呼び出すバイナリを呼び出すPerlスクリプト...
次に、パイプライン全体で何かがファンに当たり、WTH IS DAT KODEZ?特にPerlで...デバッグします。そして、単純なデバッグ、たとえば、エンコーディングの問題は悪夢のような混乱に変わります。 7つの言語のうち5つを効果的にデバッグすることはできません。
または、単純な変更を追加する必要がありますが、Perlに問題がある、Javaに問題があるなど)ため、10個のエラーが発生します。
そして、7つ以上の言語チェーンは、一度に1つのステップから始まります。
慎重に踏み込んで、ここでドラゴンになろう...
Sth。を実行するコードを記述するように指示された場合、言語は通常、指定または暗黙指定されます(企業のルール)。
しかし、DBへのデータのインポートなど、ワンショットのタスクを実行する必要がある場合は、適切で迅速な処理を行う必要があり、結果が重要であるため、自分の意見に最も合うツールを自由に選択できます。ツールではありません。
だから、私はそのルールを使用します:
1)データのインポートなどのタスクを実行するように指示された場合は、tools/language/etcを使用します。それは私にとって最も便利であり、タスクにとって最も速いでしょう。
2)データのインポートなどのタスクを実行するツールを作成するように指示された場合、マネージャーで使用する言語/ツールについて話し合います(たとえば、会社が使用する場合など、暗黙の標準である言語を使用する場合は例外です) ] Javaのみ)。
3)タスクが1回限りであるように見えたが、繰り返し可能になった場合は、マネージャーと話し合って1)から2)に変更し、優先言語から会社がサポートする言語に書き直す必要があります。
私はあなたが決定する立場にないと思います(そうでなければあなたは質問しません)。上司はこの問題についてどう思いますか?あなたは彼と話をして、Pythonが進むべき道であることを彼に納得させようとします...
もちろん、問題はあなたが去ったときに何が起こるかについてです。コードを維持できないことは、おそらくPythonの使用を停止するのに十分な理由です。または、同僚にこの言語を教育することもできます...