一部のタスクで会社でサポートされていない言語を使用しても大丈夫ですか?


27

COBOL、VB6、C#、Javaなどの複数の言語をサポートする会社で働いています。
私はこれらの言語を主な仕事に使用しますが、Pythonでいくつかのマイナープログラム(スクリプトなど)をコーディングすることにしばしば気づきます。

たとえば、アナリストが複雑なCSVファイルを提供していくつかのDBテーブルにデータを入力するため、Pythonを使用して解析し、DBスクリプトを作成します。

どうしたの?
主な問題は、これらの迅速で汚いスクリプトのいくつかの部分が徐々に重要性を増していることです。

  1. 私の会社はPythonをサポートしていません
  2. バージョン管理されていません(別の方法でバックアップします)
  3. 私の同僚はPythonを知らない

アナリストは、電子メールでそれらを参照し始めています(「エクスポートするスクリプトを起動します...」)ので、私が最初に思っていたよりも頻繁に必要になります。

これらのスクリプトは、メインプロジェクトの一部ではない単なるユーティリティであることを付け加える必要があります。単純なタスクをより短い時間で完了するのに役立ちます。私自身の小さなタスクのために、彼らは多くのことを助けます。

つまり、私が宝くじに当たって事故に遭った場合、同僚はこれらのスクリプトがなくてもプロジェクトを維持する必要があります。たとえば、手作業でCSVエラーを修正するのに時間がかかります。

これは一般的なシナリオですか?私は何か間違っていますか?私は何をすべきか?


22
スクリプトが別の言語であるという理由だけで同僚が理解できない場合、大きな問題が発生します
CaffGeek

1
チャドに同意します。Pythonは、得られる限り擬似コードに近いものです。
ジョブ

2
@Chad ehehすてきなものですが、問題は別のものかもしれません。Python SDKは、開発マシンのデフォルトインストールの一部ではありません。それをインストールするために、私は正しいシステム管理者にたくさんのコーヒーを支払いました;)。
systempuntoout

3
@systempuntooutの場合、開発者は自分のコンピューターに法的に制限されている範囲で必要なものをインストールできる必要があります。PowerShellがWindozeにプリインストールされているので、Pythonに置き換えてみましたが、同じではありません。エッジケースは、私が何か簡単なことをしようとするたびに顔を平手打ちします。Pythonは物事を成し遂げ、企業の無人機がそれを成し遂げなければ-残念です!
ジョブ

1
ソース管理に入れます。どこかに小さなコーナーが、それらを入れてください。

回答:


42

本当にこの時点に到達するべきではないので、状況を形式化する必要があります。ただし、これらのことは起こるため、これらのスクリプトを個人的に使用するために作成したことを上司に説明する必要がありますが、それらはより広範に「エスケープ」されています。(必要に応じて)すぐに彼の注意を喚起しなかったためにあなたが過失にあったことを認めなさい。

少なくともスクリプトは、「万が一に備えて」ソース管理下に置く必要があります-少なくとも(何らかの理由で)同僚がスクリプトにアクセスできない場合は。

次に、上司にPythonがこれらの方法であると確信させるか、サポートされている言語で書き直す必要があることを受け入れる必要があります。Pythonでスクリプトを文書化し、同僚を教育するコストが、書き直しのコストよりも低い場合、議論に勝つことさえあります。


8
+1、同意します。この種のことが非常に簡単に発生することがわかりますが、それは必ずしもOP側の「悪いこと」や「間違い」ではありません。おそらく、OPが「1回限りの」ミニプロジェクトを担当し、プロジェクトのデスクをすばやくクリアするために優れたツールであるpythonを選択したときに開始されましたが、タスクを何度も繰り返し実行していることに気づきました...
アンジェロ

私は今これを生きています。私はPythonで概念実証をハックして、くだらない古いCコードを見つけ出し、実際に古いCコードの代わりとして混乱全体を機能させましたが、新しい変更を行った後にCに書き直すように頼まれました。Pythonをいくつか管理し、Python + Flaskとマネージャーを使用して小さなWebアプリを作成し、実行中のCコードの操作を常に分析しました。そのため、Pythonがこの辺りで正式に採用されることを期待しています。:)
ジョンゲインズジュニア

