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
- Wo würdest du hingehen, um diese Beweise zu finden?
- wie streng würdest du sein
Kurz gesagt, wenn Ihnen jemand eine nicht bestätigte Aussage macht, werden Sie dann mit "Zitieren erforderlich" antworten?
Antworten:
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.
quelle
Nein, ich poste es hier und sehe nach, ob es irgendwelche Gegenstimmen gibt. Sozialer Beweis ist besser als kein Beweis!
quelle
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.
quelle
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.
quelle
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.
quelle
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 $% ^ &!
quelle
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. =)
quelle