Quais técnicas ajudam a reter o conhecimento de programação? [fechadas]

44

Como você se lembra de coisas relacionadas à programação? Você já teve a sensação de que encontrou o erro que estava enfrentando agora, alguns anos atrás, e poderia jurar que conhecia a causa, mas agora a esqueceu?

Você trabalhou com a análise de string do xsl há algum tempo, mas agora não consegue se lembrar exatamente quais são as funções de string do xsl e precisa começar do zero? Ou talvez você se esqueça de algum recurso do Apache Commons como "filtrar uma coleção por algum predicado" que você certamente usou no passado.

Então como você faz isso? Tentei ter um blog, mas quando desenvolvo aplicativos, nunca encontro tempo para atualizar o blog ou escrever sobre minhas experiências. Além disso, o uso de um wiki é uma coisa agradável, mas achei difícil manter uma separação limpa entre eles, pois muitas vezes eu precisava alterar uma postagem de blog para adicionar novas informações sobre esse tópico. Isso me fez pensar que eu deveria ter colocado esse tópico no wiki em vez de no blog.

Você tem algum sistema que o ajude a se lembrar da sua experiência em programação? Qual é a sua configuração?

Luz brilhante
fonte
82
minha configuração: 1.google 2.página de favoritos 3. esqueça o favorito 4.goto-> 1.
e-MEE
4
Use um Wiki pessoal. Anote cada problema que você resolveu para que você e outras pessoas possam visualizá-lo mais tarde. Faça isso por alguns meses e você terá muitas informações. Eu uso o WikidPad e é muito bom
Ubermensch
2
O Google é fantástico para obter respostas, mas não acho que realmente resolva essa questão sobre técnicas de memória. Claro que é apenas um comentário.
22812 Michael Durrant
4
Meu cérebro é minha CPU e cache. Coloquei coisas no meu cache fazendo isso. O restante do meu conhecimento está em outros lugares, como código fonte antigo, notas e stackoverflow.com.
Distortum 19/03/12
5
@ e-MEE: embora a situação que você descreveu seja frequentemente usada, é uma prática ruim e você não pode confiar nela. É demorado e redundante. Você pode usar esse tempo para a construção de características impressionantes, não reinventar a roda :)
Claudiu Constantin

Respostas:

64

Esquecer as coisas é normal. Não se lembrar de alguns truques que o ajudaram no passado também é normal. Este é o primeiro passo que se deve reconhecer. Depois, existem algumas maneiras pelas quais você pode "armazenar" o conhecimento para revisão posterior:

  • Encontre tempo e blog sobre isso . O futuro - você será muito grato ao presente - você;
  • Trabalhe com pequenas demonstrações e arquive-as de alguma forma. Você certamente percorrerá este arquivo muitas vezes;
  • Faça uso do seu perfil stackexchange . Marque perguntas / problemas / questões / dicas / truques interessantes como favoritos para uma investigação mais aprofundada;
  • Continue fazendo , continue programando. Quanto mais você usa uma certa parte de uma estrutura, mais se familiariza com ela e mais se lembra.
Claudiu Constantin
fonte
5
+1 na parte de "continuar fazendo", mais ou menos como atualizar o conhecimento.
31712
Ponto 1 me lembra de um episódio de The Office ...
JBRWilkinson
Registrei-me aqui apenas para votar sua resposta. Perfeito
Martin.
3
+1 para o valor de um log / diário. O registro melhora o sucesso de dietas, finanças, condicionamento físico, quase tudo ... pessoas que não dedicam tempo para escrever um registro acham que o benefício de um registro é procurar algo, mas o valor real é forçar você a pensar em eventos passados ​​recentes, considere criticamente esses eventos e os transforme em uma história. Esse processo ajuda a memória e faz com que o escritor pense no futuro. O benefício de um log para a maioria, então, não está em lê-lo após o fato, mas no valor pessoal e real durante sua criação.
Quaternion
O blog é o melhor. Estou mantendo um blog com algumas coisas que faço - algumas postagens sobre problemas que encontro (e raramente sobre coisas que gosto ou acho interessantes). Dessa forma, quando encontro algum problema (como instalo esta biblioteca aqui novamente?), Vou para o meu blog e continuo. Funciona como um encanto, mais pode realmente ajudar alguém um dia.
MatthewRock
20

