私の上司は、コードのナレーション付きの行ごとの英語の説明を望んでいます


155

私は、上司が読んでフォローできるようにしたい説明や解説を、1行ずつ(または必要に応じて、たとえば画像ごとなど)与えるように特に求められました。

彼はプログラマーではないので、彼はコードに従うことができないので、すべてを英語に翻訳したいと思っています。

これを行うように誰かに頼まれましたか?

すべてのソースコードについてコメントし、JSDocを使用して、すべての関数、変数などの完全なドキュメントを生成し、実装例と、コメント付きの完全に機能するデモを含めました。

プログラマでない人のためにコードにコメントするために私ができることは他にありますか?

これは合理的な要求ではありませんか?


更新

最後に、私は彼が求めていたことをするのに時間の良い使い方ではなかった理由をなんとか説明することができました。彼は理にかなった男であり、私の仕事が何を含んでいるかを理解していませんでした。彼がこの投稿を見たとき、彼はそれが通常のリクエストではないことをすぐに理解したと思います。

他のプログラマーが従うのに適したドキュメント(JSDocおよびインラインコメント-技術的な問題に関する追加のメモ)と、上司が従うプログラムのメインロジックの非常に広範なフローチャート図を提供しました。

最終的に、すべての関係者は満足し、私たちは前進しました。


歴史的な理由でロックされています。詳細については、「閉じているトップ投票の質問をロックする」を参照してください。
ヤニス

回答:


160

いいえ、それは合理的な要求ではありません

ITから彼の話、または他の誰かが、すべての手段によって、それから彼の話を持っています。それは非合理的な考えであり、実行可能であれば非常に高価ですが、実際に実行されるべきではありません。関数とサブルーチンの概要は合理的ですが、すべてのコード行を「説明」することはできません。彼がそれをするよりも、手にある言語を読むことを学ぶ方が効果的だろう。

彼が次に求めるのは、数式、またはその他を英語のテキストに翻訳することです。確かに可能ですが、それはエラーと誤解の余地をもたらします。コードを英語に「翻訳」するのと同じです。


興味深い:物理学に関するリチャードファインマンの講義を読んでください。その多くは、英語での慎重な言葉遣いであることがわかります(Xの場合、Yが真でなければならないため、Z ...など)。ちょっとした数学。私が言いたいのは、英語で物事を説明できるということです。あなたがすべきかどうかは別の問題です。
すぐに

1
@quickly_now-大学時代にずっと前に読んでください。悪くない読み。私は同意します、あなたはそれを説明することができます-あなたが説明している人がすでにその背後にある「抽象化」(コード、数学の方程式とその意味...)を理解していれば、あなたはそれを任意の言語で説明できますt-どの言語でも説明できない。
ルーク

4
@Rook-良い点。語彙がエルクが移動した方向に限定されている原始部族に量子力学を説明するのはちょっと難しいでしょう。
すぐに

私は時々あなたのマネージャーの「意図」を細かく管理することができます。しかし、コード自体が非常に明確であれば、彼は英語のテキストとして読むことができます。
アービンドシンニア

150

あなたが持っていますか設計文書を?これらは、コードが行うことの英語による説明です。プログラミング以外のマネージャーは、それ以上を必要としません。


15
だからこそ、「プログラミング以外のマネージャーはそれ以上必要ないはずだ」と指定したのです。
マルフィスト

35
@Loren Pechtel:サイトにアクセスして、この男が「Xという名前の整数変数を作成します。0に設定します。Yという整数変数を作成します。0に設定します。Zという整数変数を作成します。 X位置という名前の整数変数を作成します。0に設定します。Y位置という名前の整数変数を作成します。0に設定します。Z位置という名前の整数変数を作成します。 X回転」0に設定しZ回転という名前の整数変数を作成し0に設定しY回転という名前の整数変数を作成し0に設定します...。。。。
FrustratedWithFormsDesigner

9
@Frustated構文の強調表示が非常に簡単です!「[p32767、L21、C8]増加pXの大きさInteger。増やしSumた値によっては、によって指さpX。増やすi場合1によってi3未満であるページ32767に進み、そうでない場合はページ32768、行17、列42に移動し、 、行21、列8。 "
Mateen Ulhaq

9
@muntoo、これらすべての関数をインライン化する必要があるので、ページ間を行き来する必要はありません。そうしないと、スタックを元に戻す際に多くの問題が発生する可能性があります。
キブビー

15
@Frustrated:誰の声を想像していますか?ショーン・コネリーとモーガン・フリーマンのどちらかを決めることはできません。
ベータ