6

あなた何をすべきかについて完全な答えを与えることはできません。最初に使用できる提案は1つだけです。

すべての(必須)開発者がアクセスできるリポジトリにスクリプトをチェックインします。ただし、これらのスクリプトを最初に独自の目的、つまり与えられたタスクを実行するために記述したという事実に注意してください。次に、これらのスクリプトをチェックインするだけで、他の人がそれらを使用できるようになります。

その後、他の人がどのようにそれに反応するかを見るだけです。


可能な限りコメントしてください。何をしているのかを把握しようとするのではなく、何が起こっているのかをすばやく確認できます。
JDフリアス

5

私は職場で同様の問題に遭遇しました。「PHPとは何ですか?」何年か前。彼らは、MSスタック以外のことを理解したり、学習したりしません。pythonがジョブに適切なツールである場合、スーパーバイザーにそのことを伝え、多くの比較とpythonが正しい選択である理由について説明する準備を整えます。それはイライラするでしょうが、私はほとんどの人がpythonがテキスト操作のための良い選択であることに同意すると思います。


5

最初に行う必要があるのは、チームと上司との会話です。今、あなたには巨大なトラック要素があります(トラックにぶつかった場合、誰もあなたのスクリプトを簡単に維持できません)。これらのタスクを実行するスクリプトを持つことは重要に見えますが、これらのスクリプトを編集および保守する必要がある人は誰でも重要です。Pythonを使用することで価値がどのように高まるか、時間、労力、リソース、お金などを節約する方法を説明する必要があります。

次に、プロジェクトのバージョン管理に入れます。今。プロジェクト用に作成するものは、そのプロジェクトのバージョン管理の外にあるべきではありません。

反発に備えてください-通常、人々は変化を嫌います。自分で実行し、サポートされていない未知の(チーム/組織にとって)テクノロジーを使用することは悪いアイデアでした。使用する。

これはおそらく良い例だと思う

許可を得るよりも許しを求める方が簡単です。

仕事は完了したように聞こえますが、今はその影響に対処する必要があります。


4
"" "独自に実行し、サポートされていない(チーム/組織にとって)未知の技術を使用することは悪い考えでした。全員が使用するタスク。 "" "-同意しません。ジョエル・スポルスキーは、この方法で行けば、Excel用のVBAを作成できませんでした。これは決してユニークな例ではありません。
ジョブ

@Job VBA for Excelの開発の正確な状況について話すことはできませんが、高度なR&Dやプロトタイピングが関係しているように聞こえます。高度なR&Dと生産システムには違いがあります。一人で、そしてチームから隔離されて、暗闇の中で働くことはできません。私は新しい技術を導入することに反対していませんが、これらの新しい技術が何であるか、その利点、欠点、プロジェクトでの展開方法を誰もが知っていることが重要です。単独で暗闇の中で何かをするのは一般に悪い考えであり、プロジェクトを危険にさらします。
トーマスオーエンズ

@Thomas私はチーム
-systempuntoout

@systempuntooutそれは今本当かもしれません。しかし、それは6か月後になりますか?それとも1年?ソフトウェア開発は、たとえあなたが現在一人であるとしても、決して単独のタスクと見なされるべきではありません-あなたはあなたの仕事の将来の開発者またはメンテナーを考える必要があります。
トーマスオーエンズ

あなたが正しい@トーマス。上記のいくつかのコメントで述べたように、私は多くのスクリプトをC#(会社がサポートする言語)で移植しました
systempuntoout

3

私の経験則は次のとおりです。

他の人の仕事に影響を及ぼす可能性のあるものは、できるだけ早く同僚や上司と話し合う必要があります。

しかし、それがあなたとあなただけの場合、会社のインフラストラクチャやセキュリティ損害を与えない限り、仕事をやりたいように自由に行うことができます。


