Wenn Ihnen jemand eine ungeprüfte Aussage zu Softwareentwicklungspraktiken anbietet, antworten Sie mit „Zitieren erforderlich“? [geschlossen]

14

Kürzlich habe ich einen Vortrag von Greg Wilson (Chefwissenschaftler für Software Carpentry) besucht. Aus dem Abstract:

Die Idee, dass Behauptungen über Softwareentwicklungspraktiken auf Beweisen basieren sollten, ist Softwareentwicklern noch fremd, aber dies beginnt sich zu ändern: Jeder Akademiker, der behauptet, dass ein bestimmtes Tool oder eine bestimmte Praxis die Softwareentwicklung schneller, billiger oder zuverlässiger macht, ist jetzt erwartet, diese Behauptung mit einer Art empirischer Studie zu untermauern.

Insgesamt war der Vortrag sehr informativ und ließ mich sehr tief über meine Herangehensweise an die Entwicklung nachdenken. Insbesondere bin ich jetzt auf der Suche nach Zitaten, die viele Aussagen stützen. Zuvor hatte ich mir angewöhnt, nur die angebotenen Wahrheiten zu wiederholen, vielleicht mit dem Gedanken, sie später noch einmal zu überprüfen.

Ich drückte es unverblümt aus und war leichtgläubig .

Hier ist ein Beispiel aus der Vorlesung:

"Wenn mehr als 25% des Codes überarbeitet werden müssen, ist es schneller, ihn umzuschreiben".

Klingt plausibel, ist es aber wahr? Wo steckt die Studie dahinter? Gilt das für alle Sprachen? Und so weiter.

OK, es ist durchaus möglich, dies zu einem Extrem zu machen und niemandem etwas zu glauben, es sei denn, Sie haben es selbst aus ersten Prinzipien abgeleitet. Auf diese Weise liegt Wahnsinn (oder vielleicht Mathematik ;-)). Wenn jedoch jemand mit einer Aussage in der Art von "Hey, indem Sie dies in [Sprache des Augenblicks auswählen] tun, können wir die Produktivität um [ein Vielfaches von 10]% steigern" auf Sie zukommt, sind Sie dazu geneigt, dies zu tun Akzeptieren Sie es, oder werden Sie nach nachgewiesenen Beweisen fragen?

Wenn es das letztere ist (und ich hoffe es ist) dann

  1. Wo würdest du hingehen, um diese Beweise zu finden?
  2. wie streng würdest du sein

Kurz gesagt, wenn Ihnen jemand eine nicht bestätigte Aussage macht, werden Sie dann mit "Zitieren erforderlich" antworten?

Gary Rowe
quelle
2
In wie vielen Bereichen außerhalb der Wissenschaft verlangen die Menschen empirische Nachweise? Bei meiner Beobachtung nicht annähernd so viele, wie ich möchte.
David Thornley
1
Wie wäre es mit Kommentaren zu den engen Abstimmungen? "Zu lokalisiert" und "Keine echte Frage" sind in diesem Zusammenhang nicht wirklich selbsterklärend.
Inaimathi
1
Ja, auch ich würde gerne die Gründe für die knappen Abstimmungen erfahren.
Robert Harvey
@ Robert Danke für die Bearbeitung. Viel weniger entzündlich bei Reflexion.
Gary Rowe
1
Gute Frage. Ich habe Prof. Wilson letztes Jahr bei CUSEC sprechen sehen und war auch stark von dem beeinflusst, was er zu sagen hatte. Das Beste war, als ein Student ihn aufforderte, seine Behauptung zu zitieren, dass Behauptungen zitiert werden sollten, und er tat es, ohne einen Schlag zu verpassen.
Matthew Read

Antworten:

3

Das Problem bei dieser Art von Aussagen ist, dass selbst wenn Sie empirische Belege für die Behauptung hätten, es sehr schwierig wäre festzustellen, ob die Studie, die zu den Belegen führte, auf Ihre aktuelle Situation zutrifft.

Fast alles im Beruf hat einen Vorbehalt oder mehrere, so dass jede Verbesserung an einem Ort die Wahrscheinlichkeit hat, an einem anderen Ort ein schlechter Dienst zu sein.