Minha chave é

Variedade


Repetição. Uma vez pode ser passageiro. Ver a centésima ocorrência faz a diferença!

Memória pelos dedos . Lembro-me muito melhor do código quando eu o digitei algumas vezes.

Biblioteca de códigos - Mantenha um estoque pessoal de códigos e truques que você usou e viu.

Centralização. Eu mantenho 1 arquivo com todos os meus nomes de usuário (centenas) em 1 pc. Eu aplico segurança a ele.

Disciplina - você mencionou não ter tempo / fazer um esforço para atualizar seu próprio blog, etc. Em que você apenas precisa trabalhar mais e garantir que o faça.

Aceitação - habilidades e técnicas e coisas que você aprendeu na semana da moça serão renovadas. Alguns dos itens que você diz há 3 anos serão difíceis de lembrar. Isso é normal, pois o cérebro abre espaço para mais.

Múltiplos sentidos - às vezes eu uso mnemônicos, às vezes eu mostro uma imagem com os principais conceitos desenhados de maneiras distintas. Eu leio, ouço podcasts, assisto a vídeos, uso cores nos editores. Quanto mais sentido eu usar, melhor.

Mnemônicos , por exemplo, ordem de borda css Tarball (TaRBalL) TopRightBottomLeft. Também uso cores e formas para lembrar palavras e temas. Muitas vezes, quanto mais bizarro, mais memorável!

Uso continuado - Esse é o efeito 'use-o ou perca-o'. Todo o conhecimento desaparece com o tempo. Time ++ Fade ++

Rede Stack Exchange - Estou usando o Stack Overflow em várias áreas para tentar manter o máximo de habilidades e técnicas diferentes 'atualizadas' e 'lembradas', mesmo que não as esteja usando no meu trabalho / projeto atual.

Dropbox - mantenho pequenos arquivos comuns com itens relacionados à memória

Livros - ainda gosto do tolo e do sentimento dos livros físicos. Também tenho vários livros e outros livros técnicos on-line aos quais posso me referir em qualquer lugar. Obviamente, minha biblioteca técnica pode ser acessada em qualquer lugar quando for digital, o que é enorme.

O efeito do Google - nenhuma lista de itens seria realmente completa sem mencionar isso. É mais sobre o que você não precisa se lembrar - porque você pode pesquisar e encontrar no Google. Essa é uma consideração importante também. À medida que mais pessoas se tornam mais hábeis nessa maneira de obter conhecimento, a necessidade de realmente memorizar qualquer fato está caindo. No entanto, isso também está 'elevando a fasquia' para os profissionais do conhecimento que estão descobrindo cada vez mais que um profundo entendimento conceitual é necessário para o desempenho no ambiente atual. Claro que para os CME's !

Meu próprio blog

Meu próprio site de favoritos .

  • Como mantenho meu blog e meus favoritos atualizados? Bem, no final das contas, eu acho que é disciplina e astúcia, ou seja, sim, há uma certa dedicação necessária para isso. No entanto, se você estudou e pagou US $ 100.000 (ou até US $ 10.000) ou é autodidata, conhece o significado de dedicação e persistência. Isto não é diferente. A astúcia, ou "fator bacana", é que, quando você vê um site legal com um tutorial ou uma técnica legal, ou qualquer outra coisa, ou se supera um problema difícil e espinhoso, fica "ei, isso é bacana!" - então, quando sentir isso (ou qualquer que seja o slogan que você use), agora associe isso a "Devo escrever um blog ou gravar esse marcador". Há uma boa chance de você não estar no PC, atualizando seu blog naquele momento, então envie um e-mail, texto ou correio de voz ou uma nova tarefa em sua lista de tarefas - o que for melhor para você- para se lembrar de fazê-lo! Por exemplo, meu telefone Android tem um aplicativo de tarefas que é útil para isso.