1
それがあなたのためなのか、他の人のためなのか、どうやって知るのですか?職場では、割り当てを変更することも、終了することもできます。職場で生産するもの(ほとんどの場合)はあなたのものではありませんが、会社または顧客のものです。彼らがそれを理解または維持できない場合、失われる時間は、あなたがそれを開発するのに費やした時間に加えて、他の誰かがそれを理解する(そしておそらく新しいソリューションを開発する)のにかかる時間です。職場で生産されたものはすべて、他の人にとって何かとして扱われるべきです。
トーマス・オーエンズ

1
その仕事をしている間に個人の生産性が向上した場合、会社はすでにそのスクリプトから価値を獲得しており、後で他の人が再利用するかどうかに関係なく、無駄ではありませんでした。
ネイトCK

@Thomas Owens-多くの場合、一度限りのタスクがあります-一度実行されると、実行されます-または、開発中に行う粘着性の問題を解決するための独自のハックとテスト-もう一度実行されます、完了しました-効果的に使い捨て。
ベクトル

そして、他の誰かが後で同じまたは類似のタスクを実行する必要がある場合(これは私の経験ではおそらくそうです)?彼らは車輪を再発明しなければなりません。問題を解決したり、ライブラリやフレームワークを学習したりするために、使い捨てのプロトタイプを使用することは1つのことです。タスクを実行するためのツールの開発に時間を費やし、それを破棄するのも別の方法です。質問が参照しているツールの種類は、複数回実行する必要がある可能性のあるタスク用であり、他の人がそれらのタスクを実行する場合、それらを支援するツールがないために時間を浪費します(またはそのようなツールを開発する必要があります) 。
トーマス・オーエンズ

@Thomas Owens-もちろん-それは私が「他の人の仕事に影響を与える可能性がある」と言ったことに含まれています。
ベクトル

2

次の2つのオプションがあります。

  1. 標準にする
  2. 標準ツールに翻訳する

組織によっては、#1が難しい場合があります(標準テクノロジーのリストを制限することで、トレーニングとサポートスキル要件の組み合わせによる爆発を回避できます)。

2番目のオプションはスキルセットに役立ち、ハードワークの一部を行うためにサードパーティ(および商業的に使いやすいライセンスを持つオープンソース)を見つけることができる場合があります。たとえば、「LINQ to CSV」を検索すると、いくつかの有用なヒットが得られます。

ところで、VB6の開発者ツール(IDE、コンパイラ)はサポートされていません(セキュリティ修正さえも)ので、とにかく標準を更新する必要があるでしょう。(VB6ランタイムは、現在のWindowsバージョンの一部として(およびインストールに含まれて)サポートされます)。これはおそらく、アプローチ1のヘルパーとして使用できます。サプライヤの依存関係のため、標準ツールセットは移動するターゲットを上げる必要があります。


2

タスクが与えられ、時間通りにそれを達成できる唯一の方法である場合、実際には選択肢がありません。あなたが何をしているかを担当者に知らせるのは賢明だと思います。必要なソース管理の外に出てはいけません(まったく機能しない場合を除く)。テストとドキュメント。

会社によっては、1人の開発者に新しい開発分野の調査を開始させなければならない場合があります。残念ながら、このコードは、他の誰もが理解できるよりも速く本番環境に進む可能性があります。


信じられないかもしれませんが、この質問を投稿して多くの洞察に満ちた提案を受けた後、C#でいくつかのスクリプトを移植しました。
systempuntoout

1

まあ、私は20の異なる言語で作業すると悪臭を放つことを認めざるを得ませんでした。

C dllを呼び出すJavaバイナリを呼び出すPerlスクリプトを呼び出すPythonスクリプトを呼び出すBashスクリプトがあります...

それから、パイプライン全体で何かがファンにぶつかります、そして、あなたは通り抜けます-WTH IS DAT KODEZ?特にPerlでは...そして、単純なデバッグ、たとえばエンコードの問題は、悪夢のような混乱に変わります。7つの言語のうち5つの言語を効果的にデバッグすることはできません。

または、単純な変更を追加する必要がありますが、Perlには落とし穴、Javaには落とし穴などがあるため、10個のエラーを作成します。