113

マイクロマネージャーオブザイヤー賞はありますか?あなたの上司がノミネートに値するようです。コードを行単位で理解する必要があるが、コードの直接的な読み方を学びたくないと考える人は、想像できる限りマイクロマネージャーと同じくらい完璧です。

開発者であることの利点の1つは、コードを理解するのが難しいため、少なくとも詳細な実装レベルで、少なくとも非技術的な管理によって、ある程度以上のマイクロ管理ができないことです。そのレベルで頭の上に。しかし、あなたの上司の天才は、シリコンカーテンを粉砕する方法を見つけたかもしれません。

そして、ボーナスとして、英語の翻訳を使用してさまざまな改善を提案するに、開発者が翻訳を行うのに膨大な時間を浪費します(プログラマーよりも優れたコーディング方法を知っていると仮定しています)コードを読んで、誰かが翻訳するとすぐに彼の知恵を共有できるようになります。そうでなければ、なぜすべての行を翻訳する必要があるのでしょうか?)

だから、いいえ、それは合理的な要求ではなく、私はそれを聞いたことがありません。そして、私はあなたのために感じています。誰もが静かに別の仕事を探し始める必要があるかもしれないと思う。なぜなら、彼が管理ツールとしてコード翻訳を使い始めると、おそらく残酷な仕事の場になるだろうからだ。

プラス面として、あなたの状況にちなんで名付けられた新しいアンチパターンを手に入れることができますか?モンティパイソンのスキットの後、コミカルに誤訳されたハンガリー語のフレーズ集を使用して英語を話せない人とコミュニケーションを図ろうとする「Dirty Hungarian Phrasebook」アンチパターンはどうですか。


21
ミクロ管理を診断するための+1。私自身の言葉で:そこからf___を取り出してください!
-tdammers

@tdammers:幸いなことに、これは私の上司に言えることです。彼は上司であることに加えて、優れたファラです!
heltonbiker

5
コードのすべての行を理解する必要があるマネージャーは、プログラマーと呼ばれます。
ジェームズP.

91

彼と一緒に座って、コードの10行を通して彼に話しかけます。あなたが両方とも彼が望む範囲でそれを理解することに同意するまで、すべての詳細を説明します。

たぶん、この経験は彼が探しているすべてです:あなたの仕事があなたにどのように見えるか、そしてあなたの観点からソフトウェアがどのように見えるかの印象だけです。それは私の本では良いことです。

この後、彼はまだあなたに続けてほしいと言ったら、言って下さい:私が尋ねなければならなかった質問の数に注意してください 質問をすることなくこのすべてを説明しなければならなかったとしたら、どうすれば何を含め、何を省けばよいのかを知ることができたでしょうか?結果があなたの役に立つようになるまでにどれくらい時間がかかりましたか?さて、このようにしていくつの行をやりたいですか?


57
10行の説明に2時間を費やした後、説明するコードの行数が50,000(またはそれ以上)あることを彼が理解していることを確認してください。
HLGEM

6
実際にフォローアップするための非常に健全な方法。彼に彼の方法の無知を見させてください。
キブビー

4
@reinierpost:あなたのメソッドは純粋な天才です。
heltonbiker

5
あなたがこれをするつもりなら、まずそれが一般に悪い考えである理由を上司に伝えて、そしてそれから実証します。そうしないと、彼に「トリック」を引いて防御側に置くように見えるかもしれません。
nerdytenor

5
自分の考えが悪いとは言わないでください!! ただし、それらを実現するために必要なことについて議論することはできます。また、ショートカットを作成するためのアイデアを提供することもできます。これにより、アイデアが実行不可能であると結論付けられたり、最初のアイデアが完全に異なるものに変化したり、ある時点でこれに気付いた場合、彼らは肩をすくめて言うでしょう:それは人生です。
reinierpost

43

私はそれが合理的な要求だとは思わない。ソースコードは、英語(または他の言語)で読むことを意図したものではありません。

たぶん、彼はあなたがあなたのコードに彼が承認しない、または気づいている何かをさせるだろうと恐れているのでしょう。もしそうなら、私はあなたがそれに対してできることはないと思います。ドキュメントを作成するか、コードを監査するために誰かを雇うように説得する必要があります。


13
でもと英語の翻訳、非プログラマは非常によく信じている可能性があります/* and this line is transferring deposits to the correct account */ deposits.TransferAll(acctInfo);
IAbstract