Die Leute in den Schützengräben kennen den Unterschied aus Erfahrung und haben im Allgemeinen nicht die finanziellen Mittel, die Zeit und die Ressourcen, um ihn durch eine wissenschaftliche Studie zu beweisen.

Die Leute, die versuchen, dies durch eine wissenschaftliche Studie zu beweisen, verfügen offensichtlich über Ressourcen, um sich solchen Studien zu widmen, und verkaufen Ihnen daher höchstwahrscheinlich etwas. Deshalb würde ich sagen, dass Sie Ihre persönlichen Erfahrungen noch strenger auf alles anwenden sollten, was behauptet durch empirische Untersuchungen gestützt werden.

Wenn Ihnen jemand sagt "Wenn mehr als 2% des Codes umgestaltet werden müssen, ist es schneller, ihn umzuschreiben", dann wissen Sie, dass dies genauso falsch ist, wie wenn Ihnen jemand sagt "Nur wenn mehr als 98% des Codes umgestaltet werden müssen, ist dies der Fall schneller umschreiben ". Wo sich die tatsächliche Zahl befindet, hängt davon ab, was Sie tun und wie weit der aktuelle Code vom Ideal entfernt ist.

Die Idee, dass es nach einem bestimmten Zeitpunkt einfacher ist, einen Nuklearrefaktor zu erstellen, ist in vielen Fällen offensichtlich richtig, aber der tatsächliche Prozentsatz ist eher ein Beispiel, das Sie aus der Sicht Ihrer (Team-) Erfahrung und der aktuellen Situation betrachten müssen.

Rechnung
quelle
+1 für eine gründliche Analyse der Beispielanweisung. Glauben Sie wirklich, dass jede wissenschaftliche Forschung einen kommerziellen Aspekt hat, der jedoch ausgenutzt werden muss? (Verzeihen Sie meine Naivität, aber ich bin wirklich neugierig)
Gary Rowe
@Gary: Alle Dinge sind perfekt, nein, aber es ist sehr schwierig, wenn nicht unmöglich, die Tendenz einer Studie von außen zu bestimmen. Zweifelsohne, wenn es keine vereinbarten Kennzahlen gibt, die die gesamte Situation abdecken
Bill
8
Wenn Ihnen jemand eine ungeprüfte Aussage zu Softwareentwicklungspraktiken anbietet, antworten Sie mit „Zitieren erforderlich“?

Nein, ich poste es hier und sehe nach, ob es irgendwelche Gegenstimmen gibt. Sozialer Beweis ist besser als kein Beweis!

Steven A. Lowe
quelle
2
Sie könnten mit diesem Modell irgendwohin kommen, aber ich schaudere bei dem Gedanken, dass ein Artikel Programmierer zitiert. SE als Quelle.
Inaimathi,
@ Inaimathi: es ist mindestens so zuverlässig wie Wikipedia, wenn nicht mehr!
Steven A. Lowe
+1 für die Suche nach Beweisen - immer einen guten Rat. Wie viele positive Stimmen, bevor Sie es glauben? ;-)
Gary Rowe
1
@ Gary: auf SO, zehn. auf dieser Seite, zwanzig. auf meta, hundert - es sei denn, es handelt sich um Einhörner und Waffeln, in diesem Fall muss es wahr sein
Steven A. Lowe
Ich liebe die Einhornreferenz - ich muss mir eine besorgen
Gary Rowe
4

Viele Entwickler stützen ihre Entscheidungen von Moment zu Moment auf die Erfahrung in den Gräben, in denen sie mit Code arbeiten, und auf die Kunden, denen dieser Code dient.

Wenn eine Klasse oder Methode durch Fehlerkorrekturen und Kundenänderungsanforderungen so fragmentiert wurde, dass sie nicht mehr gewartet werden kann, trifft ein Entwickler manchmal die Entscheidung, sie neu zu schreiben, anstatt sie umzugestalten. Dies spart auf lange Sicht Zeit und Mühe , weil der resultierende Code von höherer Qualität sein wird.

Diese Art der Erfahrung Intelligenz ist, was HR-Abteilungen "Humankapital" nennen. Dies ist eines der Dinge, die erfahrene Entwickler wertvoll machen, und einer der Gründe, warum gute Unternehmen Dinge tun, um die Langlebigkeit ihrer Mitarbeiter zu erhalten.

