ソフトウェア開発の実践に関する未確認の声明を誰かが提供した場合、「引用が必要」と答えますか?[閉まっている]


14

最近、グレッグウィルソン(ソフトウェア大工仕事の最高科学者)の講義に出席しました。要約から:

ソフトウェア開発の実践についての主張は証拠に基づいているべきであるという考えはまだソフトウェア開発者にとって異質ですが、これはついに変わり始めています:特定のツールまたは実践がソフトウェア開発をより速く、より安く、またはより信頼できると主張する学者は現在ある種の実証研究でその主張を裏付けると期待されていました。

全体として、講義は非常に有益であり、開発への私のアプローチについて非常に深く考えさせられました。特に、私は今、引用を探して多くのステートメントをバックアップしていることに気づきました。以前は、提供された真実を単純に繰り返す習慣に陥っていました。おそらく後で確認するための精神的なメモがありました。

率直に言って私はだまされていました

講義からの例を以下に示します。

「コードの25%を超えるリファクタリングが必要な場合、コードを書き直す方が迅速です」。

もっともらしいですが、本当ですか?これを裏付ける研究はどこにありますか?すべての言語に当てはまりますか?等々。

OK、これを極端なものにして、第一原理から自分で導き出さない限り、誰にも信じられないことは十分にあります。その方法は、狂気(または多分数学;-))です。しかし、誰かが「ねえ、これを[瞬間の言語]で行うことで、生産性を[10の倍数]%で]増やす」という文言であなたに近づいたら、それを受け入れるか、実証済みの証拠を求めるつもりですか?

後者の場合(そしてそうであることを願っています)

  1. この証拠をどこで見つけますか?
  2. あなたはどのくらい厳しいですか?

要するに、誰かがあなたに未確認の声明を提供した場合、あなたは「要出典」で応答しますか?


2
科学以外の分野では、経験的証拠を必要とする分野はいくつありますか?私の観察では、私が望むほど多くはありません。
デビッドソーンリー

1
投票結果についてのコメントはいかがですか?「あまりにもローカライズされている」と「本当の質問ではない」は、この文脈では実際には自明ではありません。
イナイマシ

1
はい、私も投票の背後にある理由を知りたいです。
ロバートハーベイ

@Robert編集していただきありがとうございます。反射ではるかに少ない炎症。
ゲイリーロウ

1
いい質問ですね。昨年ウィルソン教授がCUSECで講演したのを見て、彼の発言に大きな影響を受けました。最良の部分は、学生が主張を引用すべきであるという主張を引用するように彼に挑戦したときであり、彼はビートを逃さずにした。
マシュー

回答:


3

この種の声明の問題は、主張を支持する経験的証拠があったとしても、証拠につながる研究があなたの現在の状況に当てはまるかどうかを判断することは非常に難しいことです。

専門職のほぼすべてに警告がありますが、1つの場所でのすべての改善には、どこか他の人に損害を与える可能性があります。

trenchにいる人々は経験を通して違いを知っており、一般に科学的研究を通してそれを証明しようとする資金/時間/資源を持っていません。

科学的研究を通してそれを証明しようとする人々は明らかにそのような研究に専念するリソースを持っているので、あなたに何かを売る可能性が非常に高いので、私はあなたが主張するものにあなた自身の個人的な経験をさらに厳格に適用すべきであると言うでしょう実証研究によってバックアップされます。

誰かが「コードの2%以上がリファクタリングを必要とする場合、それをリライトする方が速い」と言われたら、誰かがあなたに「コードの98%以上がリファクタリングを必要とする場合のみ、それは書き直しが速い」実際の数がどこにあるかは、あなたが何をしているか、そして現在のコードが理想からどれだけ離れているかに依存します。

ある時点の後、核リファクタリングを行う方が簡単であるという考えは多くの場合明らかに当てはまりますが、実際の割合は、(チームの)自分の経験と現在の状況を考慮して検討する必要がある例の多くです。


例文の徹底的な分析のために+1。しかし、すべての科学研究には商業的な角度があり、それを活用する必要があると本当に思いますか?(私の素朴さを許しますが、私はこれについて本当に興味があります)
ゲイリーロウ