Michael Durrant
fonte
Obrigado pela sua resposta atenciosa. Ele continua disciplinado sobre a atualização do seu blog? Acho que o problema que tenho é a preguiça ou não posto algo porque acho que os outros não se beneficiariam.
Kyle Hayes
+1 para variedade. Realmente funciona e eu já experimentei isso muitas vezes.
Karthik Sreenivasan
Kyle boa pergunta, eu atualizei minha resposta. No entanto, minha resposta é ainda mais sobre a necessidade de manter-me atualizado, e não sobre como eu permaneço disciplinado. Em algum momento, tudo se resume à motivação pessoal.
Michael Durrant
7

Durante o último ano, o Evernote se tornou um programa que eu não poderia prescindir. Eu copio tudo para o Evernote. Código Snippeds, Screenshoots, dados de contato, histórico de versões e assim por diante. Portanto, não preciso me lembrar de tantos detalhes. Eu só sei que está lá em algum lugar.

A versão básica é gratuita. Então tente!

Holli
fonte
1
Então, o que você faria no dia em que os serviços do evernote estão inoperantes ou não há Internet (porque sua operadora foi bloqueada por exemplo)? Não recomendo confiar na "nuvem" para armazenar importantes conhecimentos.
Mister Smith
Atualmente, estou usando o Evernote, mas se você colocar tudo lá, a seção de tags ficará muito confusa e você começará a usá-lo menos. Se você tiver bons truques sobre isso, ajudaria muito a compartilhar! Obrigado!
Brilhando-luz
@danleadgy, eu concordo com as tags. Eu tive que ser mais seletivo, com o qual realmente não deveria me preocupar.
Kyle Hayes
Depois de fazer essa mesma pergunta no Stack Overflow, comecei a usar o Evernote e funciona muito bem. Além de informações de programação, eu armazeno processos como. Por exemplo, como configurar minha máquina de desenvolvimento do zero (instalar o SO, instalar o software, configurar). Isso tem sido extremamente útil. Além disso, você pode acessar as mesmas informações de qualquer dispositivo. Assim, você pode ler em um computador ou tablet e trabalhar em outro.
B Sete
6

Sherlock Holmes disse uma vez algo como "A mente de um homem é como um sótão. Se você a encher de trivialidades, não há espaço para algo realmente importante. Por todos esses detalhes, temos a enciclopédia".

A menos que você tenha uma memória fotográfica e os problemas nela, você não se lembrará de tudo. Crie um conjunto de recursos, uma biblioteca pessoal de informações e técnicas de solução de problemas.

Você pode não se lembrar da resposta e nem lembrar onde a resposta está escrita. Mas, se você souber como resolver o problema, poderá sempre encontrar a resposta novamente. Felizmente, isso incluirá a documentação da sua solução de maneira pesquisável e reutilizável.

Spencer Rathbun
fonte
4

Bem, talvez meu caso seja particular ... mas: tenho todos os fragmentos de software que escrevi desde 76 no meu laptop, programas, scripts, configurações etc. Então, com o tempo (devo confessar), minha carga de memória mudou de lembrar ' coisas "para lembrar metadados sobre coisas. Claro, muito disso não é mais relevante, mas acho que a parte mais difícil é ter as idéias, e não implementá-las. Portanto, os metadados são basicamente um índice de quais 'idéias' podem ser encontradas onde.

Hoje em dia, quando chego a um novo território, geralmente encontro uma grande base de código que usa os novos aspectos e passo algum tempo de qualidade com a base de código. Eu estudo, tento fazê-lo funcionar em um ambiente de teste e, em seguida, tento aumentá-lo para que eu possa acessar novas ferramentas (bibliotecas, linguagens, tecnologia de construção, etc ...). Esse processo me permite mapear meus padrões, idéias, para um exemplo. Posso levar algum tempo para fazer alguns desses mini-projetos e escolher como referência aquele com o qual me sinto mais em casa. Feito isso, acabarei reutilizando essa base de código para criar o esqueleto de meus próprios aplicativos.

Quando os arquivos pessoais falham, eu chego à rede, à qual adicionei o SO recentemente. Eu vou ter um sucesso em 'novos' conceitos (novos do ponto de vista pessoal) no SO antes do gaagle. De fato, raramente (hoje em dia) volto ao gaagle. A primeira resposta relevante é tipicamente um link para algumas perguntas interessantes sobre SO.

