Um desenvolvedor deve ser forçado a memorizar detalhes? [fechadas]

33

Muitas vezes esqueço as coisas da minha inscrição. Não memorizo ​​os nomes das tabelas ou o que uma consulta fez e procuro o que quero. Meu líder de equipe me disse que eu deveria memorizar os nomes das tabelas que eu uso.

O desenvolvedor é obrigado a memorizar os nomes das tabelas no banco de dados, os nomes das classes, etc.? E se a resposta for "Sim, o tempo todo", o que devo fazer para lembrar essas coisas?

Anyname Donotcare
fonte
27
Eu gostaria de poder esquecê-los.
Jeffo
6
Diga a ele que ele deve escrever com a mão esquerda (o que é extremamente fácil para alguns e bastante difícil para outros).
Job
4
"Forçado a memorizar nomes de tabelas" ??? WTF !? “Todos devem aprender esses dez mil nomes de colunas até o final da semana! Então haverá um teste; quem não conseguir 100% será alimentado com força primeiro para o meu orgulho particular de leões raivosos !!! Bwahahahahaa !!!!! ”
Donal Fellows,
4
Quando eu era estudante de cooperativa, trabalhei com um cara que exigia exatamente isso de mim, me disse que estava "perdendo tempo" quando procurei as coisas e disse "você disse que estava estudando isso!" quando não conseguia recitar os nomes das tabelas (e seu conteúdo) de memória e usei minha falta de compromisso em memorizar os nomes das tabelas como uma desculpa para parar de me orientar por completo. Eu o agredi no meu relatório cooperativo.
user16764
2
Não memorize, memorize.
tylermac

Respostas:

63

Você não precisa memorizar explicitamente essas coisas. Com isso, quero dizer sentar e aprendê-las como faria com uma lista de palavras para um teste de ortografia. Na primeira instância, os nomes devem ser memoráveis e detectáveis, para que você possa encontrá-los novamente sem muito esforço.

Você também deve ter acesso a ferramentas que o ajudam aqui com o preenchimento automático e similares.

Em um grande sistema de mais de 100 tabelas, não é possível que você realmente se lembre de todos os nomes de tabelas e de colunas, no entanto, com nomes memoráveis ​​e detectáveis ​​e uso regular, você deve se lembrar dos detalhes mais importantes e daqueles que usa todos os dias. dia.

ChrisF
fonte
6
Tendo trabalhado em um aplicativo com tabelas 4k, posso atestar a utilidade deste conselho. A memorização não ajuda, as convenções do projeto ajudam (especialmente quando são aplicadas; e se não, você precisa confiar na sua memória).
Vineet Reynolds
1
Para ajudar na descoberta, crie folhas de dicas e / ou diagramas (modelo) do que você precisa. Dessa forma, você apenas terá que olhar para o seu documento ou documento / imagem e poderá procurar os nomes de tabelas e colunas de que precisa.
Kissaki
34

Einstein disse "nunca memorize o que você pode procurar [nos livros]", e eu concordo plenamente.

Use sua memória para coisas abstratas (técnicas e princípios de desenvolvimento), não para fatos que você pode encontrar quando precisar deles.

Gato feliz
fonte
sim ... não memorize, ele virá quando você usar as informações. No entanto, tenha sempre os documentos de referência para isso à mão.
Newtopian
17

É embaraçoso admitir - estou usando C há quase 30 anos, mas nunca consigo me lembrar de como declarar indicadores de função - sempre preciso sair da K&R para verificar a sintaxe.

Ainda mais embaraçoso, eu tenho que pensar muito sobre como o typedef funciona - é:

 typedef foo int;

ou

 typedef int foo;

Estes são meus pontos cegos pessoais. Eu não me preocuparia se você tiver outros semelhantes.