Es erscheint nicht fair oder sogar praktisch, erfahrene Entwickler aufzufordern, eine Studie und empirische Daten als Beweis für die Gültigkeit ihrer Techniken vorzulegen. Erfahrung funktioniert so nicht. Im Gegenteil, Erfahrung ist so etwas wie ein "gefühlter Sinn". In der Refactoring-Welt nennen wir es oft "Geruch".

Letztendlich kann nicht bewiesen werden, dass eine Aussage wie "Wenn mehr als 25% des Codes überarbeitet werden müssen, ist es schneller, ihn umzuschreiben" unter allen Umständen funktioniert. Die Aussage [Zitieren erforderlich] ist also wirklich ein Weg, um den dogmatischen Programmierer zu informieren, wer versucht, anderen seine Ansichten aufzuzwingen, dass es nicht immer "Sein Weg oder die Autobahn" ist.

Robert Harvey
quelle
Ahh, gutes altes Humankapital und Humanressourcen, diese wunderbaren
Doppelausdrücke,
@Aaronaught: Die Umsetzung eines Konzepts kann manchmal zu kurz kommen. Deshalb fragen skeptische Menschen manchmal nach Beweisen.
Robert Harvey
Wäre es nicht gut, wenn die Umsetzung dieser speziellen Konzepte fehlschlägt?
Aaronaught
+1 für eine gute Nutzung der "Citation Needed" -Verteidigung gegen einen dogmatischen Programmierer - sehr nützlich
Gary Rowe
4

Ich denke mit irgendetwas, das du nie weißt, bis du es versuchst. Selbst mit dem Beweis, eine Aussage zu stützen, ist es immer möglich, Fakten zum Wohle Ihres Standpunkts zu biegen. Davon abgesehen sollten Sie nicht jede neue Sache ausprobieren, die in die Zwischenwebs kommt. Machen Sie Ihr bestes Urteil. Denken Sie daran, wenn etwas zu gut klingt, um wahr zu sein, ist es es wahrscheinlich. Fragen Sie sich immer, warum Sie etwas adoptieren müssen? Was hast du zu gewinnen Ist es aus geschäftlicher Sicht sinnvoll? Nie geblendet außer etwas im Glauben.

Carlosfocker
quelle
+1 für die Frage "Warum müssen Sie etwas adoptieren?" Manchmal ist es gut, von der Vorderkante zurückzutreten.
Gary Rowe
Ich finde, dass Entwickler zu oft in die nächstbeste Sache verwickelt werden, ohne zu analysieren und zu verstehen, wie sie ihnen sowohl nützen als auch schaden können. Ich habe Situationen erlebt, in denen Unternehmen Asp.Net MVC anstelle von Asp.Net Webforms verwenden, TDD jedoch nicht.
Carlosfocker
3

Das Beispiel aus der Vorlesung ist eine Heuristik, eine Faustregel und sonst nichts. Das sollte implizit klar sein.

Heuristiken sind wie alles andere: Sie sind einem bestimmten Kontext unterworfen und von einer beliebigen Anzahl nicht dargestellter Annahmen abhängig, und ihre Nützlichkeit kann sehr unbestimmt sein. Es wird so viel willkürliches Urteilsvermögen benötigt, um sie nützlich zu finden, wie es überhaupt benötigt wird, um sie zu formulieren.

Bedeutet das, dass sie nichts wert sind? Das würde ich gar nicht sagen.

Heuristiken sind einer der Ansätze, mit denen wir NP-vollständige Probleme angehen können, und in vielerlei Hinsicht ist das Software-Engineering selbst ein NP-vollständiges Problem.

Adam Crossland
quelle
Gute Argumente. =)
Pablo
1

Es hängt davon ab, ob. :) Wenn jemandes Aussage einer wiederholten, reflektierten und persönlich überprüften Erfahrung widerspricht, dann würde ich gerne eine Art Referenz einer Studie sehen. Wenn andererseits jemand eine Idee wiederholt, die Sie oft gesehen und gelebt haben, kommt es nicht zu einer großen Reaktion (was jedoch nicht bedeutet, dass die Idee unfehlbar ist).

