だから、マネージャーはバグを修正するように頼みました...







あなたは前にここにいたことがあります。 あなたのプログラムはエレガントです。 正確な量の抽象化を使用しました。 モジュールは完璧にモジュール化されています。 あなたのシステムは、思慮深いインターフェースを介して外部の世界を扱い、外部システムに直接依存しません。 テストは問題なく合格しました。 テストカバレッジレポートのダウンロードには1分かかります。 97%は...



人生は美しい。 そして、何かが起こります。



プロダクトマネージャーが侵入し、先週送信した更新にバグが見つかったと主張します。 ユーザーが買い物かごにポジションを追加するたびに、このバスケットのポジション数を表示するように設計されたカウンターは数秒後にのみ更新されます。 そして、更新が即座に行われる前。



マネージャーは、ユーザーからの苦情が流れていることを報告します。 そして彼は尋ねます:「見えますか?」



もちろんご覧ください。 最後に、この製品を作成したのはあなたでした。 これはおそらく他の誰かのせいです。 ただし、エラーを修正します。 これは、ある種の「危機的」な従業員の仕事の一部です。



最新のリリースからGitハッシュを取得し、変更ログを詳しく調べます。 HTTP要求ライブラリを最新リリースの最新バージョンに更新しました。 これはかなり長い間延期されています。 これにつながったコミットを思い出すことができます。 良い一日でした。



コミットに切り替えてから、ショッピングカートを更新するリクエストをシミュレートします。 タスクが明確に分離されているのは良いことです。 ビルドフラグの昇格により、補助サーバーと運用サーバーで簡単にテストを実行できます。



犯人を見つけました。 更新したHTTPライブラリに欠陥があるようです。 特定のタイプのリクエストでは、JSON形式の着信コンテンツを分析するのにかなり時間がかかります。 アプリケーションは、リクエストのコンテンツが分析された後にのみ、ショッピングカートカウンターのユーザーインターフェイスを更新できます。 インフラストラクチャは、可能な一貫性を処理し、それ自体が別個のプロジェクトになる可能性があるものを追加するようにセットアップされていません。 カウンタをローカルで更新して、後で同期することはできません。



あなたはあなたではなく誰かが間違いを犯したことを知っています。 それが人生です。



マネージャーに何が起こったかを知らせます。 彼はあなたを承認して祝福します。 彼は、もちろん、あなたが信頼できることを常に知っていたと言います。 彼は、このバグを修正する方法がわかっているかどうかを尋ねます。



もちろんです! あなたはすでにすべての可能性を考慮しました。



変更をロールバックすることはできません。 すべての新しいコードとバグ修正は、ライブラリの新しいバージョンに関連付けられています。 また、単にすべてをロールバックすると、それらはすべて失われます。



このライブラリをフォークして独自のコピーを操作することも賢明なアイデアではありません。 元のプロジェクトの運用スタッフは、数千のデバイスで修正をテストする巨大なテストインフラストラクチャを備えています。 3つのデバイスがあり、そのうち2つはオペレーティングシステムの古いバージョンです。 それらからもフィードバックを得ることが最善です。 これは結局のところ、彼らのライブラリであり、彼らはあなたではなくその構造を知っているべきです。



そのため、アクションが計画されています。





すべてが初歩的です、ワトソン!



「素晴らしい」とマネージャーは言います。 「これにはどれくらい時間がかかると思いますか?」



あなたは答えを知っています。 技術者は時間を見積もることができないと考える人もいます。 しかし、あなたは間違いなくそのような専門家の一人ではありません。



「2週間」-ためらうことなく答えます。 「コードのインクルードのリクエストが受け入れられる速さと、運用スタッフが新しいアセンブリを発行する速さに依存します。」



マネージャーの顔は目の前で白くなっています。 「2週間? 2週間?!」 彼は、あたかもそれらが何かを変えることができるかのように、これらの2つの言葉を繰り返し続けています。 しかし、あなたは落ち着いたままです。 ご存知のように、マネージャーは弱者でも沸騰する可能性があります。 これについて心配する必要はありません。



「私たちのユーザーは私たちを去ります! バスケットで何が起こっているのかわからないので、彼らは何も買いません。 私たちはインターネット商社です! これは不可能です!」



あなたは彼が絶望の5つの段階を経るのを見ます。 彼が最終的に同意するまで待ちます。 しかし、これは起こりません。 彼は押し付けようとしているようです。



「それをより速く修正する方法は本当にありませんか? さて、一時的なものでしょうか? さて、考え直してください! これは非常に重要です!」



「いい」とあなたは言う、あなたは回転椅子に落ちた。 「考えさせてください。」



あなたは彼に少し譲歩します。 多分それから彼はあなたを放っておくでしょう。 他にもやることがたくさんあります。



再びソースに突入します。 あなたはあなたの要素の中にいます。 海の波に沿って滑る神ポセイドンのように、指はIDEアイコンの周りを動き回ります。



ああ! あなたはそれを見つけました。 JSON分析プログラムを入力し、それを独自の開発に置き換える文書化されていない方法があります!



しかし、待ってください。 危険です。 ここでは、アプリケーションプログラミングインターフェイスは非公開です。 あなたが提案したように彼とするのは間違っているかもしれません。 あなたはそれに行きたくありません。 次のリリースでエラーが解決されたらどうなりますか? その後、もう一度やり直す必要があります。 誰か興味がありますか? 独自の未検証のライブラリブランチを維持するよりも高速ですが。 繰り返しますが、これは危険です。



いや!



