新しいハードウェアと開発者のどちらが安いですか?

次の投稿「プログラミングスタイルを改善する方法」に加えて、同僚の間で最近行われた議論により、私はこの記事を読みました。



この対話を想像してください:



管理者 :紳士、開発者、サーバー上のコードは大量のRAMを消費し始めました。 サーバーは既にスワップを開始しています。 あなたは理解しています、すべてが賭けを得ることができます!

開発者代表(チームリーダーなど) :くそー​​、トラブル。 では、問題に対処しましょう。

ちょっと、チーム、管理者はここで最適でないコードを恥じています。 早急に古いコードを終了して最適化する必要があります。

プロジェクトマネージャー :ねえ、どこに行くの? どのような最適化ですか? 管理者がサーバーのメモリを購入できるようにすれば、問題はありません。 そして、開発する必要のある新しい機能がたくさんあります。 最適化なし! 新機能に焦点を当てます。 新しい機能を使用して、競合他社に先んじる必要があります。 次に、何らかの方法でコードを最適化します。



そして誰が正しいと思いますか? 何をする必要がありますか? 鉄をアップグレードするか、最適化を行いますか?

記事の最後に投票があります。



コメントでこのトピックについて議論することをお勧めします。 問題がRAMのみにあると仮定しないでください。 質問は実際にはもっと一般的です:お金をどこで使うか? はい、はい、すべてがそこにあります。 つまり お金は新しい機器に費やしたり、コードの最適化に費やされる工数(給与)に費やしたりすることができます。



この問題の議論に関与している可能性のある4人の参加者全員の場所を訪問するのは困難です。 しかし、私はそれらのそれぞれが考えていることを述べようとします。



管理者の考え


これらの開発者は、プログラミングの方法を知りません。 彼らのコードはますます大食いです。 常に機器を購入しています。 電気を食べます。 はい、それは故障し、時代遅れになります。 いくつかの問題。 プログラミングの方法を学ばせると、作成は1つのサーバーで機能します。 それは幸せになります!



開発者の考え


この新しい機能で既に拷問を受けています。 リファクタリングの時間はいつ与えられますか? そこでは、管理者はすでに私たちの意見を検討しています。 コードは最適でなければなりません。 読みやすい。 高速でメモリをほとんど消費しません。 そのようにプログラムできます。 これには30〜50%の時間が必要です。



プロジェクトマネージャーの考え


このプロジェクトは既に開始されており、収益性があります。 そして、ここに最終決定が必要な新機能のリストがあります。 そして、競合他社に先んじるには、できるだけ早くこれを行う必要があります。 ある開発者を、大量のメモリを消費し始めた古いコードの最適化に専念するとします。 合計で、最適化のために今月の給与にNルーブルを費やします。 さらに、ペースで負けてしまいます。 この開発者は、新しい機能の作成に参加しません。

一方、 (N * 2)ルーブルの場合、サーバーに大量のメモリを購入します。

また、1か月以内にメモリを食い尽くすスクリプト(おそらく新たに作成された)がまだ出てきた場合、サーバーにさらにメモリがあればそれほど重要ではないでしょう。 そして、開発のペースは落ちません。 誰もが仕事をします。管理者はサーバーをアップグレードし、開発者は新しい機能を作成します。

しかし、プログラマーがより最適なコードを書くためには、一般的に何をする必要がありますか? 彼らは間違った方法で書いているわけではありません。最適化するのに十分な知識も時間もありません。



知識を増やすには? 時間をかけて学習します。 または、これらを解雇し、より賢明なものを雇いますが、彼らの給与は50%(または100%)多いです。 つまり チームが現在破壊に従事していない場合、出力でより最適なコードを達成するために-これはお金または開発時間のいずれかの追加コストです。 サーバーのメモリを購入する方が簡単だと感じています。



事業主の考え(4番目のキャラクターが登場します)


そこで、プロジェクトマネージャーから次の項目を選択するように依頼されました。



この場合、マネージャーは、最適化に費やした時間が目標につながるという事実ではなく、明確にしました。 しかし、追加の機器は、今後数年間は間違いなく問題を解決します。

マネージャーはまた、開発チームへの投資はかなり長期的な投資であると説明しました。 優れた最適なコードは、将来「利益をもたらす」でしょう。

そして、設備への投資は即座に利益をもたらします。

機器も会社の財産です。 その下で、たとえば、将来、ローンを取ることができます。 物事がうまくいかず、ビジネスを終わらせなければならない場合は、(神は禁じる)安くはあるが売る。

(さらに、誰もがボスが選んだことを考えています)。






コメントの議論では、次の前提に基づいて構築することを提案します。



これらの前提条件は、リファクタリングの必要性(コメントlolmausのおかげ)が新しいハードウェアで「プラグイン」する方が本質的に安価な状況です。 これを行う必要がありますか?

コードを最適化して舐める必要がありますか、それとも水平スケーリングをサポートするアーキテクチャを開発し、機器を購入するか、クラウドで新しいインスタンスを作成する方が簡単ですか?



「機器を購入して最適化の時間を与える」というオプションを選択しませんでした。 実際、これはまだ最初のオプションです。



PSコメントでは、この投稿の4人の仮想ヒーローのそれぞれの立場を支持し、議論を促進します。 だから、私は個人のアイデンティティ計算を持っていると仮定しないでください。



PPS ここにコードからのこのトピックの続きがあります



All Articles