Zum Beispiel zitiert das Buch "Code Complete" in jedem Kapitel eine Vielzahl von Studien, um zu verdeutlichen, dass es sich manchmal um scheinbar kleine Dinge handelt (wie Einrückungen und Abstände oder variable Namenslängen). Ich erinnere mich an einige (jüngere) Entwickler, denen ich das Buch vorstellte und die dumm dachten, dass diese Detailgenauigkeit und Beweiskraft dumm waren. Einige Monate später hatten einige der gleichen Entwickler jedoch die Ehrlichkeit, zuzugeben, dass sogar die Anzahl der Leerzeichen im Einzug eine Rolle spielt. Gute Kommentare sind wichtig. Kapselung ist wichtig. usw. usw.

Wenn ein Anbieter behauptet, dass eine neue IDE 50% produktiver ist, lautet meine erste Reaktion bull $% ^ &!

Limist
quelle
1
Es kommt darauf an, aber auch die vollständigen Beispiele für den Code hängen von Ihrer Situation ab. Zum Beispiel: Wenn Sie ein Parsing-Formatierungsprogramm haben und Ihr Diff-Tool Leerzeichen ignoriert, wird das Einrückungsargument ziemlich trivial
Bill
1
+1 für das Beispiel Code Complete (gilt auch für Rapid Development des gleichen Autors Steve McConnell).
Gary Rowe
@Bill Es ist interessant, dass die Probleme, die früher nachweispflichtig waren, mit der Verbesserung der Technologie verschwinden. Ich frage mich, ob dies ein Effekt ist, der unser Bedürfnis nach Nachweisen verringert.
Gary Rowe
1
@gary Ich denke nicht, dass dies (im allgemeinen Sinne) eine Verbesserung ist, sondern vielmehr eine Variation. Die Beispiele mit vollständigem Code beziehen sich definitiv auf ein bestimmtes Toolset zu einem bestimmten Zeitpunkt. Sie sind also beide, aber der Typ "Wann muss refaktoriert werden?" Hat viel mehr mit der Situation zu tun als mit der Technik. Denken Sie an eine sicherheitskritische Software in einem Fahrzeug im Vergleich zu einer Datenverarbeitungslösung. Die Testanforderungen an das Sicherheitssystem werden viel höher sein, so dass der Refaktorpunkt immer viel höher sein wird, bevor es einen Nettogewinn gibt.
Bill
1

Ist das nicht etwas, das von vielen immateriellen Variablen abhängt (Variablen, die sich nicht wissenschaftlich messen lassen)?

Meiner Meinung nach handelt es sich um eine empirische Methode zur Messung von Emotionen. Etwas, das nicht einmal Spock erreichen konnte. =)

Pablo
quelle
1
+1 für eine interessante Einstellung. Wenn Sie das (absichtlich) wollige Beispiel beiseite lassen und jemand zu Ihnen sagte, Rails sei ein besserer Rahmen als SpringMVC, wie würden Sie dann vorgehen, um die Gültigkeit zu bestimmen?
Gary Rowe
Wie Benjamin Graham in seinem klassischen Buch über das Investieren ("Sicherheitsanalyse") feststellt, sollten (Investitions-) Instrumente in zwei verschiedenen, aber einsamen Aspekten gemessen werden: in der qualitativen (immaterielle Gefühle) und in der quantitativen (reelle Zahlen, Mathematik) , Berechnung, Logik).
Pablo
Das Quantitative ist das, was Sie mit einer wissenschaftlichen Methode messen. Das Qualitative ist das, was Sie an Ihrem eigenen Instinkt messen. Es ist nicht möglich, Emotionen gegen Emotionen zu beurteilen, ohne Emotionen über die Analyse zu haben.
Pablo
Wenn wir von Meinungen und Unterschieden in ihnen sprechen, können wir uns gelinde gesagt nicht auf eine vernünftige, wissenschaftliche und greifbare Methode einigen, um die Zusammenfassung zu messen.
Pablo
Meine Antwort ist, dass wir nur technische Aspekte messen können, keine abstrakten Gedanken / Meinungen. Außerdem will ich nicht wie ein Esel klingen. Diese Posts waren nicht als dumme Antwort gedacht.
Pablo