Plusieurs fois, j'oublie des choses à propos de ma candidature. Je ne mémorise pas les noms de table ou ce qu'une requête a fait et je cherche à obtenir ce que je veux. Mon chef d'équipe m'a dit que je devais mémoriser les noms de table que j'utilise.
Le développeur doit-il mémoriser les noms de table dans la base de données, les noms de classes, etc.? Et si la réponse est "Oui, tout le temps", que dois-je faire pour me souvenir de ces choses?
Réponses:
Vous ne devriez pas avoir besoin de mémoriser explicitement ces choses. Je veux dire par là, assieds-toi et apprends-les comme une liste de mots pour un test d'orthographe. En premier lieu, les noms doivent être mémorisables et découvrables afin que vous puissiez les retrouver sans trop d'effort.
Vous devriez également avoir accès à des outils qui vous aident ici avec l'auto-complétion, etc.
Dans un grand système de plus de 100 tables, vous ne devez absolument pas vous souvenir de chaque nom de table et de colonne. Cependant, avec des noms mémorables et faciles à découvrir et une utilisation régulière, vous devez vous rappeler les détails les plus importants et ceux que vous utilisez journée.
la source
Einstein a déclaré "ne jamais mémoriser ce que vous pouvez rechercher [dans les livres]", et je suis tout à fait d'accord.
Utilisez votre mémoire pour des éléments abstraits (techniques et principes de développement) et non pour des faits que vous pouvez trouver quand vous en avez besoin.
la source
C'est gênant d'admettre - j'utilise C depuis près de 30 ans maintenant, mais je ne me souviens jamais comment déclarer des pointeurs de fonction - je dois toujours obtenir K & R pour vérifier la syntaxe.
Encore plus embarrassant, je dois réfléchir très sérieusement au fonctionnement de typedef - est-ce:
ou
Ce sont mes angles morts personnels. Je ne m'inquiéterais pas si vous en avez de semblables.
la source
Les ordinateurs sont bons pour se souvenir des choses exactement. Les ordinateurs sont également efficaces pour rechercher des éléments dont ils se souvenaient auparavant.
La compétence clé consiste donc à utiliser l'ordinateur comme extension de votre mémoire. Écrivez un code propre, documentez des éléments, apprenez à utiliser efficacement les outils de recherche, configurez votre environnement de développement de manière à ce qu'il soit facile de trouver des éléments, etc.
Un bel effet secondaire est que vous aiderez également les autres à lire votre code.
la source
La mémoire est importante
Une mémoire forte est en effet l'un des meilleurs talents qu'un développeur puisse avoir; en fait, tout le monde peut en avoir. C'est vraiment une chose spéciale et j'envie et admire ceux qui en sont bénis. Cela peut certainement aider une personne à devenir un développeur, un avocat, un mécanicien ou un (un emploi de choix choisi ici) plus fort.
Combien devrait être nécessaire?
Mais je ne crois pas qu'il soit juste d'exiger la mémorisation de toutes choses. Je crois que vous allez commencer à mémoriser des choses en tant que partie intégrante de vos activités. C'est pourquoi lire un livre sur une langue et l'utiliser dans un environnement de production ne sont pas la même chose. En travaillant quotidiennement avec quelque chose (certains appellent cela une "pratique"), vous commencerez à faire des choses de la seconde nature.
Comme pour les autres affiches, je pense que la mémorisation des éléments clés de l'application est utile. Cependant, je ne suis pas sûr que l’investissement dans la mémorisation de toutes ces ressources en vaut la peine si vous pouvez tirer parti de fonctionnalités telles que intellisense, qui est de plus en plus courante dans les outils modernes.
Comment pouvez-vous améliorer?
Je ne suis pas un expert en mémoire, mais certains pensent que vous pouvez réellement améliorer votre mémoire grâce à des exercices mentaux tels que des jeux de réflexion (mots croisés, mots croisés, sudoku, énigmes, etc.). La théorie est que votre cerveau est comme un muscle et que si vous l'utilisez de différentes manières et que vous l'exercez, vous pouvez le renforcer.
Il serait intéressant de voir des études sur la manière dont des choses telles que les jeux, la programmation et les activités interactives pour le cerveau pourraient affecter le cerveau au fil du temps. Est-ce que de telles choses pourraient aider à combattre l'apparition de perte de mémoire causée par l'âge ou la démence?
la source
D'où je viens, il y a un vieil adage qui dit quelque chose comme ceci en anglais: "Un imbécile mémorise, un homme intelligent écrit". En gros, peu importe la qualité de votre mémoire, vous oublierez . Vous êtes seulement humain. Et ceci, en conséquence, fait dépendre de la mémoire humaine… enfin, peu fiable. Même si vous pensez vous souvenir de ces noms de tables, pouvez-vous être sûr à 100%? Vous avez besoin de quelques secondes pour rechercher les noms de table, mais vous pourriez avoir besoin de plusieurs heures, voire de plusieurs jours, pour localiser les bogues causés par une faute de frappe.
En conclusion, non, c'est une exigence ridicule, en particulier pour les grands projets, qui peuvent contenir des milliers de tables et de classes.
la source
Si vous travaillez sur quelque chose sur lequel vous travaillez et qu'il s'agit d'une tâche à long terme, alors vous devriez travailler pour apprendre et être capable de vous souvenir de divers noms de tables et de colonnes, de classes, de variables et de méthodes. C’est quelque chose qui passera par le temps lorsque vous travaillerez avec eux. Vous ne les apprendrez pas tous du jour au lendemain, mais vous devez vous efforcer d'en savoir le plus possible sur le système sur lequel vous travaillez. En outre, dans un grand système, il est impossible de tout mémoriser, mais il n'y a aucune raison de ne pas apprendre et de ne pas oublier autant que possible.
Avoir à tout regarder en permanence n’est qu’un coup dur pour la productivité - si vous travaillez sur une tâche et que vous devez vous arrêter et regarder les choses toutes les quelques minutes, vous perdez en concentration. Utilisez les outils appropriés pour vous aider et apprenez / mémorisez ce que vous pouvez. Cela va grandement améliorer votre productivité.
la source
Est-il utile de mémoriser les noms de classe exacts? Je ne pense pas.
Est-il utile de connaître le type de termes utilisés par votre projet dans les noms de classe afin de pouvoir les rechercher plus rapidement? Absolument.
la source
Je ne suis pas d'accord pour que les noms de table soient mémorisés, mais ils doivent être faciles à deviner. Pour le rendre facile à deviner, soyez cohérent. De cette façon, vous ne vous demanderez pas "Hmm .. est-ce que la table de foo est au pluriel ou au singulier? Est-ce que la clé primaire est ID ou RID ou FooRID?"
la source
Je ne sais pas comment vous pouvez interroger une base de données à tout moment sans connaître les noms de tables principaux et les noms de colonnes critiques (mais certainement pas tout). Je connais les personnes qui connaissent ces informations sans avoir à les comprendre à chaque fois, ont plus de valeur pour l'organisation et deviennent des personnes "à consulter" lorsque les autres sont bloqués.
Je constate que souvent, lorsque les gens ne commencent pas à apprendre ce genre de choses, ils commettent des erreurs dans les requêtes sans s'en rendre compte. Les erreurs que je remarque souvent dans les revues de code sont souvent instantanées, car je comprends la structure de notre base de données, la relation entre les tables et les règles de gestion critiques sans avoir à les rechercher.
Personnellement, je trouve que les personnes qui ne se donnent pas la peine d'apprendre la structure restent souvent au niveau débutant pour interroger cette base de données particulière. Ils ont également tendance à ne pas survivre aux licenciements. Je pense que votre patron essaie de vous faire une faveur pour vous amener à faire plus attention.
la source
Plus que la mémoire puissante, celle qui aide beaucoup est la conception dirigée par le domaine et les conventions simples telles que les noms de table et les noms de classe. Si le propriétaire de votre entreprise vous parle de l'exigence, les termes spécifiques au domaine qu'il utilise doivent figurer dans le code. Dans ce cas, nous n'avons pas à nous rappeler les correspondances entre les termes métier et les noms dans le code. Cette habitude prend du temps à se répandre mais elle est très utile car elle réduit également les erreurs de traduction entre les propriétaires d’entreprise et les développeurs.
Parallèlement à cela, si la durée du projet est très longue, se familiariser avec la base de code sur une période donnée aidera inconsciemment la mémoire.
la source
domain driven design
?