YvesLeBorg
fonte
4

Como outros, eu acompanho as coisas usando marcadores.

Eu costumava usar o Delicious, mas agora mudei para o Pinboard.

Mas eu não uso dessa maneira tanto quanto costumava. Parece que todo problema de programação que encontro é uma pequena pesquisa no Google. E, no último ano, comecei a usar o Stackoverflow como um dos meus termos de pesquisa!

Sempre que me deparo com uma pergunta SO para uma questão particularmente difícil, eu a escolhi para acompanhar, de modo que essa é outra forma de bookmarking.

ozz
fonte
Também usei deliciosas no passado, mas elas fizeram uma bagunça nesse projeto. Agora uso o Diigo para marcadores e destaques. Vou ter que verificar o quadro de anúncios.
JMQ
3

"Lembre-se da pintura, esqueça os traços finos"

É absolutamente normal não lembrar os detalhes. No entanto, o que você deve se preocupar é esquecer as principais coisas. Se você corrigiu um bug, deveria ter pelo menos uma idéia conceitual sobre qual era o problema.

Marcadores, blogs e cadernos são ótimos para guardar esses detalhes. Mas, no final das contas, você ainda precisa se lembrar da "imagem" maior. Caso contrário, redescobrir esses detalhes "mais refinados" será muito mais difícil.

Noite escura
fonte
2

Mantenha suas próprias anotações, expressando as coisas com suas próprias palavras. Seu público-alvo é você , mais ninguém, para que você possa ser conciso. (No entanto, uma postagem no blog precisa ser clara e bem editada, o que é demorado.) Se você encontrar bons artigos / postagens de blog, grave o URL, mas ainda explique as coisas com suas próprias palavras.

Eu mantenho uma grande hierarquia de arquivos pequenos, curtos e de tópico único. Os arquivos são principalmente de formato livre, mas estou mudando para o Markdown. Pesquise usando grep / find. Eu mantenho a pasta no meu DropBox, para que esteja sempre disponível para mim.

Noach
fonte
Eu costumava fazer isso como arquivos também, mas achei o Evernote um bom repositório para esse tipo de dados.
Kyle Hayes
1

Todo mundo pode ter seu próprio estilo ao qual está acostumado. Para mim, separo o conhecimento em categorias:

  • Livros

  • Artigos

  • Coleções (coisas que eu acho interessantes limitadas a poucos parágrafos - na verdade eu copio as informações e às vezes anoto a fonte) - Por exemplo: desenvolvimento de OOD, genéricos, ... etc.

  • Código reutilizável (texto e trechos) - Cada um em um arquivo separado em uma boa organização em árvore. Por exemplo, o nó DataValidation conteria muitas técnicas para validar itens de dados diferentes, cada um em um arquivo separado

  • Projetos completos

  • Tutoriais em vídeo pessoal (às vezes eu gravo vídeos de como fazer coisas quando há etapas demais).

  • Ligações

Organizo o exposto por assunto, com cada assunto em uma estrutura de árvore apropriada.

Algumas vezes há coisas sobrepostas, mas consigo encontrar o que quero.

Além disso, usando o Google Desktop, encontrar texto ou arquivos é muito rápido.

NoChance
fonte
Seria interessante ver sua árvore se você estivesse disposto a compartilhar.
Kyle Hayes
@KyleHayes, que pode ser capaz de fornecer uma amostra
NoChance
0

Eu uso o OneNote. Eu tenho muitas linguagens de programação diferentes com as quais trabalho, então tenho seções diferentes para cada linguagem e guias diferentes para diferentes tipos de notas.

Agora, estou começando a usar o Stack Exchange também.

Susan Kennedy
fonte
-1

Você deve estar equilibrado entre memória e "armazenamento". Se você confiar demais ou em coisas erradas na memória, == problema, se você confiar demais em armazenar tudo == inútil.

Minhas regras:

-Não exagere! escreva as coisas importantes, mesmo que o tamanho da fonte varie no seu documento :)

-Não se orginize. Convença-se de que organizar seus pensamentos não precisa de uma estrutura de árvore de 10 níveis