15
上司が「あなたのコードに彼が承認していない、または気づいていることをさせるのを恐れている」場合、これは彼の恐怖を軽減するために何もしません。同じ人がコードを書いた翻訳を提供しています。それが何をするかについて彼らが嘘をつかないようにするために何がありますか?ここで何か他のことが起こっています。
mmc

4
COBOLは英語で読むことを目的としていました。
-oosterwal

1
おそらく彼は、推論に同意し、おそらくより良いアイデアを得るかどうかを確認するためにコードが何をするかを理解しようとしているのでしょう。いずれにしても、そうすることは彼の仕事ではありません。少なくともそうではありません
...-heltonbiker

32

本当に簡単です:

  • あなたはプログラマとしてのスキルのために雇われました
  • あなたのマネージャーはこれらのスキルを持っていません
  • エルゴ、あなたのマネージャーはあなたが何をするかを完全に理解できると合理的に期待するべきではありません

私は以前の仕事でこれと同様の経験をしました。私のマネージャーは会計士であり(したがって、非常に低レベルの詳細志向)、プログラミングを理解していないか、本当に信頼していませんでした。彼女は、非技術者として、自分が書いたものの特徴を理解できると期待すべきでないことを理解できませんでした。過剰なドキュメントの要求や、技術者以外のユーザーにコードの管理と変更の方法のトレーニングを要求した後(はい)、私は彼女を盗もうとするのをやめ、完全に拒否しました。説明に使用した例えは簡単でした。

  • 私は会計士ではありません
  • 個々の取引やアカウントへの投稿をすべて理解することを期待すべきではありません
  • これは、単にアカウントが理解できないという理由だけで、アカウントが間違っている、または信頼できないという意味ではありません
  • これは、それらを編集した人を信頼することで可能になります

結局のところ、これは私にとってこれがどのように聞こえるかです。従業員を信頼するのが難しいマネージャー。または彼らが去ることを恐れ、これがそれを軽減する効果的な方法であると考えます。

これに対する唯一の解決策は、座って、なぜこれが意味をなさないのかを説明することです。あなたの仕事は、コードを理解し、あなたと同じスキルを持っている人があなたのマネージャーではなくそれを理解できるようにすることです。このスレッドを表示するのは良い考えかもしれません(または、性格によっては、本当にひどいものです)。


上司はどのように説明をしましたか?
ジェフマーティン

1
まさにあなたが期待するかもしれません。;)しかし、要点は述べられており、要求は停止しました。私が彼女に私の議論の正当性を納得させたのか、それとも手間をかける価値がないと判断してgaveめたのか、私にはわかりません。
ジョンN

25

行ごとに、とんでもないです。私が提案できるのは、コメントからドキュメントを生成し、それを彼に提供することです。これは、私が過去に取り組んできた多くのカナダ政府の助成金と監査に十分でした。

彼はライン・バイ・ラインを取得することはありませんが、彼は法・バイ・メソッド必要があり得るでしょう、まだ彼が必要以上に細分することを。

プラットフォームに応じた既存のソリューション:

  • C#:サンドキャッスル
  • Java:javadoc
  • 「C ++、C、Java、Objective-C、Python、IDL(CorbaおよびMicrosoftフレーバー)、Fortran、VHDL、PHP、C#、およびある程度D」:酸素

Pas2Doxがあるので、Delphiをdoxygenリストに追加してください;-)
Fabricio Araujo

サンドキャッスルのリンクに移動します。感動しました。[ドキュメント]タブをクリックします。「このプロジェクトにはまだドキュメントがありません。」というメッセージを参照してください。感動よりも少なく見える。
カズドラゴン

16

興味深いアプリケーションのコード全体を英語に翻訳するよりも、コードの読み方を学ぶ方がはるかに速くなります。その上、私たちはCOBOLでそれを試みましたが、まったく役に立ちませんでした。彼が学ぼうとしないが、彼の無知を他の誰かの問題にしたいだけなら、あなたは真剣に先の尖った上司を持っています。


3
英語が言語であるべきだと思います。上司は、すべてのソフトウェアをDSL(ドメイン固有言語)で作成するように要求する必要があります。その後、システムの動作方法を変更できます。
デビッドd C eフレイタス

Cobolの言及はそれをまとめると思います。シンプルなハローワールドをプリントアウトした人なら誰でも、この言語がとてつもなく言葉遣いが多いことを知っています。それはわかりやすい何かに向かって良い動きでしたが、あまりにも形式的です。
ジェームズP.

15

