エピソード4「ああ!サイモン、スティーブン、こちらはジェームズだ」ボスは、儀式の生贄候補者のように少年を前に押しやりながら、小声で言った。「ジェームズは更なる研究の一環として、2週間私たちのところで研修を受けているんだ。」
「ジェームズ!」私は手を差し出しながら言いました。
「ジェームズは、私たちのセキュリティシステムに人をインポートするソフトウェアにいくつかの修正を加えるためにここにいます。」
ジェームズが触れる前に私は手を引っ込めます。
「私のソフトウェアですか?」と私は尋ねます。
「会社のソフトウェアだ」とボスは反論した。
「私が書きました」と私は答えます。
「会社のために」ボスは言い返した。「会社の時間内に。」
「ジェームズは53,000行のコードを学習して修正するつもりですか?」私は、過去に自分が主張した行数を思い出せず、尋ねました。
「35,000 行のコードだと言ったのではないか?」とボスは答えます。
「本体 35,000 行 - ユーティリティ コードと依存関係 18,000 行」私は嘘をつき、自分の創造力と即時の引き算のスキルの両方に驚いています。
「たくさんのコメントが寄せられるといいですね」とジェームズさんは冗談を言い、事態の収拾を願った。
「ああ、このコードは自己文書化されているんだ」と私は言い、90年代初めにハミッシュ・マーソンから教わった言葉を繰り返した。
「それはどういう意味ですか?」と彼は尋ねます。
「まあ、最近はプログラミングの基礎って何も教えてくれないのかしら?」私はため息をつき、首を振って、急いで立ち去りました。
「とにかく」ボスが叫んだ。「ジェームズを空きオフィスに呼んで、君と連絡を取らせる。」
まあ、これは私のプログラミングの完璧な基盤に傷をつけることになりました!ジェームズはもうすぐ、数年前に2ヶ月間たった5万3千行か3万5千行のコードしか書けなかったのが、実はたった500行強だったことに気づくでしょう。しかも、そのほとんどはWebサンプルからコピー&ペーストしたものでした。午後1日で全部書き上げてしまい、残りの39.5日間は「プログラミングラボ」にこもってYouTubeの失敗動画を見たり、同じように一生懸命働く他の管理者とEnemy Territoryをプレイしたりして過ごしたと思います。
「はい、いい考えですね」と私は答えました。「ただし、ユーザビリティに関する経験を積めば、おそらく役立つでしょう。」
「ああ、僕はユーザビリティを専攻しているんだ」とジェームズは息を切らして言った。「卒論のテーマは、フォームベースの直感的なユーザー入力のためのページレイアウトだ…」
「私はユーザビリティとは言いませんでした。ユーザビリティと言いました。」
"私?"
「これはユーザーと能力を組み合わせた言葉です。つまり、私たちはユーザーが何をするかではなく、何ができるかを見ているのです。」
「違いが分かりません。」
「そうですね、このコードはユーザビリティとユーザビリティの完璧な例です。このコードはセキュリティ担当者がデスクトップマシンから実行したものです。」
「それで、このアプリケーションは何をするものなのですか?」とジェームズは尋ねた。
「氏名、雇用形態、部署、部署アクセス グループ、特別アクセス グループ、勤務時間など、スタッフに関する情報を HR データベースから取得し、その情報を Active Directory とセキュリティ システムに伝播します。」
「本当ですか?それに 53,000 行のコードも必要なんですか?」と彼は疑わしそうに尋ねます。
「ああ、エラー状態のテストや、カスケード認証ツリーの検証、監査証跡の伝播などについて考えたこともなかった時代を思い出す」と私はため息をつきます。
コードはそのようなことは何も行いません。そのため、当面は James の焦点を別の領域に集中させる必要があります。
「とにかく」と私は続けた。「セキュリティシステムのユーザーと実際に触れて、私たちが抱えている問題を少し理解してもらいたいんです。」
「はい、コードはサーバーのどこかにありますか?」
「馬鹿なことを言わないでくれ。これはセキュリティコードだ。いや、一般のアクセスからは隔離されている。タイムロックから取り出したら、コードを送ろう。」
「タイムロック?」
「ええ、バージョン管理システムからコードをチェックアウトできるのは、48 時間前に通知した場合のみです。これはセキュリティ上の問題です」と私は答えます。
正直、どこからこんなくだらないことを思いついたのか自分でも分からない。実際、もしビープ音付きの嘘発見器があったら、最後の一文で私が言ったことは何も聞き取れなかっただろう。特別アクセスグループなどについてのあの戯言で既に崩壊していなければの話だが。
だから、私はジェームズを2週間ほど忙しくさせておく必要がある。
2 日間の「ユーザーとの面談と要件のスコープ設定」の後、彼は Mission Control でコードに手を伸ばしたくてうずうずしています。それは、平均的なセキュリティ ユーザーに円グラフを見せたら、それを食べようとするからというだけではありません。
「あら!今すぐにそれを望んだのね!実はプルリクエストは私が始めたんじゃないって言うべきだったわ!」私は息を呑みました。
「それで、それはどういう意味ですか?」と彼は尋ねます。
「そうですね、48 時間以内にシステムからコードを取得するには、プル リクエストを開始する必要があります。」
「なるほど」と彼は失望と軽い苛立ちが入り混じった表情で言った。
...
「つまり、私に依頼を申し出てほしかったってこと?」2日後、彼が戻ってきたので、私は尋ねた。「そう言うべきだったわ!」
「はい!」彼は言った。今回はブレンディングはなし。「コードを確認する時間はもうあまりないんです!」
...
「ああ!忘れてたよ」と2日後に私は言った。「コードのレビューについてあなたがしつこく言い始めたので、ちょっと話が逸れてしまったんだ」
「それで、私たちはそれを今、できるのですか?」彼は言葉を慎重に選びながら言った。
「もちろんです。VCクライアントを起動してサーバーに接続して…」
「サーバーはメンテナンスのためダウンしています」とPFYは言った。「それほど長くはかからないはずです。」
...
「ごめん、また忘れてた。サーバーの再起動に忙しくて。でもちょっと待って、>カチッ< 、全部キューに入ったよ!」
「そうだね」ジェームズは少し打ちひしがれた様子でため息をついた。
...
「信じられますか?プルリクエストが土曜日に届くなんて知りませんでした。そして今、プルリクエストの受付期間は終了しました。たった8時間しか開いていません。」
「セキュリティ上の問題?」ジェームズは、私が間違っていなければ、少し皮肉を込めて尋ねました。
...
「それで、5.5インチのフロッピーディスクを持ってきたの?」彼が次に来た時に私は尋ねた。
「何だって!?」彼は憤慨する
「5 1/4インチフロッピー。これもセキュリティ上の問題です。VCシステムでは、セキュリティ上の問題がある可能性のあるネットワーク経由で、セキュリティ上の問題がある可能性のあるマシンにコードをロードすることはできません。USBポートもセキュリティ上の理由から接着されていますが、5 1/4インチフロッピーは搭載されています。」
「ああ…なるほど…」ジェームズはため息をつき、立ち去った。
...
「さて、またウィンドウが閉じましたね」とジェームズがIT考古学の知識を持って戻ってきたので、私は言った。「明後日、もう一度プルを開始しましょうか?」
「あ…コードはないですよね?」ジェームズは途切れ途切れに尋ねた。
「何だって?」私は息を呑んだ。「5万7千行のコードについて、私が物語をでっち上げると思うの?」
「53,000」とジェームズは言う
「ああ、君がフロッピーを取りに行っている間に、シームレスなアップグレードを可能にする下位互換性モジュールを書いたんだ」と私は嘘をつきます。
「でも…暗号なんて…ないよね?」彼はため息をついた。「教えてくれてもいいだろう。明日出発するんだから。」
「コードは確かにある」と私は認める。「おそらく当初報告されたものより数桁少ないだろう。」
「それは何をするのですか?」と彼は尋ねます。
「名前と部署をインポートし、追加と変更のために差分ファイルをセキュリティ サーバーにフラッシュし、セキュリティ ユーザーの画面にアプリケーション ウィンドウを開くだけです。」
「すでに作業が完了しているのに、なぜアプリケーション ウィンドウが開くのですか?」
「そうすれば、セキュリティ担当者がインポート ボタンをクリックするだけで、実際の作業が完了します。」
「本当の仕事?」
「ボタンを緑色にし、15〜20 秒待ってから「インポートが成功しました」というメッセージ ウィンドウをポップアップ表示するコードです。」
「セキュリティ上の問題か?」彼はため息をついた。
「ああ、それはユーザビリティの問題です...」
- BOFH: すべて
- BOFHアーカイブ95-99の完全版