あなたは純粋な神殿を破壊する疑わしいビジネスの決定を許しません。 あなたは無知な大衆との闘いにおいて聖なるすべての守護者です。 結局のところ、あなたは多くのお金を支払われるのはこのためです。 そのような状況でのあなたの義務は拒否することです。



あなたはすぐにマネージャーの隅に入ります。 これを行うクリーンな方法はなく、安全でないハッキングのトリックに頼ることはできません。 ごめんなさい。」



彼は予想通りに反応します。



「あなたは問題を解決する方法があると言うが、あなたはそれをしないだろう。なぜなら、その方法は汚れていることが判明したから? 私たちのユーザーは文字通り私たちに叫び、競合他社に任せようと脅します。そして、この方法は汚れているので、あなたはバグを修正したくありませんか?



あなたは自分のコントロールを失います。



この男はプログラム設計について何を知っていますか? あなたはほんの少しから幻想的な世界を作成しました。 旧ソビエトブロックのすべてのコンピューターハッカーのDDoS攻撃に耐えることができる、非常にスケーラブルなシステムが作成されます。 あなたは芸術家であり、コンピューターはあなたのキャンバスです。 Robert Martin のClean Codeの本を何度も読んでいるので、自分のGitHubパスポートよりもよく知っています。



「はい!」あなたは壊れます。 「このたわごとでコードベースを台無しにしないよ! 私はこの宮殿を作るのに何ヶ月も費やしました! コードの各行は、私の痛みと血を捉えています! ここで、一般に、何かがうまくいく唯一の理由は、すべてがあなたのおかげではなく、あなたにもかかわらず行われたということです。 これらのすべてのプログラムの作業を保証するのは私と同じであり、私と同じように、あなたとあなたの「ビジネスプロセス」が去った後、長い間この混乱を片付けなければなりません!」



あなたは角から飛び出します。 何かを飲みます。 このような人は、私たちの業界にとってただの災害です。 彼らは、ビジネスの修士号のファッショナブルな程度は、深刻なソフトウェアを作成することについてある程度の理解を与えると考えています。 拒否する必要があります。



カフェに行きます。 毎日グルメが食べられる場所。 そしてコーヒー。 制限のない楽しい、魂を愛するコーヒー。 あなたは非常に資格のある専門家であるため、あなたはそれに値する。



一杯のコーヒーを飲み、どこに座るかを見てください。



そして、あなたは彼に会います。



当社で長年にわたって最も尊敬されている専門家。



この人は、「I-can-write-compiler-in-5-minutes」のようなクールで妥協のないスペシャリストです。 彼はハッカーが登場する前はハッカーでした。 あなたは彼のようになりたいです。 彼は、トールキンの本の魔術師ガンダルフにやや似ています。 誰もが同時に彼を尊敬し、恐れています。 しかし、彼は親切で、常に子供たちを助けます。 彼は間違いなく、このマネージャーを適切に配置する方法を聞きたいと思うでしょう。 最後に、彼はあなたのワークショップの代表者の一人です。



そして、あなたは彼の隣に座っています。 彼はゆっくりとコーヒーを飲み、「Haskellの抽象データ型」のようなものを読みます。



はい ただ話をする同僚。



あなたは彼にあなたの叙事詩を伝えます。 彼は辛抱強く耳を傾けます。 彼はうなずき、いくつかの質問をします。 彼の体は穏やかでリラックスしています。 彼は以前ここにいました。 彼の目で見ることができます。



最終的に完了しました。



大変でした。



肩から荷物を投げました。



慎重に言葉を選ぶかのように、彼は考えを凝らしています。



あなたは彼が大声で笑うことを期待しています。 彼は叫ぶ:「はい、私の男の子!」-そして、あなたは一緒にコーヒーをもう一杯飲むでしょう。 彼は百年前に愚かなマネージャーに尋ねた同様のスラッシングの物語であなたを楽しませるでしょう。



あなたはこの日を夢見ました。 男性が戦闘に勝利した後に行うように、あなたはコーヒーのカップをお互いにぶつかります。 少なくともそれは彼らが映画ですることです。 そして、もちろん、彼らは持っている-カップではなく、マグカップ、そしてマグカップで-ビールではなく、コーヒー。



重要なことですが、これは感傷的です。



待っていますか...



そしてまだ待っている、など...



彼はあなたの目をまっすぐ見ています。 彼の視線はあなたの魂に浸透します。 長年、機械で分解することで目が固くなった。 そして、それは妖艶な力を持っています。 あなたは目をそらすことができません。



彼はかなり発音します。



「あなたの仕事はコーヒーを飲んでコードを書かないことです。 あなたの仕事は、機能するプログラムを作成することです。」



それから彼は去ります。



ちょっと座って 胃に不快な感覚があります。 空虚感と吐き気。 あなたはそれがどんな感覚なのか理解し始めます。 あなたは恥ずかしいです。



あなたが最も借りている人々に失敗しました。 あなたの顧客。



そして、コンピューターに戻ります。 プログラムをすばやくクラックしてから、最新リリースを削除します。



あなたはマネージャーに謝ります:「ごめんなさい、友人、物事は少しコントロールできなくなった。」 彼はすべてが整然としています。 すべては順調に終わり、順調です。



また、ライブラリを別のブランチに持ち込み、バグを修正して、それを上の階層にあるプロダクトマネージャーに送信します。 適切なソリューションを備えたライブラリの新しいリリースが届くと、いつでもソフトウェアをリバースエンジニアリングできます



All Articles