技術的な専門知識を使用して、上司を追跡します。

  1. 最初にコーディングするのと同じくらいの時間がかかることを彼に知らせてください(自由に長くしてください)。
  2. このドキュメントを最新にする必要があるかどうか彼に尋ねてください。すべてのコーディングの変更に少なくとも2倍の時間がかかることを彼に知らせてください。
  3. あなたや他の誰かがバグを見つけた場合は、今すぐ修正するか、または擬似コーディングが完了するまで待つかどうかを彼に尋ねてください。#1と#2について思い出させます。

すべての悪い解決策の提案と同様に、問題を特定することをお勧めします。上司が経営陣による技術的な質問にぶつかって、答えられないので恥ずかしいと思うかもしれません。彼が最も心配していると感じるコードの特定のセクションが1つある可能性があるため、この大規模な取り組みをその領域だけに制限することができます。

サンプルを提出することで、コーディングの仕組みを理解していない場合(ループとは何か、これらすべての項目に対して何をしているのか)、どの言語であるかは重要ではないという結論に達するかもしれません。パワーユーザーの観点からアプリケーションを理解すること。あなたが本当のコード/ヒントを書くことを望んでいることを彼に知らせるのは公平だと思います-私は別の仕事を探しています。


7
だれかを「ばか」と見なすことに注意する必要があります。これを行うことはプログラマとして私たちにとって個人的に満足していますが、私はそれが専門的であるとは思わず、どんなマネージャーからのどんな要求も、どんなに奇妙であってもそのメリットに基づいて扱われるべきです。
-funkymushroom

6
@funkymushroom:このリクエストのメリットは、彼がばかだということです。
-DeadMG

3
@funkymushroom-私たちはこのサイトで少しの軽さを許されると思う。結局、あなたはfunkymushroomで行きます。
-JeffO

2
@ジェフ:ポイントをよく取った。私は決して泥棒ではありません。ただし、2種類の「ばか」があります。「Malicious Idiot」と「Ignorant Idiot」と私は両方とも協力してきました。前者は無視されるべきであり、彼は私たちのキャリアにとって危険であり、後者は良い同盟者になる可能性があるので、彼に教えるべきです。
funkymushroom

@funkymushroom-同意するので、私はそれを取り除いた。
-JeffO

12

どうして?

行ごとの解説は合理的ではありませんが、ここに私が尋ねるものがあります:なぜあなたはこれが欲しいのですか?

なぜなら…

  • あなたはソフトウェアが何をするのかを完全に理解したい(必ずしもどのようにではない)?
  • あなたが私が去った場合、別のプログラマーがプロジェクトを選択できることを確認したいですか?
  • あなたは私が本当の仕事をしているのを見たいですか?

この要求の背後には合理的な願望があるかもしれませんし、それを理解し、そのニーズを満たすことで上司を幸せにすることができるかもしれません。

更新

Mikey'sコメントに基づいて、多分私はこれを少し率直に言ったかもしれません。私はあなたが文字通り「なぜあなたはこれが欲しいのか?」と言うべきではない、ただあなたがそれを見つけるべきであるということです。言葉遣いと声のトーンは大きな違いを生みます。具体的には、次のように言うことができます。

「私は、コードのすべての行について説明したいというあなたの要求を考えてきました。そのようにするのは少し珍しいことです。自分の仕事についてうまく伝えていないことがあるのではないかと思っていました。私たちのコードについて、または私がやっていることについて本当に理解したいことは何ですか?ここで何を達成しようとしていますか?」

もちろん、上司がまったく無理である可能性があります。しかし、この要求がどれほど風変わりであるかを知らず、合理的な目標を念頭に置いている可能性が高くなります。

そうでない場合は、履歴書の研磨を開始します。:)


-1この回答:仕事を続けたい(または、少なくとも自発的に仕事を辞めたい)場合、そのようなボスに「なぜ」と尋ねるべきではありませんか?他の人が示唆しているように、これは微調整する必要があるものです。
ベクトル

3
マイキーのコメントには同意しません。盲目的に注文に従うのは愚かです。「なぜ?」リクエストごとに、私は不必要な作業の数え切れないほどの時間を節約し、その過程で会社に多くのお金を節約しました。それは相談と呼ばれ、上司を恐れない人は寛大にそしてそれを非常に効果的にする。私のために働く人々が何かを提案するとき、私は彼らに「なぜ?」同じように。どちらの場合も、正当化を求めており、そうすることは完全に受け入れられます。
ソビエト

10

リテラシープログラミングを試す良い機会のように思えます。Google it。:)

