Sollte ein Entwickler gezwungen sein, sich Details zu merken? [geschlossen]

33

Oft vergesse ich Dinge über meine Bewerbung. Ich merke mir weder die Tabellennamen noch die Ergebnisse einer Abfrage und suche nach dem, was ich will. Mein Teamleiter sagte mir, ich solle mir die von mir verwendeten Tabellennamen merken.

Muss sich der Entwickler die Tabellennamen in der Datenbank, die Klassennamen usw. merken? Und wenn die Antwort "Ja, immer" ist, was soll ich tun, um mich an diese Dinge zu erinnern?

Anyname Donotcare
quelle
27
Ich wünschte, ich könnte sie vergessen.
JeffO
6
Sagen Sie ihm, dass er mit der linken Hand schreiben soll (was für manche sehr einfach und für andere sehr schwer ist).
Job
4
"Zum Speichern von Tabellennamen gezwungen" ??? WTF !? „Jeder muss diese zehntausend Spaltennamen bis zum Ende der Woche lernen! Dann wird es einen Test geben; Wer nicht 100% bekommt, wird meinem privaten Stolz tollwütiger Löwen zuerst die Füße zwangsernährt !!! Bwahahahahaa !!!!! ”
Donal Fellows
4
Als ich ein Koop-Student war, habe ich mit einem Mann zusammengearbeitet, der genau das von mir verlangte und mir sagte, ich würde "Zeit verschwenden", als ich nachschlug. wenn ich Tabellennamen (und deren Inhalt) nicht aus dem Gedächtnis lesen konnte und mein mangelndes Engagement, Tabellennamen auswendig zu lernen, als Ausrede dafür benutzte, mich nicht mehr zu betreuen. Ich habe ihn in meinem Koop-Bericht verheert.
user16764
2
Nicht auswendig lernen, auswendig lernen.
tylermac

Antworten:

63

Sie sollten sich diese Dinge nicht explizit merken müssen . Damit meine ich, setzen Sie sich und lernen Sie sie wie eine Liste von Wörtern für eine Rechtschreibprüfung. In erster Linie sollten die Namen einprägsam und auffindbar sein , damit Sie sie ohne großen Aufwand wiederfinden können.

Sie sollten auch Zugriff auf Tools haben, die Ihnen bei der automatischen Vervollständigung und dergleichen helfen.

In einem großen System von über 100 Tabellen kann man nicht wirklich erwarten, dass Sie sich an jeden Tabellennamen und jeden Spaltennamen erinnern. Bei einprägsamen, auffindbaren Namen und der regelmäßigen Verwendung sollten Sie sich jedoch an die wichtigsten Details und die Details erinnern, die Sie jeweils verwenden Tag.

ChrisF
quelle
6
Nachdem ich in einer App mit 4k-Tabellen gearbeitet habe, kann ich die Nützlichkeit dieses Hinweises bestätigen. Das Auswendiglernen hilft nicht, Projektkonventionen tun es (insbesondere, wenn sie durchgesetzt werden; und wenn nicht, müssen Sie sich auf Ihr Gedächtnis verlassen).
Vineet Reynolds
1
Erstellen Sie zur besseren Erkennbarkeit Spickzettel und / oder (Modell-) Diagramme der benötigten Elemente. Auf diese Weise müssen Sie sich nur Ihr Papier oder Dokument / Bild ansehen und können nach den Tabellen- und Spaltennamen suchen, die Sie benötigen.
Kissaki
34

Einstein sagte: "Merke dir niemals, was du nachschlagen kannst [in Büchern]", und ich stimme vollkommen zu.

Verwenden Sie Ihr Gedächtnis für abstrakte Dinge (Entwicklungstechniken und -prinzipien) und nicht für Fakten, die Sie finden können, wenn Sie sie benötigen.

Fröhliche Katze
quelle
yep ... merke es dir nicht, es wird kommen, wenn du die Informationen verwendest. Halten Sie jedoch die Referenzdokumente für diesen Artikel jederzeit bereit.
Newtopian
17

Peinlich zuzugeben - ich benutze C seit fast 30 Jahren, kann mich aber nicht erinnern, wie man Funktionszeiger deklariert - ich muss immer K & R verlassen, um die Syntax zu überprüfen.

Noch peinlicher ist es, dass ich mir wirklich Gedanken darüber machen muss, wie typedef funktioniert.

 typedef foo int;

oder

 typedef int foo;

Das sind meine persönlichen blinden Flecken. Ich würde mir keine Sorgen machen, wenn Sie ähnliche haben.