-Passe o tempo em encontrar o que gravar. você pode encontrar 5 soluções para o mesmo problema. no momento em que você escreve tudo, você solta. Anote 1-2 que REALMENTE o ajudarão. NÃO permita que você não tenha tempo para isso agora. É bastante estranho, mas se aplica: "Passou um tempo para conseguir tempo"

Eu não gosto de colocar essas coisas em algum "produto" porque quero ter certeza de que ela existirá 20 anos depois e não quero migrar para várias plataformas.

Então o que fazer?

Tudo o que você pode obter as informações com o mínimo esforço.

Por exemplo, instale o phpBB e escreva para você mesmo. você obtém a funcionalidade de pesquisa pronta para uso, é gratuita e pode extrair dados com instruções SQL simples e colocá-las em arquivos. você pode ter um cronjob exportando seus pensamentos em arquivos para arquivamento. Portanto, se você precisar colocá-los em outro sistema, estará pronto com o mínimo de esforço.

Outro problema é que ninguém garante que os links encontrados funcionem amanhã (imagine 5 anos depois). Portanto, tente duplicar as informações:

-Faça o download do vídeo com alguma extensão do navegador e anexe-o, por exemplo, ao seu post do phpBB (ou wordpress ou o que for).

Admita: você é um programador e cria aplicativos para outras pessoas. Faça um simples para si mesmo e torne-se o seu melhor cliente.

meu 2c

e4rthdog
fonte
-1

Resposta curta:

Prática, prática, prática.

Resposta não tão curta:

Como você se lembra de andar? Como você se lembra de como falar? Essas habilidades não são exatamente as mesmas e não exigem um conhecimento enciclopédico (aparentemente para iniciantes, pelo menos), mas você está usando a mesma coisa: memória.

Embora eu admita que, para iniciantes, a programação possa parecer um assunto incrivelmente grande quando você começa a estudá-lo, torna-se como qualquer outro assunto depois que você aprende o básico.

Assim que eu descobri isso, comecei a dividir as coisas em pedaços cada vez menores (minha própria versão pessoal da abstração). Dessa forma, algo que parecia difícil de lembrar se torna mais fácil (pelo menos comigo).

Escrever as coisas ajuda mais do que você imagina (tendo trabalhado em Educação, sei que isso pode ter efeitos positivos maciços na retenção). Especialmente se você puder colocá-lo com suas próprias palavras - em vez de apenas copiá-lo literalmente. Se você pode parafrasear ou equiparar a algo que você já conhece, melhor ainda.

Por exemplo: Em C #, os objetos String são imutáveis. Isso significa que sempre que digo ao meu programa para alterar o conteúdo de um objeto de string, o que realmente acontece é que a string original é destruída (tecnicamente, ela é colocada no nível mais baixo do coletor de lixo). Exatamente como quando um artista comete um erro ao criar uma escultura em mármore - ela não pode ser alterada, sendo destruída e criada uma nova.

Não é um ótimo exemplo, mas mostra o básico do que estou falando.

A documentação de qualidade também ajuda. Algo que meu professor de programação 101 me disse uma vez ficou comigo:

Faça seus comentários detalhados. Não ao ponto de estupidez, mas você precisa ser capaz de escrever comentários que um não programador possa entender. Dessa forma, você sabe que alguém do projeto pode entendê-lo perfeitamente. Imagine que você passaria meses implementando um sistema, mas estava envolvido em algum tipo de acidente horrível no caminho para o trabalho. Outra pessoa receberá seu trabalho - especialmente se estiver próximo da hora da crise - e se não conseguirem descobrir o que seu código está fazendo, a produção será interrompida.

Bons livros também são um excelente recurso. Um tutor diferente me disse uma vez que, se um livro não tem um índice (e há muitos deles por aí que não têm), não vale a pena comprar.

O Google pode ser um recurso incrível, mas esteja ciente dos codificadores de copiar e colar. Fique longe de sites que oferecem apenas um bloco de código sem explicações. Prefiro ler um artigo inteiro sobre pequenos blocos de código, assim você sai sabendo exatamente o que o bloco de código deve fazer, como ele faz e por que o programador escreveu dessa maneira.

espero que ajude

Jamie Taylor
fonte