しかし...それは必ずしも完全に不合理な要求ではありません。あなたの仕事の一部(より重要な部分、imo)は、アルゴリズムを他の開発者、そして必要に応じて非技術者に伝えることです。コミュニケーションできない孤独な天才プログラマーは、常に問題があると思います。

そのためには、コードを非常に明確にする必要があります(つまり、真の自己文書化または適切な文書化のいずれかです。「自己文書化」とは、変数と関数が1つの意味または責任を持ち、その名前が明確に反映していることを意味します)。あなたの上司は、彼の要求に正当な理由があるかもしれません。たぶん(私はここで推測しています)あなたまたはあなたの前任者は、突き通せない、もろいコードに対して評判があり、これはあなたの上司の救済策です。それは少し極端ですが、あなたにとって役に立つ練習になるかもしれません。彼は、より良いドキュメントを書くには時間がかかることを知っていると思います(もしそうでなければ、彼は教育を受ける必要があります。まるで用語論文を書くようなものです。読むよりも書くのに時間がかかります)。


ウィキペディアのページを見てきました。それは、研究中に見た「構造化された<人間の言語をここに挿入>」を思い出させます。人間の言語を使用しif blah then add 1 to xて、nassi-schneidermanやフローチャートの代替としてのような式で行ごとにプログラミング構造を表現します。これはリテラシープログラミングの意味ですか?
ジェームズP.

私はポスターの残りの部分は、最後の40年間住んでい何岩の下に思ってしまう... -あなたはKnuthの文芸的プログラミングを述べ、このページ上の唯一の、だ
CJI

@James:Knuthの「Tex-the program」のコピーを購入して読んでください。これは読み書きのできるプログラミングです。
cji

10

行ごとの翻訳でさえ、コードの各行の意味を効果的に伝えません。コードの行を理解するプログラマーは、常に多くの要因のコンテキストにあります。マルチスレッドコードの一部のようなものに入ると、英語の翻訳は生のコードよりも意味がありません。複数の機能/ファイルにまたがる機能について考えてください。他のコードを大量に説明しなければ、一部のコードはまったく意味をなしません。依存性注入に関係するさまざまな部分を「行ごとに」説明しようとすると、私が何を意味するかがわかります。神関数の手続き型コードを超えるものはすべて、英語の翻訳を理解するためだけに膨大なプログラミング知識を必要とします。また、if / else決定ステートメントのような単純なものを見てください。行ごとではなく、次の行は実行時データに依存しているためです。次の行は、いくつかの可能性の1つです。アプリケーションが何をするかを説明するまでに、PMをプログラマーにして、2人とも5歳になります。


10

私はプログラミングを教えていたので、私はそれを試して満足しているだけです。

彼はすぐに私がいるので、彼は私を悲しくさせるであろう、彼はのために予想以上になってきて見つけるだろうが好きなものを説明する:-)


3
ここが最良の答えだと思います。私はそれを試してみることをためらうすべてを理解していません。私はあなたがそこに座ってあなたのコードを説明するために報酬を得られることを意味します!地獄、あなたのコードがまったくのくだらないものでない限り、あなたはおそらくそれを楽しむでしょう、そしてそれがどんなに良くても、おそらくいくつかのバグと改善のための場所を見つけるでしょう。
ビルK

1
プロジェクターで表示されたコードを入力しながら、説明をしてくれる先生がいました。たぶん、これは運転のレッスンのようなものです。少なくともすべてのコードを実行できない場合は、何がどのように行われているかをよりよく理解できます。
ジェームズP.

1
私は自分で教育ビジネスに参入しようとしていますが、同様の答えをしました。私は@Billと一緒にいます。人々がそのような隠clus的な姿勢をとることに真剣に失望しています。コードのほんの一部を説明するのに時間を費やす価値があると信じて、私たちはうんざりしていますか?
宮坂

1
@Rei:態度は、良くも悪くも、似たような人々の大きなサブセットを引き継ぐ傾向があります。私は幅広い経験(エンジニア、大学院生、教授、コンサルタント、長期従業員)を経験してきたので、それが展望を与えると思うのが好きです。また、私の態度は長年にわたって変化しました。
マイクダンラベイ

10

あなたの「ボス」に言及するとき、これは「あなた/あなたのチームを担当する中間管理者」ですか?またはあなたの会社の所有者?「時間単位で」支払われますか、それとも「給与」で支払われますか?

上司が説明責任のある中間層マネージャーである場合は、ボスと話してください。上司の要件を満たすために、会社に対する生産性は、現在の3分の1に削減されると指摘します。