Neil Butterworth
fonte
2
+1: comecei a programar C em 1985 e ainda tenho que procurar como declarar ponteiros de função. Fiz uma facada em um outro dia e funcionou, e fiquei bastante satisfeito comigo mesmo. (Eu me lembro como fazer typedefs ... :-)
Bob Murphy
2
Fico feliz que, na linguagem em que trabalho (C #), o equivalente a ponteiros de função seja realmente analisável por humanos, não apenas pelo compilador.
svick
@ svick Oh, não tenho problemas para ler indicadores de funções, é lembrar como escrevê-los com problemas.
Neil Butterworth
3
Eu deliberadamente não memorizei as tabelas de precedência C ou C ++. Eu os tenho à mão para referência instantânea, se eu precisar deles, e realmente não quero escrever código que confunda alguém que não os memorizou.
David Thornley
Código que depende de regras de precedência não óbvias é código incorreto.
Gort the Robot
9

Os computadores são bons em lembrar exatamente as coisas. Os computadores também são bons em encontrar coisas que lembraram anteriormente.

Portanto, a principal habilidade é usar o computador como uma extensão da sua memória. Escreva código limpo, documentos, aprenda a usar as ferramentas de pesquisa com eficiência, configure seu ambiente de desenvolvimento para facilitar a localização de coisas etc.

Um bom efeito colateral é que você também facilitará a leitura de seu código por outras pessoas.

tdammers
fonte
5

A memória é importante

Uma memória forte é realmente um dos principais talentos que um desenvolvedor pode ter; na verdade, qualquer um pode ter. É realmente uma coisa especial e invejo e admiro aqueles que são abençoados com ela. Definitivamente, pode ajudar uma pessoa a ser um desenvolvedor, advogado, mecânico mais forte ou (inserir o trabalho de sua escolha aqui).

Quanto deve ser necessário?

Mas não acredito que seja um requisito justo exigir a memorização de todas as coisas. Acredito que você começará a memorizar as coisas como parte natural de fazer as coisas. É por isso que ler um livro sobre um idioma e usá-lo em um ambiente de produção não é a mesma coisa. Ao trabalhar diariamente com algo (alguns chamariam isso de "prática"), você começará a tornar algumas coisas uma segunda natureza.

Assim como nos outros pôsteres, acredito que memorizar partes importantes do aplicativo ajuda. No entanto, não tenho certeza de que investir em memorizar tudo vale a pena o investimento quando você pode tirar proveito de recursos como o intellisense, que é cada vez mais comum em ferramentas modernas.

Como você pode melhorar?

Não sou especialista em memória, mas alguns acreditam que você pode realmente melhorar a memória por meio de exercícios mentais, como jogos cerebrais (palavras cruzadas, sudoku, quebra-cabeças etc.). A teoria é que seu cérebro é como um músculo e, se você o usar de maneiras diferentes e exercitá-lo, poderá fortalecê-lo.

Seria interessante ver estudos sobre como coisas como jogos cerebrais, programação e atividades interativas afetariam o cérebro ao longo do tempo. Essas coisas poderiam ajudar a combater o início da perda de memória provocada pela idade ou demência?

Bernard Dy
fonte
5

De onde eu venho, há um velho ditado que é algo como isto em inglês: "Um tolo memoriza, um homem inteligente escreve". Basicamente, não importa quão boa seja sua memória, você esquecerá . Você é apenas humano. E isso, como conseqüência, torna a confiança na memória humana ... bem, não confiável. Mesmo que você se lembre dos nomes das tabelas, pode ter 100% de certeza? Você precisa de apenas alguns segundos para procurar nomes de tabelas, mas pode precisar de horas ou até dias para rastrear erros causados ​​por erros de ortografia.

Como conclusão, não, é um requisito ridículo, especialmente em projetos grandes, que podem ter milhares de tabelas e classes.

Davor Ždralo
fonte
3

Se estiver em algo em que você está trabalhando e for uma tarefa de longo prazo, sim, você deve trabalhar para aprender e ser capaz de lembrar vários nomes de tabelas e colunas, classes, variáveis ​​e métodos. Isso é algo que ocorrerá com o tempo à medida que você trabalha com eles. Você não aprenderá todas elas da noite para o dia, mas deve se esforçar para saber o máximo possível sobre o sistema em que está trabalhando. Além disso, em um sistema grande, não há como você memorizar tudo, mas não há razão para não aprender e lembrar o máximo que puder.

Ter que procurar tudo o tempo todo é apenas um golpe na produtividade - se você está trabalhando em uma tarefa e precisa parar e procurar as coisas a cada poucos minutos, isso é uma quebra de concentração. Use as ferramentas apropriadas para ajudá-lo e aprenda / memorize o que puder. Isso melhorará muito sua produtividade.

Thomas Owens
fonte
1
Discordo totalmente de lembrar detalhes. Você deve se lembrar de conceitos e funções. Ou seja, saiba o que seu sistema pode fazer e saiba como descobrir o nome exato do método / variável / coluna.
edA-qa mort-ora-y
1
Eu não esperaria que você soubesse tudo, mas esperaria que qualquer pessoa que trabalhasse em um subsistema específico conhecesse esse subsistema por dentro e por fora. Eu consideraria esse conhecimento preocupado com o seu trabalho.
Thomas Owens
3

Existe algum motivo para memorizar nomes exatos de classe? Acho que não.

Existe algum sentido em saber que tipo de termos o seu projeto usa nos nomes das classes, para que você possa procurá-los mais rapidamente? Definitivamente.

Scott McIntyre
fonte
2

Não concordo que os nomes das tabelas sejam memorizados, mas devem ser fáceis de adivinhar. Para facilitar a adivinhação, seja consistente. Dessa forma, você não estará se perguntando "Hmm .. a tabela foo é plural ou singular? A chave primária é ID ou RID ou FooRID?"

Earlz
fonte
2

Não sei como você pode consultar um banco de dados a qualquer momento, sem conhecer os principais nomes de tabelas e nomes críticos de colunas (mas certamente nem tudo). Conheço as pessoas que conhecem essas coisas sem ter que descobrir isso a cada vez que se tornam mais valiosas para a organização e se tornam as pessoas que "vão para" quando outras pessoas ficam presas.

Acho que, muitas vezes, quando as pessoas não começam a aprender essas coisas, elas cometem erros nas consultas sem perceber. Erros Eu frequentemente identifico instantaneamente nas revisões de código porque compreendo nossa estrutura de banco de dados e como as tabelas se relacionam entre si e quais são as regras críticas de negócios sem precisar consultá-las.

Pessoalmente, acho que as pessoas que não se preocupam em aprender a estrutura geralmente ficam no nível iniciante ao consultar esse banco de dados específico. Eles também tendem a não sobreviver a demissões. Eu acho que seu chefe está tentando fazer um favor para você prestar mais atenção.

HLGEM
fonte
1

Mais do que a memória forte, a que ajuda muito é o design orientado a domínio e segue convenções fáceis, como nomes de tabelas e nomes de classes, para serem iguais. Se o proprietário da sua empresa falar com você sobre o requisito, os termos específicos do domínio usados ​​por ele deverão constar no código. Nesse caso, não precisamos lembrar os mapeamentos entre termos e nomes comerciais no código. Esse hábito demora um pouco, mas é muito útil, pois também reduz erros de tradução de um lado para o outro entre os proprietários e desenvolvedores da empresa.

Junto com isso, se a duração do projeto for muito longa, ficar confortável com a base de código por um período de tempo ajudará inconscientemente a memória.

Vinod R
fonte
com licença, você poderia explicar qual é o significado domain driven design?
Anyname Donotcare
1
@just_name Comecei com este martinfowler.com/bliki/EvansClassification.html
Vinod R