Neil Butterworth
quelle
2
+1: Ich habe 1985 mit der Programmierung von C begonnen und muss noch nachsehen, wie Funktionszeiger deklariert werden. Ich habe neulich einen Stich gemacht und es hat funktioniert, und ich war ziemlich zufrieden mit mir. (Ich erinnere mich, wie man Typedefs macht ... :-)
Bob Murphy
2
Ich bin froh, dass in der Sprache, mit der ich arbeite (C #), das Äquivalent von Funktionszeigern tatsächlich vom Menschen analysiert werden kann, nicht nur vom Compiler.
Svick
@svick Oh, ich habe kein Problem damit, Funktionszeiger zu lesen. Ich erinnere mich, wie ich sie schreibe, mit denen ich Probleme habe.
Neil Butterworth
3
Ich habe die C- oder C ++ - Rangfolgetabellen bewusst nicht auswendig gelernt. Ich habe sie zum sofortigen Nachschlagen zur Hand, wenn ich sie brauche, und ich möchte wirklich keinen Code schreiben, der jemanden verwirrt, der sie nicht auswendig gelernt hat.
David Thornley
Code, der von nicht offensichtlichen Prioritätsregeln abhängt, ist fehlerhafter Code.
Gort the Robot
9

Computer sind gut darin, sich Dinge genau zu merken. Computer sind auch gut darin, Dinge zu finden, an die sie sich zuvor erinnert haben.

Die wichtigste Fähigkeit ist es also, den Computer als Erweiterung Ihres Gedächtnisses zu verwenden. Schreiben Sie sauberen Code, dokumentieren Sie Dokumente, lernen Sie, Suchwerkzeuge effektiv zu verwenden, richten Sie Ihre Entwicklungsumgebung so ein, dass Sie leicht Dinge finden können usw.

Ein netter Nebeneffekt ist, dass Sie es auch anderen leichter machen, Ihren Code zu lesen.

tdammers
quelle
5

Gedächtnis ist wichtig

Ein starkes Gedächtnis ist in der Tat eines der besten Talente, die ein Entwickler haben kann. Eigentlich kann das jeder haben. Es ist wirklich etwas Besonderes und ich beneide und bewundere die, die damit gesegnet sind. Es kann definitiv jemandem helfen, ein stärkerer Entwickler, Anwalt, Mechaniker oder (geben Sie hier den Job Ihrer Wahl ein) zu sein.

Wie viel sollte benötigt werden?

Aber ich glaube nicht, dass es eine faire Voraussetzung ist, alles auswendig zu lernen. Ich glaube, dass Sie anfangen werden, Dinge in Erinnerung zu rufen, wenn Sie Dinge tun. Aus diesem Grund ist es nicht dasselbe, ein Buch über eine Sprache zu lesen und in einer Produktionsumgebung zu verwenden. Wenn Sie täglich mit etwas arbeiten (manche würden dies als "Übung" bezeichnen), werden Sie beginnen, einige Dinge zur zweiten Natur zu machen.

Wie auch bei den anderen Postern glaube ich, dass es hilfreich ist, wichtige Teile der Anwendung auswendig zu lernen. Ich bin mir jedoch nicht sicher, ob es sich lohnt, in das Auswendiglernen zu investieren, wenn Sie Funktionen wie Intellisense nutzen können, die in modernen Tools immer häufiger zum Einsatz kommen.

Wie können Sie sich verbessern?

Ich bin kein Experte für das Gedächtnis, aber einige glauben, dass Sie das Gedächtnis tatsächlich durch mentale Übungen wie Gehirnspiele (Kreuzworträtsel, Sudoku, Rätsel usw.) verbessern können. Die Theorie besagt, dass Ihr Gehirn wie ein Muskel ist. Wenn Sie ihn auf unterschiedliche Weise verwenden und trainieren, können Sie ihn stärken.

Es wäre interessant zu sehen, wie sich Dinge wie Gehirnspiele, Programmieren und interaktive Aktivitäten im Laufe der Zeit auf das Gehirn auswirken. Könnten solche Dinge helfen, den beginnenden Gedächtnisverlust zu bekämpfen, der durch Alter oder Demenz hervorgerufen wird?

Bernard Dy
quelle
5

Woher ich komme, gibt es ein altes Sprichwort, das auf Englisch ungefähr so ​​lautet: "Ein Narr merkt sich das, ein kluger Mann schreibt es auf". Grundsätzlich, egal wie gut Ihr Gedächtnis ist, werden Sie vergessen . Du bist nur ein Mensch. Infolgedessen ist es unzuverlässig, sich auf das menschliche Gedächtnis zu verlassen. Selbst wenn Sie glauben, dass Sie sich an diese Tabellennamen erinnern, können Sie dann 100% sicher sein? Sie brauchen nur ein paar Sekunden, um nach Tabellennamen zu suchen, aber möglicherweise Stunden oder sogar Tage, um Fehler aufzuspüren, die durch die falsche Schreibweise verursacht wurden.

Nein, es ist eine lächerliche Anforderung, insbesondere bei großen Projekten, die Tausende von Tabellen und Klassen enthalten können.

Davor Ždralo
quelle
3

Wenn es sich um etwas handelt, an dem Sie gerade arbeiten, und es sich um eine langfristige Aufgabe handelt, sollten Sie auf das Lernen hinarbeiten und in der Lage sein, sich verschiedene Tabellen- und Spaltennamen, Klassen, Variablen und Methoden zu merken. Dies ist etwas, das durch die Zeit kommen wird, wenn Sie mit ihnen arbeiten. Sie werden sie nicht alle über Nacht lernen, aber Sie sollten sich bemühen, so viel über das System zu wissen, an dem Sie arbeiten, wie Sie können. In einem großen System gibt es auch keine Möglichkeit, alles auswendig zu lernen, aber es gibt keinen Grund, nicht so viel zu lernen und sich daran zu erinnern, wie Sie können.

Das ständige Nachschlagen ist nur ein Nachteil für die Produktivität. Wenn Sie an einer Aufgabe arbeiten und alle paar Minuten anhalten und nachschlagen müssen, bedeutet dies eine Konzentrationsunterbrechung. Verwenden Sie geeignete Hilfsmittel, um Sie zu unterstützen und zu lernen, was Sie können. Es wird Ihre Produktivität erheblich verbessern.

Thomas Owens
quelle
1
Ich bin überhaupt nicht einverstanden, mich an Details zu erinnern. Sie sollten sich an Konzepte und Funktionen erinnern. Das heißt, Sie müssen wissen, was Ihr System kann und wie Sie herausfinden können, wie genau die Methode / Variable / der Spaltenname lautet.
edA-qa mort-ora-y
1
Ich würde nicht erwarten, dass Sie alles wissen, aber ich würde erwarten, dass jeder, der an einem bestimmten Subsystem arbeitet, dieses Subsystem von innen und außen kennt. Ich würde dieses Wissen als wichtig für Ihre Arbeit betrachten.
Thomas Owens
3

Ist es sinnvoll, sich genaue Klassennamen zu merken? Ich glaube nicht.

Ist es sinnvoll zu wissen, welche Art von Begriffen Ihr Projekt in Klassennamen verwendet, damit Sie schneller danach suchen können? Bestimmt.

Scott McIntyre
quelle
2

Ich bin nicht einverstanden, dass Sie die Tabellennamen auswendig lernen, aber sie sollten leicht zu erraten sein. Seien Sie konsistent, um das Erraten zu vereinfachen. Auf diese Weise werden Sie sich nicht fragen: "Hmm ... ist die foo-Tabelle Plural oder Singular? Ist die Primärschlüssel-ID oder RID oder FooRID?"

Earlz
quelle
2

Ich weiß nicht, wie Sie eine Datenbank jederzeit abfragen können, ohne die wichtigsten Tabellennamen und kritischen Spaltennamen (aber sicherlich nicht alles) kennenzulernen. Ich kenne die Leute, die dieses Zeug kennen, ohne es jedes Mal herausfinden zu müssen. Sie werden für die Organisation wertvoller und die "go to" Leute, wenn andere stecken bleiben.

Ich stelle fest, dass Leute, die diese Dinge nicht lernen, häufig Fehler in Abfragen machen, ohne es zu merken. Fehler, die ich bei Codeüberprüfungen häufig sofort bemerke, weil ich unsere Datenbankstruktur verstehe und weiß, wie die Tabellen zueinander in Beziehung stehen und welche Geschäftsregeln kritisch sind, ohne sie nachschlagen zu müssen.

Persönlich stelle ich fest, dass Leute, die sich nicht die Mühe machen, die Struktur zu lernen, beim Abfragen dieser bestimmten Datenbank häufig auf Anfängerniveau bleiben. Sie neigen auch dazu, Entlassungen nicht zu überleben. Ich denke, Ihr Chef versucht, Ihnen einen Gefallen zu tun, damit Sie mehr Aufmerksamkeit schenken.

HLGEM
quelle
1

Mehr als das starke Gedächtnis hilft vor allem das domänengetriebene Design, bei dem einfache Konventionen wie Tabellennamen und Klassennamen gleich sind. Wenn Ihr Geschäftsinhaber mit Ihnen über die Anforderung spricht, sollten die von ihm verwendeten domänenspezifischen Begriffe im Code enthalten sein. In diesem Fall müssen wir uns nicht an die Zuordnungen zwischen Geschäftsbegriffen und Namen im Code erinnern. Es dauert eine Weile, bis sich diese Angewohnheit durchsetzt, aber es ist sehr nützlich, da es auch Übersetzungsfehler zwischen den Geschäftsinhabern und Entwicklern verringert.

Wenn die Dauer des Projekts sehr lang ist, hilft es unbewusst, sich über einen bestimmten Zeitraum mit der Codebasis vertraut zu machen.

Vinod R
quelle
Entschuldigung, könnten Sie erklären, was das bedeutet domain driven design?
Anyname Donotcare
1
@just_name Ich begann mit dieser martinfowler.com/bliki/EvansClassification.html
Vinod R