あなたの上司が「小切手に署名する人」であれば、同じことを外交的に説明します。あなたの仕事は「コードを書く」から「コードを書く、コードの説明を書く、説明を説明する」に行きました。

ここに画像の説明を入力してください


なぜそれをしてお金を取らないのですか?猿のようなコードを生成するのにあなたの唯一の価値が好きだと確信していますか?
ビルK

9

フローチャートはおそらく彼にとってより有益でしょう。これは確かに珍しい要求であり、マネージャーとしての彼についてはあまり語っていません。


18
実際に、それは...私にこの人について多くのことを伝えます
マージャンVenema氏

5
それは、この文脈で「あまり語らない」という意味です。実際、多くを語っていますが、それは個人についてあまり良いことを示していないだけです。
ジョセフワイスマン

8

あなたの上司があなたが書いたコードを理解するのにいくらかの時間を費やすことをいとわないという事実は、あなたの利益のために使うことができます。彼をCucumberに紹介してみてください:http : //cukes.info/

将来的には上司にBDDテストを作成してもらいます。


私はしばらくの間、店でCucumberを使用しようと試みてきました...残念ながら(または幸運なことに!)上司はそれが機能する限り、舞台裏で何が起こるか気にしません。最初にテストを書くことの利点を彼に理解させることは困難な戦いでした。
ジェイソンルイス

6

彼はそのことを気にしないでください。ソフトウェア開発の実装は変更される可能性があることを彼に伝えてください。イベントのデザインは変更される場合があります。情報の隠蔽、カプセル化、抽象化について彼に話してください。
彼は、あなたのチームの一員として、あなたのコードのクライアントとして、より広い意味で、あなたのコードが行うことの明確で高レベルの抽象化でのみ動作するべきです。コードの任意の層が他の誰かのコードの別の層と同じように機能します。それ以上のことを知っていても、彼は遅くなり、コードの内部動作に基づいて仮定を立てるリスクがあります。あなたがコードを変更しなければならないとき、彼がそれらに基づいて何らかの種類のシステムまたはプロセスを構築した場合、これらの仮定は問題になります。
また、この種の作業を行うと、効率が低下します。2つの異なる場所で後続の変更を行う必要があるだけでなく、仕事の士気にも悪影響を及ぼし、出力がさらに低下します。


6

英語の美しさは、美しく難読化されていることです。これをあなたの利益のために使うなら、あなたは二度とこの種の要求に対処することを強要しないかもしれません。サンプルとしてコードの小さな断片を取り上げますが、非常に抽象化されており、理解しやすいものではありません。それから、あたかもプログラミングの本の章のためにコメントを書いているかのように、技術的な英語でコメントを書きます。長く複雑であるほど、より良い結果が得られます。この1つの機能を文書化するのに何時間かかったかを彼に伝えてください。次に、実際のコードベースの1%の1/10(可能であれば、コード行に基づいた実際の数値を使用してください。おそらくこれよりも悪い)であることを説明します。彼は、英語の翻訳が何を言っているのかわからず、このレベルのドキュメンテーションを行うのに20,000人時を要すると気づいたとき、彼はかなり迅速に後戻りします。しかし、彼の仕事を達成するために非常に真剣に試みてください。ドン;あなたがそれをやってのけることができず、彼があなたが彼をプレイしている疑いがあるなら、これを試さないでください。


6

これは、特別な休日発行の先のとがった髪のボスのディルバートストリップの候補のようです!彼の要求は確かにしない一見合理的。

ユーモアはさておき、彼が本当に必要なものとその理由を見つけて、それを彼に与えるのに何ドルまたは何時間かかるかを彼に助言し、彼がそれに多くのお金を使いたいかどうかを彼に決めさせます。

あなた自身に関しては、彼が一見奇妙に見える要求に応えるのにかかる時間を数え、その時間の一部を投資してあなたを喜んで雇う雇用者のために働く新しい仕事を見つけた方が良いかどうかを判断しますプロとして!


1
費用便益分析が仕事をするはずです。たぶん、マネージャーには持ち込むためのいくつかの追加の利点があります。もしそれが報われないなら、それは上層の経営者を強制し、守るのが難しいです。
mbx

6

彼をあなたのオフィスに連れて来て、彼にあなたのコードのツアーを与えてください。

彼は、彼が不条理な要求をしたことを途中で実感するでしょう、そして、彼は立ち去り、あなたを二度と煩わせません。