@Gary:すべてが完璧ではありませんが、外部から研究のバイアスを判断することは不可能ではないにしても、非常に困難です。二重に、状況全体をカバーする合意された測定基準がない場合
法案

8
ソフトウェア開発の実践に関する未確認の声明を誰かが提供した場合、「引用が必要」と答えますか?

いいえ、ここに投稿し、賛成票が出るかどうかを確認します。社会的証拠は、証拠なしよりも優れています!


2
あなたはこのモデルでどこかに行き着くかもしれませんが、私はプログラマーをソースとして引用する論文の考えに震えています。
イナイマシ

@Inaimathi:少なくともウィキペディアと同じくらい信頼性があります。
スティーブンA.ロウ

証明を求めるための+1-常に良いアドバイス。あなたはそれを信じる前に何回賛成票を投じましたか ;-)
ゲイリーロウ

1
@ゲイリー:そう、10。このサイトでは、20。メタ、100-ユニコーンとワッフルが含まれている場合を除き、その場合真実でなければなりませ
スティーブンA.ロウ

ユニコーンの参照が大好き-それらの1つを取得する必要があります
ゲイリーロウ

4

多くの開発者は、コードとそのコードがサービスを提供する顧客との共同作業の経験に基づいて、瞬間的な判断を下します。

クラスまたはメソッドがバグ修正や顧客の変更要求によって非常に断片化され、維持できなくなった場合、開発者は、長期にわたって時間と労力を節約するという理論の下で、リファクタリングではなく書き換えを決定することがあります、結果のコードはより高品質になるためです。

この種のエクスペリエンスインテリジェンスは、人事部門が「人的資本」と呼ぶものです。これは、経験豊富な開発者を価値あるものにするものの1つであり、優れた企業が人々の寿命を延ばすために努力する理由の1つです。

経験豊富な開発者に、彼らの技術が有効であることの証拠として研究と経験的データを考え出すように依頼することは、公平でも実用的でもありません。経験はそのようには機能しません。それどころか、経験は「フェルトセンス」のようなものです。リファクタリングの世界では、私たちはしばしばそれを「匂い」と呼びます。

最終的に、「コードの25%以上がリファクタリングを必要とする場合、それをリライトするのが速い」などのステートメントは、すべての状況下で機能することが証明できないため、ステートメント[要出典]は本当に独断的なプログラマーに通知する方法です常に「His Way or the Highway」ではないという他者への彼の見解を強要しようとしています。


ああ、古き良き人間の資本や人的資源、どこでも労働者の継続的な非人間を推進し、これらの素晴らしいツインフレーズ...
Aaronaught

@Aaronaught:概念の実行は、それを記述するために使用される高尚な語彙に足りない場合があります。懐疑的な人々が時々証拠を要求するのはそのためです。
ロバートハーベイ

これらの特定の概念の実行が不足するのは良いことではないでしょうか?
アーロンノート

非常に便利-をうまく利用のための+1独断的なプログラマに対する防御「参照は必要」
ゲイリー・ロウ

4

私はあなたがそれを試してみるまで知らないことなら何でも考えます。ステートメントをバックアップする証拠があるとしても、あなたの主張の利益のために事実を曲げることは常に可能です。インターウェブにヒットするすべての新しいことを試すべきではないと言われています。最善の判断を下してください。覚えておいて、何かが本当であるには余りにも良い音である場合、それはおそらくそうです。なぜ何かを採用する必要があるのか​​、常に自問してみてください。何を得る必要がありますか?将来のビジネスからそれは理にかなっていますか?信仰上の何かを除いて決して盲目にしないでください。


「なぜあなたは何かを採用する必要があるのか​​」を尋ねた+1。場合によっては、リーディングエッジから後退することは良いことです。
ゲイリーロウ

開発者は、分析し、それがどのように彼らに利益と抑止をもたらすかを理解することなく、次の最高のものに追いつくことがあまりにも多いと思います。組織がAsp.Net Webformsを介してAsp.Net MVCのようなものを採用するが、TDDを採用しない状況を見てきました。
カルロスフォッカー