そして、その7+言語チェーンは一度に1つのステップを開始します。

慎重に踏み、ここにドラゴンがいます...


適切なツールで作業することは悪臭を放つものではなく、物事を構築するUnixの方法です。Windowsの方法は、Excelを起動することです。ハンマーと釘の古い話
...-mouviciel

1

これらが自分で使用するツールである場合、生産性を高めるために何でも自由に行うことができます。

実際、このようなツールを作成して使用することをお勧めします。これは最終的には腕の延長になります。

最終的に、どの言語で書かれていても、そのようなツールを使用することの重要性を認識し、作業環境に実装し始めます。


職場では、何かを「自分用」として扱うべきではないと思います。それらはプロジェクトをサポートするツールであり、そのプロジェクトに取り組んでいるチームがあります。明日、辞めたり、解雇されたり、再割り当てされたり、死んだりすることができます。あなたの責任は他の誰かに委ねられます。ツールを使用および保守できない場合、ツールを作成するための労力が無駄になりました(会社の費用がかかります)。
トーマス・オーエンズ

3
@Thomas:私は自分自身のために作成したスクリプトと、個人的に使用するスクリプトを自分のものとして扱います。それらは私の腕と私の心の延長です。「このように考えることはできず、そのようにしか考えられない」と言うようなものです。あなたが求められていることをすることができる限り、あなたが考えることは重要ではないと思います。
ホセファエティ

それは、私にとって非常に非専門的かつ非倫理的です。ソフトウェアエンジニアの倫理的責任の1つは、一般の人々を危険にさらさない限り、クライアントと雇用主の最善の利益のために行動することです。別の倫理的責任は、同僚を公正かつ協力的にすることです。プロジェクトのためにツールを使用する場合、これらの原則の両方に違反します。
トーマスオーエンズ

3
@Thomas:私はプロジェクト用の特定のプログラミング言語を書くことについて話していませんでした。私は、「1つのコマンドで10000個のファイルの名前を変更する」というようなことを言っています。私は、プロジェクトに特に関係するものと対話していません。これらはプロジェクト固有のツールではありません。
ホセファエティ

3
@Thomas:ポイントは、そのようなユーティリティが存在するかどうかを知ることではなく、そのようなユーティリティを作成して作業を自動化する方法を知ることです。日常のタスクを支援するために、常に新しいスクリプトが必要になります。プログラマに既存のツールまたは他の人が作成したツールを使用することを強制することは、鳥に翼を切るようなものです。そのような場所で働くことは想像できません。とにかく私はあなたのポイントを理解しています。OPはすでにそのような状況にあったため、私の答えは上がりました。特定のツールの作成/使用に関する考えを、必要に応じてすぐにすべてのチームと共有し、決定することが最善だと思います。
ホセファエティ

1

sth。を実行するコードを記述するように指示された場合、通常、言語は指定または暗黙指定されます(企業の規則)。

ただし、データをDBにインポートするなど、ワンショットタスクを実行する必要がある場合は、適切かつ迅速に処理する必要があり、結果が重要であるため、最適と思われるツールを自由に選択できます。ツールではありません。

だから、私はそのルールを使用します:

1)データのインポートなどのタスクを実行するように指示された場合、ツール/言語/などを使用します。それは私にとって最も便利であり、タスクにとって最速です。

2)データのインポートなど、何らかのタスクを実行するツールを作成するように指示された場合、マネージャーで使用する言語/ツールについて説明します(たとえば、会社が[ほぼ] Javaのみ)。

3)タスクがワンショットのように見えたが、繰り返し可能になった場合は、マネージャーと相談して1)から2)に変更し、好みの言語から会社がサポートする言語に書き直す必要があります。


0

私はあなたが決定する立場にない(あるいは質問をしないだろう)と思います。上司はこの問題についてどう思いますか?あなたは彼と話をして、Pythonが道であると彼に納得させるようにしてください...

もちろん、問題はあなたが去るときに何が起こるかについてです。コードを維持できないことが、おそらくPythonの使用をやめるのに十分な理由です。または、あなたは同僚にこの言語を教え始めることができます...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.