あなたが彼があなたのコードを理解しようとするのを手伝うという彼の要求に屈しないなら、彼はあなたを突くための異なっているが等しく不条理な方法を見つけるでしょう。

これは、なだめるよりもなだめる方がうまくいく場合です。


1 -私は同じ線に沿って考えていた-の要求に彼を取る-彼はおそらく長すぎる前に死に退屈および/または怖がって取得します...
ベクトル

+1私はそれが好きです-「擦り傷よりよく働きます」。
マイクダンラベイ

6

これを行う翻訳者「Language X to English」があればとてもいいです。それから人は笑って、問題ない、ボス、あなたはそれをすぐに持っているでしょう。次に、数メガバイトのテキストを含むメールが届きます。

  • aを20個の要素を持つ新しい整数配列とします。
  • xを整数を格納する変数とします。
  • xを0に設定
  • xが20より小さい間、次の2行で規定されていることを行います
  • インデックスxを持つaの配​​列要素を、引数x + 1でnThPrimeを呼び出した結果に設定します
  • xを1増やす
  • ....

別のオプションは、今後シェークスピアでのプログラミングを提案することです。


私は同じ提案をするつもりでした。上司は概念的な概要を望んでおらず、1行ごとにそれを望んでいるので、1日で何かをクランクアウトしたり、まったく役に立たないが表面的に正しいドキュメントを作成したりできます。コーナーケースで簡単に混同されるperlのif-elsの巣であるかどうかは問題ではなく、変数宣言、変数の変更、メソッド呼び出しなどを識別するだけです(行ごとであることを覚えておいてください方法はコードを詐欺します)。
フィルディン

はい、このボスはただ無知です。彼は「抽象化」が何であるかを知らず、英語がコンピュータープログラムを表現するのに良くないことを知らず、彼が本当にそれらすべての詳細を知りたくないと想像することはできません。したがって、彼はこのような教訓に値します。
インゴ

5

私の上司は、コードのナレーション付きの行ごとの英語の説明を望んでいます

タフ。

彼はプログラマーではないので、彼はコードに従うことができないので、すべてを英語に翻訳したいと考えています。

彼がプログラマーでない場合、彼はコードを読んではいけませんまったく。

代わりに高レベルのドキュメントを提供してください。

これは合理的な要求ではありませんか?

番号。


4

プログラマーとして、あなたには本当に「2つの」仕事があります。

1つは、優れたプログラムを作成することです。2つ目は、社内外の顧客に「販売」することです。

あなたの上司の要求はあなたの最初の仕事を「傷つけます」。プログラムを文書化するのにより時間がかかります。他方、彼は実際にあなたをあなたの「第二の」仕事でもっと一生懸命働かせています。

あなたの上司は、あなたのプログラムを英語で文書化して、HISの利益のために、おそらく彼が社内外で対処しなければならない人々の利益のために文書化するよう求めています。彼が彼の仕事をするのを手伝うならば、あなたがより多くのハードウェア、人員、または昇給のためのお金を彼に頼むとき、それはあなたの利益のために働くでしょう。結局のところ、彼はあなたにもっと仕事をするように頼みました。


3
行ごとの文書化!=プロジェクトの販売。この情報を提供するドキュメントが既にあるはずです。これは要件と呼ばれます。私はあなたの2つの仕事の説明に同意しますが、そのレベルまで文書化することはプロジェクト/システム/アプリケーションの販売にとって有益ではありません。あなたの作品を提示するための適切なレベルのドキュメントがありますが、これはそうではありません。
cdkMoose

この会社で小切手を書いている人は、このマネージャーがこれほど多くの会社のリソースを無駄にしていたことを喜ばないでしょう。
-JeffO

@ジェフO:可能性があります。または、全社がこのように、トップまでずっといる可能性があります。
トム・金

4

BDDはこの問題に適していると思いますが、プロジェクトは完成に近づいているように見えますので、現在実装するのはちょっと難しいので、今後の参考になります。

BDDでは、ユースケースは人間が読み取れるドキュメントとして記述され、自動化された機能テストに変換されます。


これはこれまでで最も建設的な提案かもしれません。振る舞い駆動型開発は、まさにこのニーズを満たすように設計されています。プログラマーとそのマネージャー/クライアントがソフトウェアの機能について合意するのを支援するためです。説明を書くことはコードの計画に役立ち、テストを実行すると、それらがまだ正確な説明であることを証明します。
ネイサンロング

4

