プログラミング チームに古いやり方を手放すよう説得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/493460

  •  20-08-2019
  •  | 
  •  

質問

これはビジネス指向のプログラミングに関する質問であり、解決方法がわかりません。私は、20 年以上 BASIC に取り組んでいるプログラマーのチームと働いています。私は、更新と最新の手法のみを使用して、.NET で同じソフトウェアを作成するのを手伝うために連れてこられました。問題は、他の 3 人のチーム メンバー (全員 BASIC プログラマーですが、1 人は現在 .NET も使用しています) に、リレーショナル データベースの正しい使い方を理解してもらえないようだということです。彼らが理解できないことは次のとおりです。

基本的に、顧客のタグ情報を追跡するトランザクションがあります。現在の取引と過去の取引を追跡できる必要があります。古いシステムでは、顧客の基本的な現在のトランザクションのレコードを含む 1 つのテーブルと、重要な金銭情報とともに顧客の以前のすべてのトランザクションを含む別のトランザクションを持つフラット ファイル データベースが使用されていました。冗長性を防ぐために、現在のトランザクションを履歴トランザクションで上書きします。(履歴ファイルが最初に更新され、次に現在のトランザクションが更新されます)。必要なトランザクション テーブルは 1 つだけなのでまったく必要ありませんが、私のスーパーバイザーまたは他の 2 つの同僚のいずれかが必要です。 -労働者はこれを理解していないようです。私たちがばかばかしい量の作業をして、結局データデータベースに何度もアクセスする必要がなくなるように、彼らに問題を理解してもらうにはどうすればよいでしょうか?ご意見ありがとうございます!

役に立ちましたか?

解決

まず、私はそれが既存の構造内のデータ構造とロジック・フローが実際にどのようなあなたの説明から私には全く明らかではない認めなければなりません。これはおそらく、あなたがあなたの優先順位の1が現在の状況と提案交換、書面や図のいずれかで口頭または好ましくは、説明できるようにしなければなりませんので、どちらかの同僚に自分を明らかにしていないことを私に暗示ありません。あなたの質問のいずれかの批判ではなく、観測としてこれを取るしてください。

第二に、私はそれはかなり驚くべき20年の経験のプログラマは、リレーショナルデータベースとトランザクションを理解していないことがわかります。フラットファイルのコーディングは非常に長い時間前に主流の外に行ってきました - 私が最初に1988年に商業的環境でリレーショナルデータベースをバックに処理し、彼らは90年代半ばによってかなり平凡でした。あなたはどのような部門と製品タイプを作業していますか?それはあなたがあなたが通信の問題のいくつかの並べ替えを持っていないことを確認する必要があります。その場合に内蔵、あるいはそうでなければ「異常な」システムのいくつかの並べ替えを扱うかもしれない、あなたは大きな象を眺めているように私には可能聞こえますそれはあなたに指摘されていません - あなたは適切な情報を供給されていないことにより、いくつかの方法で設定されているチームにもたらした最初の「コンサルタント」ではないでしょう。いえ、このような古風なお店がまだ存在しない - 私の現在のクライアントCOBOLでコーディングされたフラットファイルベースのシステムへのシステムのインタフェースのうちの1つ、そしてはい、管理するための地獄である; - )

あなたが地面から完全に確信しているし、あなたがあなたの勧告ボードに反映されませんチームに直面している場合は、

最後に、 - とデモコードあなたはおそらく必要があります-then時間を割くことができれば、良いアイデアです優雅に決定を受け入れ、1を移動します。私自身、この位置では、私は問題外の抽象的に試みる - 両方のテーブルを更新するためのコードがSPであるとすることなく、自分のスキーマに移動するには、後日変更することができるように、データベースの更新は、例えば、ストアドプロシージャ内に移動させることができますアプリケーションの変更に対応しますか?機会が生じれば、あなたが後でそれらを再検討することができますので、あなたの引数が十分に文書化と記録されていることを確認してください。

あなたはので、オフィスの政治のサブ最適なソリューションを実装しなければならなかっただ最初のコーダではありません - このような状況の取り扱いについてご自身の個人的な開発のための学習体験としてそれを使用すると、あなたが支払いを受けるだろうな思考を自分で同情します追加作業のため。多くの場合、そのような引数での決定要因は、ロジックではなく、あなた自身がテーブルにもたらす評判の重量 ' - それはあなたのチームとのレバレッジのその種の多くを持っていないあなたの中に持ち込まれたように聞こえるので、あなた彼らはあなたがそれに続く場合に十分な評判を持って前に行うことに同意するものとしないものを実装するにexcelingで評判を得て上で動作する必要があります! - あなたが最初にモッドする必要があります。

他のヒント

時々、あなたがすることはできません。

あなたには、いくつかのXPの本を読めば、

、彼らはしばしばあなたの最大のハードルの一つは、彼らがいつもやっていることを放棄してあなたのチームを説得するだろうと言ってます。

一般的に、彼らは他のプロジェクトに行く(またはちょうどそれらを手放す)適応できない人をさせるお勧めします。

コードレビューは、あなたのケースで役立つかもしれません。コードのすべての行の必須コードレビューは前代未聞ではありません。

いつか最高の引数は一例です。私はプロトタイプ(または交換でない場合は、あまりにも多くの仕事を)書きたいです。検討する例では、リレーショナル・データベースの長所と短所を見ることが容易になります。