3

講義の例は、経験則、経験則であり、それ以上のものではありません。それは暗黙のうちに明白なはずです。

ヒューリスティックは他の何かと同じです。特定のコンテキストに依存し、任意の数の無言の仮定に依存し、その有用性は非常に非決定的です。そもそもそれらを定式化するのと同様に、多くのuseful意的な判断がそれらの有用性を見つけることになります。

それは彼らが価値がないことを意味しますか?私はまったくそうは言いません。

ヒューリスティックはNP完全問題に対処するためのアプローチの1つであり、多くの点で、ソフトウェアエンジニアリング自体がNP完全問題です。


良い点。=)
パブロ

1

場合によります。:)誰かの声明が、繰り返され、反映され、個人的に検証された経験と矛盾する場合、はい、研究の何らかの参照を参照したいと思います。一方で、誰かがあなたが見たものや何度も生きてきたアイデアをエコーし​​た場合、それほど反応は生じません(ただし、そのアイデアが完全であるという意味ではありません)。

一例として、本「Code Complete」は、各章の研究のスコアを引用してそのポイントを示し、時には一見小さな問題(インデントとスペース、または変数名の長さなど)について述べています。そのレベルの詳細と証拠はばかげていると考えて本を紹介した(若い)開発者を思い出します。しかし、数か月後、プロダクションコーディングの経験が増え、いくつかのコードレビューを行った後、同じ開発者の中には、インデントのスペースの数が重要であることを認める誠実さを持ちました。良いコメントが重要です。カプセル化が重要です。などなど

一方、ベンダーが新しいIDEの生産性を50%向上すると主張したとき、私の最初の反応はbull $%^&!です。


1
それは異なりますが、コードの完全な例でさえあなたの状況に依存します。例:あなたは、インデントの引数はかなり些細なり、空白の解析フォーマッタとあなたの差分ツールを無視している場合
ビル・

1
コード完了の例の+1(同じ著者のSteve McConnellによるRapid Developmentの場合も同様)。
ゲイリーロウ

@Billテクノロジーが改善するにつれて、証明が必要だった問題が以前に消えてしまうのは興味深いことです。これが証明を求める必要性を減らす効果なのだろうか?
ゲイリーロウ

1
@garyこれは(一般的な意味では)バリエーションと同じくらい改善されているとは思いません。コードの完全な例では、特定の時点で特定のツールセットを確実に参照しているため、両方ともありますが、「リファクタリングのタイミング」タイプは、技術よりも状況に大きく関係しています。車両内の安全性が重要なソフトウェアとデータ処理ソリューションを考えてください。安全性システムではテスト要件がはるかに高くなるため、純利益が得られる前にリファクタリングポイントは常にはるかに高くなります。
ビル

1

それは無形の変数(科学的に測定する方法のない変数)の多くに依存するものではありませんか?

私の意見では、彼らは感情を測定するための経験的な方法について話している。スポックでさえ達成できなかったこと。=)


1
+1をお楽しみください。(意図的に)羊毛質の例を脇に置いて、誰かがRailsがSpringMVCよりも優れたフレームワークであるとあなたに言ったら、どうやってその妥当性を判断しますか?
ゲイリーロウ

ベンジャミン・グラハムが投資についての古典的な本(「セキュリティ分析」)で述べているように、その(投資)ツールは2つの異なるが孤独な側面で測定されるべきでした。 、計算、ロジック)。
パブロ

量的とは、科学的な方法で測定しているものです。定性は、あなたがあなた自身の本能を通して測定するものです。分析に関する感情がなければ、感情と感情を判断することはできません。
パブロ

控えめに言っても、意見や意見の違いについて話すとき、要約を測定するための合理的、科学的、具体的な方法に同意することはできません。
パブロ

私の答えは、抽象的な思考/意見ではなく、技術的な側面のみを測定できるということです。また、私はお尻のように聞こえるつもりはありません。これらの投稿は、ある種の愚かな反応を意味するものではありませんでした。
パブロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.