おそらく、このリクエストはANTLRのようなことを学ぶ良い機会です。ANTLRを取り、あなたの言語の文法を取る、あなたが持っているすべてのコードを解析し、あなたのトラバースASTのすべてのノードに対して生成テンプレートベースの記述を、そのi++ように説明されますincrease i by 1 using postfix increment operator。それは本当に面白いはずです。上司は、このツールをビルドスクリプトに含めることを希望する場合もあるため、変更を加えるたびに、新しいバージョンの機能を説明する〜20 MBの電子メールを受け取ります。

PS冗談です、彼はバカです。


3

私は、これは不合理要求であることに同意しますが、あなたの上司は、の出力のようなもの理解し得るDocco 1を上のコードで、あなたのコードおよびライン・バイ・ラインまたは2列のHTML出力への句ごとの句のコメントを分離し、側と散文の他。もちろん、自分でコメントを入力する必要がありますが、プレゼンテーションは技術に詳しくない読者にとっても、かなり見栄えが良いです。たとえば、Underscore.jsの注釈付きコードの行ごとのコメントセクションを参照してください。Pythonおよびシェルスクリプトバージョンもあります。


これは、この質問で私が見た中で最も有用な答えの1つです。実際にdoccoを使用してみましたが、既存のコメントの一部に問題があり、正しくレンダリングされていませんでした。そのため、代わりにJSDocを使用し、Googleのガイドラインに従ってドキュメントを生成しました。それほどきれいではありませんが、非常に完全であり、標準形式でもあります。私にとってdoccoの問題は、コメントに合わせてコードを構造化する必要があるか、それが意味をなさないことです。提案をありがとう。
ビリームーン

3

あなたの上司が単に知らされておらず、脅迫されている可能性がありますが、実際には合理的な人です。もしそうなら、彼/彼女との推論はうまくいくかもしれません-あなたが「彼が本当に欲しいもの」を提供することを約束するカジュアルな会話。プログラムが何をしているかについての散文ガイド。

それが「私の道か高速道路」に下がったら、今すぐあなたのガソリンをチェックしてください。


3

cucumberなどの動作駆動設計フレームワークを使用して、いくつかの受け入れテストを作成できますか?それはコードを説明しません。それが何をするのかを自然言語で説明します。また、実行可能という利点もあるため、ドキュメントが最新であることを常に確認できます。最新でない場合は、テストランナーが赤くなります。

紹介ビデオをご覧ください。たぶん、新しいボスを見つけている間、それは良い転換です... ;-)


2

あなたのマネージャーは、彼が管理していることを人々が何をするのか理解していないという事実にほとんど間違いなく悩み、彼らが生み出す結果を理解する背景を持っていません。

私は彼がこの解決策を非常に徹底的に考えたのではないかと疑っています。おそらく一見しただけで理にかなっているように思われます。しかし、それは主に、プログラミングコードが実際に何であるかを彼が理解していないためです。

プログラマーなら誰でもこのリクエストの不条理を理解していますが、私たちが理解できるのは、いったん言語を通過すると、明らかになるのはアルゴリズムであり、同様に不可解であるためです。

// Set s to the first address in the server list
server_info *s = cmd->servers;
// Loop until s is NULL
while (s) {
    // call the server's init function passing our current ID and address
    s->init(proc->id,*addr);
    // call log::info with our custom message
    log::info("Starting server %s",s->name);
    // Set s to the value returned by the server's next() function
    s=s->next();
} // end of loop

ここでの問題は、コメントが各行が何をするかを説明しているが、すべての影響が何であるかを理解しない限り、コードが実際に何をするのかまだわからないことです。あなたがプログラマーであり、以前にこのパターンを見たことがあるかどうかは明らかです。しかし、これを売り上げしか理解していない人に見せれば、コメントを読んだ後も以前と同じように混乱します。

上司に基本的なプログラミングを教えることで、実際に時間節約できます。彼があなたのコードを読みたいなら、彼にそうするためのツールを与えてください。ほとんどの言語は構文的にかなりコンパクトであり、構造の学習には1〜2時間しかかかりません。彼は、ほぼ確実に数日後にあきらめますが、少なくとも彼は何を伝えているの、そしてもっと重要なことには彼があなたのコードを読みたくない理由を知っているでしょう。


1

私見...彼が仕事を成し遂げる責任があるなら、彼はそれがどのように機能するかを知る必要があります... :)


2
あなたはマネージャーまたはプログラマーを指していますか?
ネイサンロング

すべての非技術系マネージャーがこの開発者の時間を費やす余裕がある企業はいくつありますか?
-JeffO
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.