彼らはそんなに簡単に真のリレーショナルデータベースよりも「管理」になっているので、

余談として、フラットファイルデータベースは、その場所を持っています。心を開いてください。 ; - )

私は、あなたが率先垂範しなければならないかもしれないと思う - 人々は「新しい」方法は、(あなたがそれで自分の鼻をこすっていない限り)、彼らはそれを採用するあまり仕事があることを見たとき、

私はまた古いデザインは、実際に問題を引き起こすか、またはそれだけで審美的に迷惑であるかどうかをされているかどうかを自問してしまいます。それはあなたの戦いを選ぶことが重要です - 古いデザインは、パフォーマンス上の問題を引き起こすか、またはあなただけでは、古いデザインのままにすることもできます維持するのは難しいのシステムを作っていない場合。

あなたが代わりに古いデザインのままに行う場合は、後であなたがなしで新しいスキーマをドロップすることができ、設計を改善するために、同僚を説得んので、もし

最後に、あなたの新しいコードと古いデータベース間のインタフェースを試してみて、抽象他に何も変更せます。

元の質問から一般的な不満以外の多くのことを抽出するのは困難です。

確かに、長年の経験を持つ人が時間の経過とともに身につけるテクニックや習慣は数多くありますが、それらはテクノロジーの変化を考慮すると役に立たず、さらにはコストがかかる可能性があります。処理能力、メモリ、さらにはディスクが高価だった時代には意味があったことのいくつかは、今では最適化という愚かな試みになる可能性があります。また、時間の経過とともに悪い習慣や悪いプログラミング パターンが蓄積されてしまうこともよくあります。

ただし注意が必要です。

古い人たちの行動には、正当な理由がある場合があります。悲しいことに、彼らは「なぜ」を言語化することさえできないかもしれません - 理由はもうわかっていても。

エンタープライズ ソフトウェア開発ショップに新人が入ってくると、この種のフラストレーションを多く目にします。環境がすべて最新のテクノロジーとツールで構成されている場合でも、状況が悪化する可能性があります。あなたの経験のほとんどが小規模コミュニティのデスクトップおよび Web アプリケーションの作成にある場合、「知っている」ことの多くは間違っている可能性があります。

多くの場合、DBMS が実行できるレベルより上のレベルでトランザクション ジャーナリングの要件が存在します。時系列の正確性、1 回限りの更新、復元性、および否認防止を確保するために、DB トランザクション セマンティクスを超えることが必要になることがよくあります。

そして、これでは企業または企業間のスケーラビリティに関わる問題への対処すら始まりません。1 日に 50 万件の複雑なトランザクションに近づくと、RDBMS テクノロジーでは役に立たないことがわかるでしょう。リレーショナル データベースは大量のトランザクションを処理するように設計されていないため、多くの場合、正規化と更新の標準パラダイムを破らなければなりません。従来の RDBMS ロック技術では、問題にどれだけ多くのハードウェアを投入しても、スケーラビリティを破壊する可能性があります。

そのすべてを、気の抜けた、あるいは一般的な間違った頭のせい、さらには無能であるとして却下するのは簡単です。ただし、常にそうとは限りませんので注意してください。

ところで:RDBMS 以外にもモデルはありますが、今日のほとんどのプログラマーの経験とは異なり、RDBMS の代替となるものは必ずしも「フラット ファイル」であるとは限りません。RDBMS よりもはるかに高いスループットを処理できるトランザクション階層型 DBMS があります。 IMS たとえば、大規模な IBM ショップではまだ健在です。他のベンダーも、さまざまなプラットフォーム向けに同様のソフトウェアを提供しています。

もちろん、4 人の店では、これはどれも当てはまらないかもしれません。

(少なくともより簡単か!)いくつかのまともなトレーニングのためにそれらを登録し、それはより多くの新しい技術と多くが可能であることを説得するのはあなた次第です。

しかし、私はここで最も重要なことは、プロ、認定トレーナーが最初に彼らに基本を教えることだと思います。彼らがそれらを伝えることだけではなく、彼らの同僚の1つによって、より感動するだろう:「?ねえ、なぜこれを使用しない」

関連記事<のhref = "https://stackoverflow.com/questions/422076/subtly-tell-someone-that-you-cant-just-teach-them-and-them-trying-to-help- >ここの「ME-です。

以下は年の状況に当てはまるわけではありませんが、あなたが技術的な詳細についてはほとんど言及して、私は、私はそれを言及しようと思いました...

時々、アクセスパターンは、過去のデータよりも、現在のデータ(私はこの例を構成するが、現在のデータは毎秒回の1000にアクセスしていると言う、と列の小さなサブセットにアクセスし、よのための非常に異なっている場合現在のすべてのデータは、と言うのに対し、過去のデータ)は、GB単位の1000使用日当たり回のみ100Sにアクセスし、アクセスがすべての列であり、1 GB未満に収まり、

そして、あなたの同僚は、パフォーマンスの最適化のために、完璧な理にかなってやっています。 (冗長albiet)現在のデータを分離することにより、あなたは歴史の表に行うことができなかった高い周波数アクセスpaternsのために、そのテーブルのインデックスとデータ構造を最適化することができます。

「学問的」である、または実際の実際の状況に適用された場合に、純粋にリレーショナルな観点から「技術的には」正しい理にかなっていないすべてのもの。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top